QEC Example – Digital Input/Output

QEC Example – Digital Input/Output

[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 作為接收信號腳位。

  1. Vp電源連接到QEC-R11D0F Pin0+
  2. QEC-R11D0F Pin0-連到LED的VCC
  3. LED GND接到QEC-R11DF0的Pin8+
  4. QEC-R11DF0的Pin8-接回Vp電源的GND

如圖所示。

qec_dio

代碼

建構電路後,您需要設定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 程式設計集合。

發表評論

上部へスクロール