CODESYS EtherCAT通讯状态监测

检查所有从站的链式列表(CODESYS官方资讯)

新建功能块FB_EtherCATCheck(ST语言)

1、功能块声明部分 ;

 2、功能块执行部分;

新建程序ScanEtherCAT(ST语言),并调用功能块FB_EtherCATCheck

补充说明1:单纯调用该功能块(FB_EtherCheck)是不需要挂在EtherCAT_Task任务底下运行,但如果程序中有调用重新初始化驱动器的功能块(SMC3_RetainDrive),那么就必须挂在EtherCAT_Task任务底下运行,否则执行时就会报错。

功能测试

1、启动CODESYS,EtherCAT_Master_SoftMotion和连接的两个伺服从站顺利运行(X轴和Y轴);

程序中ETCInitialConfigDoneTRUE

两个从站的句柄

2、测试拔掉第一个从站与控制器主站之间的网线;

1)所有从站掉线,且报错

特别说明这里EtherCAT_Master_SoftMotion(主站)还保持运行,那是因为勾选设置了“自动重启从站”,主站会不断地扫描恢复从站的通讯,如果没有勾选设置“自动重启从站”,EtherCAT_Master_SoftMotion会直接停止运行。

EtherCAT_Master_SoftMotion掉线停止运行的情况

设置“自动重启从站”

展开“选项”,会显示出隐藏的选项

2)程序中ETCInitialConfigDoneFALSEETCInitialConfigFailTRUE(通讯连接超时,报错)

补充说明2:此时SlaveError和SlaveErrorId并没有记录错误状态和错误站号,那是因为第一个从站与控制器断开,会报主站通讯异常ETCInitialConfigFail,不会再进行从站扫描。

3、测试拔掉第二个从站与第一个从站之间的网线;

1)第一个从站保持运行,第二个从站停止运行,且报错

2)SlaveError记录到第二个从站的报错状态

SlaveErrorId记录到站号1(从0开始计,1就是第二个从站)

3)插回网线,第二个从站恢复连接

SlaveError错误记录解除

SlaveErrorId恢复为0(如前面补充说明2解释,当第一个从站掉线时,是主站通讯报错,并不会记录从站Id的报错,这里SlaveErrorId只对第一个从站以后的从站掉线进行记录,所以SlaveErrorId恢复为0就意味着从站通讯恢复正常)

4)此时第二个从站恢复通讯后,轴仍然报错

此时恢复通讯的轴需要执行SMC3_ReinitDrive,让其重新初始化驱动器,之后才能正常操作轴。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值