当前位置:   article > 正文

IgH详解十、EtherCAT DC(3)IgH实现

igh

IgH DC计算

IgH在主站启动后,等待从站状态机扫描完从站后,就开始计算传输延时。

    ec_master_attach_slave_configs  //主站绑定从站配置信息

        通过前面的分析我们知道,需要先选择一个从站作为参考时钟,根据总线的拓扑结构来计算各从站的传输延时。

ec_master_find_dc_ref_clock    // 没有指定参考从站就把第一个带DC的从站作为参考时钟

同时初始化了时钟漂移补偿用的数据报文

ec_datagram_fpwr(&master->ref_sync_datagram, ref ? ref->station_address : 0xffff, 0x0910, 4); //把主站时间写到从站

 ec_datagram_frmw(&master->sync_datagram, ref ? ref->station_address : 0xffff, 0x0910, 4);  //漂移补偿

 ec_datagram_fprd(&master->sync64_datagram, ref ? ref->station_address : 0xffff, 0x0910, 8); //读取从站时间

        计算拓扑结构就是计算出该从站上一个从站接的是谁,下一个从站接的谁,这样就能计算出传输延时。

        计算出每个从站的传输延迟,可以看到IgH没有计算t_diff,这部分需要漂移补偿来补偿

        计算每个从站相对于参考时钟的传输延时

        当启动主站进入配置流程后,计算各从站的系统时间偏移

        可以看到IgH根据主站时间来依次计算从站时间偏移,这里可能会因为主站的抖动对偏移计算产生一些偏差,最好改成参考从站的时间来计算偏移,从站的转发抖动非常的小

写入时间偏移和传输延时,还需要用户周期任务周期的广播参考从站时钟

从站需要根据当前状态进行配置,跃迁到op状态

从站启动DC流程

配置从站工作周期

        判断当前DC时间是否稳定,等待时间5000ms,如果5S后还不稳定,就继续进行下面工作,不等了,当使用主站作为参考时钟,经常会看到打印

Slave did not sync after 5000 ms

就表明从站同步比较慢

设置从站周期信号触发时间,可以看到启动时间加上了shift_time

        Shift_time保证了主站发送报文时间和从站触发sync信号不在同一时间,从站同一时间不能处理两件事情,就可能会导致报文没有接收。

从图中可以看到,Shift Time和从站的处理周期数据的时间有关系。

正确的Shift Time 不是唯一的, 它可以在主站周期的整个区间里的进行选择。

不能随便设置,周期越短,Shift Time设置的就要越精确。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/986396
推荐阅读
相关标签
  

闽ICP备14008679号