快使用Ctrl+D收藏本站!如果本站的文章以及资源有帮助到您,希望您能赞助本站服务器费用,感谢您的支持!本站开放注册,现邀请您一起分享技术心得!您可以-注册-

codesys中EtherCAT总线状态判断

AM600 Julius_wen 49℃ 0评论

编写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总线状态判断

赞赏作者

微信赞赏支付宝赞赏

喜欢 (1)or分享 (0)

如果您喜欢本站文章,感觉本站的资源对您有帮助,请狠狠点击下面

每累计赞助40元,即可让本站按最低配置运行一个月,感谢您的支持!

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址