发现SYNC0信号的周期跳变最大7us,平均2us,而且有随机周期160ms的7us跳变尖峰,比起官方宣称的100ns时间同步精度相差甚远.
原来是Igh-EthercatMaster的dc_user例子里给的是使用主站时钟作为整个从机时钟的DC同步方式.
根据 http://lists.etherlab.org/pipermail/etherlab-users/2016/003012.html 和 http://lists.etherlab.org/pipermail/etherlab-users/2016/003013.html 的讨论
使用第一个带DC的从站作为参考时钟,然后将主站时钟锁定至参考时钟是最好的办法.
好吧,伺服启动后跳变就没了,这是特性而不是bug,用twincat测过了也一样
--------------------------上面是被坑的内容------------------------
--------------------------下面也是被坑的内容---------------------
因为干扰的原因?测得设备电源输入的零地电压为7v
时不时的有丢包现象和从站单片机重启?现象,导致主站设备数变动,重新扫描设备,然后会引起所有设备重置,严重的时候几分钟重启一次.
发现了 https://sourceforge.net/u/uecasm/etherlab-patches/ci/default/tree/#readme 这一堆补丁包,看似很exciting,但是全打上后,发现e1000e的驱动有严重的bug,receive时会导致2000us的延时.
补丁不能全打上,理论上只需要 base/0009-Avoid-changing-running-slaves-DC-offset.patch 这个补丁就行了
但是为了打0009补丁,需要打 base/0001-Distributed-Clock-fixes-and-helpers.patch , base/0002-Distributed-Clock-fixes-from-Jun-Yuan.patch 这两个补丁
总共3个补丁,需要手动解决冲突,打上后测试成功,热拔插设备不会引起别的设备重置了
----------update----2024-06-02--------
困扰我这么多年的问题,为什么从站老掉线,这篇文章里的可能性很大
EtherCAT网络连续丢帧掉线引起整个网络中断问题,该怎么办?
为了防止404,摘抄在这
一、故障现象
在一个EtherCAT网络中,随机出现所有从站模块进入INIT_NO_COMM状态;
System Manager中或者Tclog中显示报警信息如下:
Device 1(EtherCAT):Frame missed 10 times (frame no. 0)
Device 1(EtherCAT):Frame return -> force 10 times reinitialization!
二、故障分析:
这个错误是由于EtherCAT数据桢连续丢失10次造成EtherCAT主站进入INIT状态,引起了所有从站模块进入INIT状态,可能的原因有:EMC干扰、网线质量问题、网口虚接、网络接口松动、滑环接触不良、从站模块自身损坏等多种原因。
三、排查方法:
根据分析需要排查出具体产生网络故障的原因,
1.在主站的AdvancedSetting中不要勾选“LogCRCCounters”标记
2.在EtherCAT视图中添加注册字0x0300-0x030A和0x0310-0x0312
3.激活并重启TwinCAT配置:
4.重启TwinCAT后,EtherCAT主站的Online页面总是以word-oriented的方式显示计数值
5.等待,直到错误补检测到:捕捉到的错误次数越多越好(关闭项目或者重启TwinCAT就会清除计数,而最小化项目或者切换窗口则不会清除计数).记录的值可以导出,以供进一步分析。
6、对下图导出的错误报告进行分析,可以发现在Term 2的A口出现一次丢帧、Term 5的A口出现三次丢帧、Term 6的B口出现一次丢帧、Drive 8的A口出现十次丢帧.说明在Drive 8的A口出现最多丢帧次数。
7、最后检查Drive 8的A口处的网线与驱动器接头,发现一触碰这个位置就会出现从站CRC错误,拆下网线后发现网线已损坏,更换网线后网络恢复,再次触碰并晃动网线也没有产生网络错误。故障原因排除到,并解决完成。
8、最后将初始配置重新激活恢复设备配置文件。