快使用Ctrl+D收藏本站!如果本站的文章以及資源有幫助到您,希望您能贊助本站服務器費用,感謝您的支持!本站開放注冊,現邀請您一起分享技術心得!您可以-注冊-

codesys中EtherCAT總線狀態判斷

AM600 Julius_wen 843℃ 0評論

天天炫斗洛漓 www.wfrrl.icu

編寫EtherCAT狀態判斷功能塊,方便以后調用,第一部分代碼為變量部分,第二部分代碼為主體部分。

//ETHERCAT
(*
(Ethercat.xConfigFinished) AND (NOT ETHERCAT.xError) AND (Ethercat.xDistributedClockInSync)
A) 通訊正常時標準位狀態:
xConfigFinished= TRUE;
xDistributedClockInSync = TRUE;
xError= False。
B)網絡中未接任何從站或從站不全
xConfigFinished= False;
xDistributedClockInSync = False;
xError=TRUE。
C) 通訊正常后將主站和第一個從站之間網線斷開,即和所有從站數據中斷
xConfigFinished = TRUE;
xDistributedClockInSync= False;
xError=False。
D)通訊正常后將第一個從站和第二個從站之間網線斷開,即斷開所有具有DC功能的從站
xConfigFinished = TRUE;
xDistributedClockInSync= False;
xError=False。
E)通訊正常后將第二個從站和最后一個從站之間網線斷開。
xConfigFinished = TRUE;
xDistributedClockInSync= TRUE;
xError=False。
);
//(Ethercat.xConfigFinished) AND (Ethercat.xDistributedClockInSync) AND (NOT ETHERCAT.xError);
(
定義:
pSlave: POINTER TO ETCSlave;
編程:
pSlave := Ethercat_Master.FirstSlave;
WHILE pSlave <> 0 DO
pSlave^();
IF pSlave^.wState = ETC_SLAVE_STATE.ETC_SLAVE_OPERATIONAL THEN
;
END_IF
pSlave := pSlave^.NextInstance;
END_WHILE
首先通過EtherCAT_Master.FirstSlave找到主站的第一個從站。
在‘WHILE’循環中調用各個實例,由此確定wState,然后檢查狀態。通過pSlave^.NextInstance找到指向下一個從站的指針。在列表結尾出指針為空,循環結束。
*)

轉載請注明:天天炫斗洛漓 » codesys中EtherCAT總線狀態判斷

贊賞作者

微信贊賞支付寶贊賞

喜歡 (3)or分享 (0)

如果您喜歡本站文章,感覺本站的資源對您有幫助,請狠狠點擊下面

每累計贊助40元,即可讓本站按最低配置運行一個月,感謝您的支持!

發表我的評論
取消評論

表情

Hi,您需要填寫昵稱和郵箱!

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址