EtherCAT igh "Fatal Sync Error"——0x002C,0x001A

问题还没解决,后续会跟进。打算记录一下调试过程,以防后面忘记。当然也希望有朋友能指点我一下,哈哈。
使用igh进行开发,遇到了一个报错,这种报错无规律可言,测试的时候,有时会出现,有时不出现。
在这里插入图片描述
这个问题,我问了一个网友,他的回答如下:
EtherCAT从站有个本地时钟(是个定时器,1ms一次中断,这个中断函数会去喂狗,就是累加一个数),sync会去清零这个累加数(清除喂狗的次数)。当喂狗的次数(就是那个累加数)大于等于约定的次数时,就会报这个错误。
所以查三个地方,一个是定时的周期是否正确,二是喂狗的次数上限是否正确,三是否在规定时间内接收到sync中断。
你可以用开发板接你的主站,能正常通讯,那就不是sync的问题,查两外两个。
这个报错的信息是从站上传的,你可以在从站代码里面全局搜索002c,就能找到这个错误的宏定义,和报错的地方
ctrl + F, 全局搜索002c
在这里插入图片描述
在这里插入图片描述
继续全局查找这个bDcRunning
在这里插入图片描述
然后debug这两个变量
在这里插入图片描述
上面在动的那个计数,大于等于下面那个就报错了,有时候等于也没报错,这是因为报错的机制在主函数循环里面,还没执行到,又被清零了,所以有时候不报错,这是bug。

ASK:如果说sync中断慢了,也会报这种错误是吧?
ANSWER:是的,因为狗已经喂饱了,就是那个计数已经超过设置的计数值了,
		喂狗就是不断的让那个计数值加1,sync中断会清零那个计数值,
		那个计数值大于一定数,就会sync报错,就是你遇到的那个错误。

好吧,其实忙活了半天只是知道为什么会报错,并没能找到报错的真正原因!!!
个人认为并不是从站的问题,我用TwinCAT连接从站做测试,尚未发现这个问题,只有在用igh主站的时候会报错!!!
这个问题应该叫做“EtherCAT网络抖动问题”,我在知网搜到了一篇论文《一种EtherCAT软主站的抖动抑制方法》,论文中讲述了一些造成抖动的原因,有兴趣的可以下载参考。

过段时间打算研究一下从站程序的流程,以及IRQ、sync0、sync1三个中断。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值