[QEC教程]
完整教學請參見 EtherCAT 範例:QEC 數位輸入/輸出.
Digital Input/Output
本章節將會把Digital Output和Digital Input合在一起進行。
將先透過QEC-R11D0F把外部LED閃爍,再透過QEC-R11DF0,接收LED5狀態,並透過Serial Port印出來。
硬體說明
- QEC-M-01
- QEC-R11DF0: EtherCAT 16數位輸入通道從站模組
- QEC-R11D0F: EtherCAT 16數位輸出通道從站模組
- 其他: 24V LED
電路
請先將QEC-M上的EtherCAT Out網路與QEC-R11D0F的EtherCAT In網路連接,以及QEC-R11D0F的EtherCAT Out網路與QEC-R11DF0的EtherCAT In網路連接。
此範例將使用Vp電源作為QEC-R11D0F Pin0的電源,透過使用QEC-R11DF0的Pin8 作為接收信號腳位。
- Vp電源連接到QEC-R11D0F Pin0+
- QEC-R11D0F Pin0-連到LED的VCC
- LED GND接到QEC-R11DF0的Pin8+
- QEC-R11DF0的Pin8-接回Vp電源的GND
如圖所示。
代碼
建構電路後,您需要設定EtherCAT主站與從站物件名稱。
此整合範例,將Digital Output設為第一台從站 slave0,將Digital Input設為第二台從站slave1。
EthercatMaster master; EthercatDevice_QECR11D0FH slave0; // Depend on your QEC device name EthercatDevice_QECR11DF0H slave1; // Depend on your QEC device name
在主程式中,我們先將QEC-R11D0FS的Pin0設High,讀取QEC-R11DF0D的Pin8,在Serial Port中印出,delay 4000毫秒;之後,再將QEC-R11D0FS的Pin0設Low,讀取QEC-R11DF0D的Pin8,在Serial Port中印出,delay 1000毫秒,程式碼將如下。
slave0.digitalWrite(0, HIGH); delay(10); Serial.println(slave1.digitalRead(8)); delay(4000); slave0.digitalWrite(0, LOW); delay(10); Serial.println(slave1.digitalRead(8)); delay(1000);
其中,在digitalWrite與digitalRead之間,我們需要加入delay(10),等待Input PDO更新。
範例
#include "Ethercat.h" EthercatMaster master; EthercatDevice_QECR11D0FH slave0; // Depend on your QEC device name EthercatDevice_QECR11DF0H slave1; // Depend on your QEC device name void setup(void) { Serial.begin(115200); /* EtherCAT */ master.begin(); slave0.attach(0, master); slave1.attach(1, master); master.start(); } void loop() { slave0.digitalWrite(0, HIGH); delay(10); Serial.println(slave1.digitalRead(8)); delay(4000); slave0.digitalWrite(0, LOW); delay(10); Serial.println(slave1.digitalRead(8)); delay(1000); }
學習更多
您可以在EtherCAT 應用中找到有關基本QEC 應用的更多資訊。
您也可以探索語言或函式庫,提供更詳細的 86Duino IDE 程式設計集合。