第 1 章 - 引言
86EVA (EVA,基於 EtherCAT 的虛擬 Arduino)是一款圖形化 EtherCAT 配置工具,它利用了 86Duino IDE 中的 ECAT 庫。
86Duino 開發套件之一是 QEC 主站,其功能包括:
- 自動產生 Arduino 語言(透過基於 EtherCAT 的虛擬 Arduino)
- 自動掃描網路設備
- EtherCAT 主站/主站設定:
- 設定主對象名稱
- 設定週期時間
- 設定冗餘選項
- 選用 ENI 文件
- EtherCAT 從站/輔助設定:
- 設定從站物件名稱
- 設定從站別名
- 可設定從站 I/O 映射
- 顯示輔助設備訊息
- 查看內部資訊包括:
- 電壓(伏特)
- 電流(安培)
- 溫度(℃)
86Duino IDE ECAT Library 是一個 Arduino 開發環境,具有實時作業系統 (RTOS) 庫,可與專用 EtherCAT 主設備進行通訊。
它是專用的EtherCAT主站通訊層解決方案,可以與EtherCAT從站設備進行即時通訊。 86Duino IDE 提供了豐富的 Arduino 應用開發設定檔和介面(API)用於程式設計操作。
第 2 章 – 流程
86EVA 為使用者提供低程式碼接口,透過簡單的按鍵和視覺化演示來開發 EtherCAT 網路匯流排組。
開啟86EVA → 選擇連接的COM口 → 尋找掃描EtherCAT網路的裝置 → EtherCAT裝置的個人化設定 → 產生Arduino風格的程式碼 → 上傳程式碼
第2.1章:打開86EVA
方法一:點選右上角的快捷按鈕(以紅色突出顯示)。
方法2:點選「Tools」選單中的86EVA (EtherCAT) Configurator 按鈕(以紅色反白)。
第 2.2 章:選擇連接的 COM 連接埠
開啟86EVA後,預設自動選擇所連接的QEC主站的串口。 在此範例中,COM 連接埠為 COM13。
如果您連接了多個QEC主站,則需要按一下「選擇」旁的下拉式功能表(以紅色反白),然後選擇目前QEC主站使用的COM連接埠。
如果您是第一次使用COM口,不確定QEC主站COM口的位置,請參考此連結了解如何設定的說明。
第2.3章:掃描EtherCAT網路上的設備
選擇正確的 COM 連接埠位置後,請按一下「連線」按鈕(以紅色反白顯示)。
點選「連線」按鈕後,將出現掃描畫面。
掃描過程完成後,您將看到一台 QEC 主站以及目前連接到 EtherCAT 網路的所有 EtherCAT 從站裝置。
注意:在 86EVA 中,掃描過程將自動識別 DMP QEC 系列的 EtherCAT 從站裝置並顯示其影像和相關設定。 如果連接第三方EtherCAT從站設備,會出現未知的EtherCAT從站模組資訊。 詳細內容請參閱第 3.2 章。
第 2.4 章:EtherCAT 設備的個人化設置
使用者可以點選EtherCAT設備的產品圖片進入該設備的設定頁面。
EtherCAT 主站
點擊QEC master的圖片後,您可以透過該頁面進行個人化設定。 例如,您可以設定物件名稱、選擇 EtherCAT 週期時間、選擇冗餘選項和選擇 ENI 檔案功能。
如下圖所示,使用 QEC-M-01。
詳細內容請參閱第 3.1 章。
EtherCAT 從站
在EtherCAT從站設備的設定中,可以找到所連接的QEC EtherCAT從站設備的資訊如:供應商ID(Vendor ID)、產品識別號碼(Product Code)、內部電壓、電流、溫度等。也可以設定:物件名稱、別名位址和I/O 映射。
QEC EtherCAT 從站
QEC系列的EtherCAT從站設備都會有完整的產品圖片,使用者可以點選QEC EtherCAT從站設備圖片進入QEC從站。
QEC 從站模組的設定頁。
進入設定頁面後,使用者首先會看到 EtherCAT 從站設備的信息,如供應商 ID、產品代碼、可設定物件名稱、別名位址(別名位址詳細資料請參閱附錄 1)。
然後是來自從站設備的即時訊息,例如電壓、電流、溫度等(這有助於追蹤碳足跡)。
最後是可設定的虛擬Arduino引腳映射(虛擬Arduino概念介紹見附錄2)。
有關 QEC 從機設定的詳細信息,請參閱第 3.2.1 章。
非 QEC EtherCAT 從站
當86EVA掃描並偵測到非QEC EtherCAT從站設備時,會顯示未知的設備影像,並標有「不支援」標籤。
點擊未知 EtherCAT 從站裝置的影像後,您可以存取有關該特定裝置的資訊。
詳細內容請參閱第 3.2.2 章。
第 2.5 章:產生 Arduino 程式碼
配置完所有設定後,按一下「程式碼產生」按鈕(以紅色突出顯示)。
點擊後,將出現結果和完成螢幕,按一下「確定」退出程式; 如果您不按一下“確定”,您將在 10 秒後離開該程式。
完成後,86EVA會自動產生設定檔和Arduino程式碼,並在86Duino IDE.cpp中產生兩個程式檔案Myeva和Myeva.h(以紅色突出顯示),以便用戶存取並添加到自己的程式中。
第2.6章:上傳程式碼
請注意,產生的設定檔和使用者程式將使用「上傳」按鈕一起燒錄到 QEC 主站中。 必須按下“上傳”按鈕才能完成配置過程; 否則,86EVA 中所做的配置設定將被視為無效。
上傳之前,請先驗證「Board」和「Port」設定是否正確(以紅色反白)。
點擊“上傳”按鈕(以紅色突出顯示)上傳程式碼。
上傳完成。
上傳完成後,使用者可以重新開啟86EVA來掃描從設備,檢查設備是否按照先前的配置設定運作。
更詳細的EtherCAT圖形化開發流程
86Duino IDE為開發者提供了完整的低程式碼開發平台,讓使用者可以透過86EVA配置EtherCAT網路參數。
內建HMI編輯器(86HMI)是一款HMI開發軟體,結合積木式程式設計工具ArduBlock,讓使用者可以透過少量程式設計快速開發EtherCAT系統。
進一步的配置請參考其他工具的使用手冊。
第 3 章 – EtherCAT 設備配置
在設定過程中,會提到 EtherCAT 設備的個人化。 我們可以將EtherCAT設備分為:QEC主站和EtherCAT從站。
第 3.1 章:QEC 主設置
86Duino IDE 開發環境專為 QEC Master 系列設計,包括 QEC-M-01、QEC-M-043T、QEC-M-070T、QEC-M-090T 和 QEC-M-150T。 在86EVA中連接並完成掃描過程後,使用者可以以圖形形式查看EtherCAT Master的資訊(以紅色突出顯示)以及產品圖像。
- QEC-M-01:
- QEC-M-043T:
常規設定:
您可以設定 EtherCAT 主站的物件名稱、套用 BIOS 設定、啟用 EtherCAT 電纜冗餘選項、設定 EtherCAT 循環時間,並根據需要選擇 ENI 檔案。
物件名稱
設定 EtherCAT 主站的物件名稱(以紅色突出顯示)。 配置完成後,當翻譯 Arduino 程式碼時,此設定將套用於程式碼中的物件名稱。
應用 BIOS 設定
選擇是否優先考慮 EtherCAT 主站 BIOS 中的預先配置設定(以紅色突出顯示)。
注意:選擇此選項將優先考慮 QEC Master 的 BIOS 中的預先配置設定。
啟用冗餘
選擇是否為 EtherCAT 主站啟用冗餘(以紅色突出顯示)。
設定 EtherCAT 主站週期時間
設定 EtherCAT 主站週期時間(以紅色突出顯示),週期時間選項為 125us、250us、500us、1ms、2ms 和 4ms。
如果使用此功能選單設定EtherCAT主站的週期時間,請勿選擇Apply BIOS Settings,否則將使用BIOS預設。
選擇 ENI 文件
使用者可以使用此功能選擇現有的 ENI 檔案(以紅色突出顯示)。 上傳程式碼時,所選的ENI檔案將自動上傳並套用到程式中。
虛擬Arduino:
您可以為虛擬 Arduino 配置最大數位引腳數 (Max Digital Pins)、連接埠數 (Max Serial Ports) 和 MPG 數 (Max MPG)。
注意:所有未列出的值均預設為 4。
最大數位引腳
在下拉式選單中設定最大數字引腳數,選項包括 32、64、128 和 256 個虛擬引腳(以紅色突出顯示)。
最大串口數
在下拉式選單中設定最大序列埠數,選項有 4、8、16、32 個虛擬連接埠(以紅色突出顯示)。
最多 MPG 端口
在下拉式選單中設定 MPG 連接埠的最大數量,選項有 4、8、16、32 個虛擬 MPG(以紅色突出顯示)。
第 3.2 章:EtherCAT 從站資訊與設置
在 EtherCAT 從站設備上方(以紅色突出顯示),指示了產品名稱以及連接的 EtherCAT 從站設備的順序。
在 EtherCAT 從站設備(以紅色突出顯示)下方,有別名位址和產品類型(如果是非 QEC 從站,將顯示供應商識別碼)。
第 3.2.1 章:QEC EtherCAT 從站
點擊左下角「查看」按鈕(紅色突出顯示),可查看即時監控數據,包括電壓、電流、溫度(黃色突出顯示)。
再次點選「檢視」可切換回「別名位址」概述。
QEC-RXXD系列(EtherCAT從站數位I/O模組)
QEC-RXXD 系列是 EtherCAT 從站數位 I/O 模組,具有 16 個數位通道,可配置為數位輸入或輸出。
點選進入QEC從設備後,會顯示產品名稱。
以下功能說明將以 QEC-R00DC4D-N 為例。
常規設定
您可以設定 QEC 從設備的物件名稱和別名位址,以及取得 QEC 從設備的供應商 ID 和產品代碼。
- 物件名稱:
設定 QEC 從裝置的物件名稱(以紅色反白)。 設定完成後,在實作 Arduino 程式碼時,此配置將套用於程式碼的物件名稱。
- 別名位址:
別名位址儲存在 EEPROM 中,可以透過從站裝置應用程式進行變更(配置站別名位址)。
設定 QEC 從站的別名位址(以紅色反白)。
設定別名位址後,程式將自動透過此編號識別 QEC 從機。 當使用者的QEC從設備因係統需求在EtherCAT網路中發生變化時,程式會自動適應,無需設定新的配置; 如果不設定別名位址,程式將不會自動適應新配置。 預設從站別名位址為 0,請設定 1 ~ 65535 之間的數字。
註:適應新配置是指切換從站位置(從站設備總數不增加或減少)。 如果新增或刪除設備,則需要重新配置程式。
86EVA 掃描從機裝置成功後,會自動讀取從機先前設定的別名位址並顯示在該欄位中。 如果數值輸入過程被取消或中斷,則該欄位將返回先前的值。
按下Set按鈕會將別名位址寫入EtherCAT從站的EEPROM中; 關閉86EVA後,請記得重新啟動EtherCAT設備。
- 供應商 ID:
QEC 從設備的供應商 ID(以紅色突出顯示)。
- 產品代碼:
QEC 從裝置產品識別號碼(以紅色反白)。
設備狀態
在設備狀態中,您將能夠查看即時內部監控數據,包括電壓、電流和溫度(以紅色突出顯示)。
虛擬Arduino
在虛擬Arduino中,您可以設定數位輸入/輸出引腳的數量。
以QEC-R00DC4D-N為例,有12個數位輸入接腳和4個數位輸出接腳。
使用者選擇虛擬引腳編號,最大數量不應超過 QEC 主設定頁面中的最大數字引腳數。
- 數位輸入引腳映射(以紅色突出顯示)
- 數位輸出引腳映射(以紅色突出顯示)
- Digital Input DQ11 pin and Digital Output DQ00 pin settings.
有關虛擬Arduino的詳細信息,請參閱附錄2。
QEC-RXXHU系列(EtherCAT從站閘道控制器(UART + MPG + 鍵盤+LCM))
QEC-RXXHU系列是EtherCAT從站模組,最多可支援2組UART(RS232/RS485)、1組手輪、1個鍵盤和1個LCM顯示器。 QEC-RXXHU產品功能齊全:
- QEC-R00HU5S-N (RS232 + MPG + Keypad + LCM)
- QEC-R00HU9S-N (RS232/485 + MPG + Keypad + LCM)
點選進入QEC從設備後,會呈現產品名稱。 以下功能說明將以 QEC-R00HU9S-N 為例。
常規設定
一般設定功能與QEC-RXXD系列相同。 請參閱QEC-RXXD系列的常規設定。
設備狀態
設備狀態區域與QEC-RXXD系列相同。 請參閱QEC-RXXD系列的設備狀態。
虛擬Arduino
在虛擬 Arduino 中,您可以設定序列埠、MPG 連接埠、LCM 映射、鍵盤映射和蜂鳴器引腳的編號。
以QEC-R00HU9S-N為例,您可以設定2個串列埠,其餘(MPG連接埠、LCM映射、鍵盤映射和蜂鳴器接腳)僅限於1組。
使用者可以選擇虛擬引腳數量,最大數量不會超過QEC Master設定頁面中設定的最大數量(Max Serial Ports和Max MPG Ports)。
- 序列埠映射(以紅色突出顯示),未選擇:
做出選擇後:
- MPG 連接埠對映(以紅色突出顯示),未選擇:
做出選擇後:
- LCM 映射(以紅色突出顯示)和鍵盤映射(以黃色突出顯示),未選擇:
做出選擇後:
- 蜂鳴器映射(以紅色突出顯示),未選擇:
做出選擇後:
有關虛擬Arduino的詳細信息,請參閱附錄2。
第 3.2.2 章:非 QEC EtherCAT 從站
86EVA 中的其他第三方 EtherCAT 從站設備呈現未知的 QEC 從站產品影像。
轉到設定頁面,您將看到“不支援”(以紅色突出顯示)。
常規設定
一般設定功能與QEC-RXXD系列相同。 請參閱QEC-RXXD系列的常規設定。
第 4 章 – 進階設定
在86EVA中,除了常規設定外,還可以在此工具中配置一些進階設定。 本節將介紹如何調整進階設定。
自動設定所有從裝置的別名位址
點擊左下角的「自動」設定按鈕 (以紅色突出顯示)。
將出現「自動設定所有從裝置的別名位址」和「自動設定虛擬 Arduino 的數位引腳對映」按鈕。 使用者可以點擊上方按鈕(以紅色反白)自動設定目前 EtherCAT 網路上的別名位址。
點選「自動設定所有從站裝置的別名位址」按鈕後,如果某個EtherCAT 裝置之前沒有設定過別名位址(別名位址為0),則會為每個EtherCAT 從站裝置設定1 群組從100 開始的別名位址依排序順序,可用於EtherCAT從站設備較多或需要快速設定時。
自動設定虛擬 Arduino 的數位引腳映射
點擊左下角的“自動”設定按鈕(以紅色突出顯示)。
注意:虛擬Arduino數位接腳僅適用於QEC-RXXD系列產品。
將出現「自動設定所有從裝置的別名位址」和「自動設定虛擬 Arduino 的數位引腳對映」按鈕。 使用者可以點擊下面的按鈕(以紅色突出顯示)自動設定目前 EtherCAT 網路上的虛擬引腳映射。
如果在先前沒有設定虛擬引腳的 QEC-RXXD 裝置上使用,則按一下「虛擬 Arduino 的自動設定數位引腳對映」按鈕後,將會設定一組從 0 開始的虛擬接腳。
附錄
附錄 1:別名位址
別名位址是EtherCAT中設定裝置別名的一種方法,通常用於尋找已被識別的從站裝置。
設定從站別名位址時,儲存在ESI-EEPROM中(ESI,EtherCAT Slave Information); 別名位址必須由主站激活,並且可以由 EtherCAT 從站設備更改。
如果節點位址與別名位址匹配,則執行對應節點的指令。
QEC 上如何運作?
設定別名位址後,程式會自動辨識該編號的QEC從站,當使用者的QEC從站因需求改變在EtherCAT網路上的位置時,程式會自動適應,無需再次上傳新的設定; 如果不設定別名位址,程式不會自動適應新群組。
86EVA掃描成功後,會自動讀取從機之前設定的Alias Address。 下圖顯示了尚未設定別名位址的從裝置(以紅色突出顯示)。
下圖顯示了設定了別名位址的從設備。 預設從站別名位址為 0。請設定 1 ~ 65535 之間的數字。
別名位址顯示在從設備的【常規】中的【別名位址】欄位中; 此欄位在輸入數值的過程中被取消,修改先前的數值後會傳回。
按下Set按鈕會將別名位址寫入EtherCAT從站的EEPROM中; 關閉86EVA後,請記得重新啟動EtherCAT設備。
注意:設備重新啟動後將採用新的別名位址。
附錄2:虛擬Arduino
在一般的Arduino板上,其腳位的數量、順序和功能都是固定的,製造後不能改變; 虛擬Arduino的概念是將EtherCAT網路模擬為虛擬Arduino,允許根據使用者的意願調整其引腳數量、順序和功能。
虛擬Arduino由多個EtherCAT從站的各種引腳組成,其上的各個連接埠和引腳來自不同的EtherCAT從站設備,並透過EtherCAT網路相互連接。
虛擬 Arduino 支援的功能
目前,虛擬 Arduino 支援數位 I/O、序列埠、MPG 連接埠、鍵盤、MPG 和蜂鳴器,這些可以在以下 QEC 設備中找到:
- QEC-RXXD 系列(EtherCAT 從站數位 I/O 模組):數位 I/O
- QEC-RXXHU 系列(EtherCAT 從站閘道控制器(UART + MPG + 鍵盤 +LCM)):串列埠、MPG 連接埠、鍵盤、MPG 和蜂鳴器
詳細設定請參考各產品介紹。
如何在86Duino IDE中使用虛擬Arduino?
本節介紹如何在 86Duino IDE 中使用配置成功的 Virtual Arduino Digital I/O PIN。
本範例將使用 QEC-M-043T(EtherCAT 主站)和 QEC-R00D88D-C(EtherCAT 數位輸入/輸出模組)進行示範,該模組具有 8 個輸入觸點和 8 個輸出觸點。
有關如何開啟 86EVA 工具的信息,請參閱第 2 章。
首先,點擊進入QEC-R00D88D-C設備並在虛擬Arduino中進行設定。 (有關資訊和設置,請參閱 QEC-RXXD 系列(EtherCAT 從站數位 I/O 模組)。
本例中,數位輸入引腳映射的 DI00 和數位輸出引腳映射的 DQ00 設定為虛擬引腳 D0 和引腳 D1。
設定完成後,產生此 86EVA 設定的 Arduino 程式碼,然後按一下「Code Generation」(以紅色突出顯示)
完成後,使用者可以使用86Duino IDE的主 loop()中的EVA類別(以紅色突出顯示)來控制86EVA中設定的引腳。
在本例中,我們使用 Virtual Digital D0 和 D1 這兩個虛擬引腳,分別對應 QEC-R00D88D-C 的 DI0 引腳(INPUT)和 DQ0 引腳(OUTPUT)。 然後我們讀取D0的狀態,然後將D1設定為高電平,程式碼如下圖所示。
程式碼上傳成功後,可以看到QEC-R00D88D-C上DQ0腳的燈亮起來。
註:loop()中,EVA.digitalRead(0)代表先前設定的數位輸入引腳映射的虛擬引腳0; EVA.digitalWrite(1, HIGH) 表示先前設定的數位輸出引腳映射的虛擬引腳 1。
其他例子:
使用者可以透過串列埠列印出Digital Input讀取到的值,程式碼如下。
void setup() { Serial.begin(115200); EVA.begin(); } void loop { Serial.println(EVA.digitalRead(0)); EVA.digitalWrite(1, HIGH); }
使用者可以將Digital Output應用到Arduino經典入門範例中,程式碼如下。
void setup() { EVA.begin(); } void loop { EVA.digitalWrite(0, HIGH); delay(1000); EVA.digitalWrite(0, LOW); delay(1000); }
86Duino 參考的文本是根據 Creative Commons Attribution-ShareAlike 3.0 License,部分文本是從 the Arduino reference 修改的。 參考中的代碼示例已發佈到公共領域。