一种基于非实时系统的EtherCAT主站同步方法与流程

文档序号:21693609发布日期:2020-07-31 22:19阅读:321来源:国知局
一种基于非实时系统的EtherCAT主站同步方法与流程

本发明涉及工业以太网现场总线通信领域,尤其涉及一种基于非实时系统的ethercat主站同步方法。



背景技术:

ethercat协议主站和从站之间主要有几种同步方法:

首先是采用实时化扩展系统和专用网卡驱动的软主站实现方式。目前在windows平台上主要有rtx、intime等商业实时化补丁。主站协议通过实时系统提供的实时线程、消息事件等接口实现,比如twincat等主站系统。这种方法的缺点是只能支持有限和特定型号的网卡,需要相关的许可证和费用,而且修改了操作系统的内核特性,造成了操作系统兼容性变差,甚至无法运行现有的行业软件进行协同工作。

其次是采用fpga硬件板卡的硬主站方式。这种方案由于主站协议运行在fpga内部,利用了硬件并行处理特性,通讯周期可缩短至100微妙,从站同步动作时间的精度小于1微秒,可应用于高速高精的运动控制系统。这种方法采用硬件主站方式保障了主从站之间的的通讯可靠性,但是硬件和开发成本较高,且需要开发和各种操作系统平台或主控芯片之间的驱动程序和sdk应用接口。

最后是采用非实时系统+普通网卡的软主站方式。这种主站采用了捕获原始网络数据包的方法实现从站通讯,采用系统提供的网络中间层驱动协议,可支持各种网卡。这种方法通用性好,但由于非实时系统的定时精度很差,通讯不稳定性,容易产生各种连接或超时错误,主要用做从站的配置和参数的修改读取工具,无法用于实际运动控制系统。

根据主站的实时模式的不同,ethercat从站主要工作于dc同步模式和自由运行模式。dc同步模式通过分布式时钟和时间补偿机制实现同步,这种方式只有当主站定时周期精度和实时性非常高时才能采用。在自由运行模式下,各从站相互之间独立的完成数据接收处理和发送,和主站之间也没有进行任何同步调整。这种方式比较适合非实时系统的主站平台,但由于主站周期抖动和传输距离延迟的原因,不同的从站数据包到达时间不一致,同步精度受到很大影响。

采用非实时系统的ethercat同步方式的主要原因有三点:(1)对于某些商业性操作系统,采用实时化方案的许可费成本很高;(2)对于很多开源操作系统平台目前还没有实时化方案或方案不成熟,如针对各种cpu芯片定制的linux,andriod等;(3)很多大型行业软件,如各类仿真,测试,游戏/vr,相关控制系统只能运行在商业性的非实时操作系统平台之上。

鉴于实际应用的广泛需求,基于非实时系统的ethercat总线同步方式具有非常重要的意义,在很多应用场景甚至超过了实时系统ethercat。因此采用传统非实时系统主站并提高主从站之间的同步精度具有广泛的实用价值。



技术实现要素:

有鉴于此,本发明提供了一种基于非实时系统的ethercat主站同步方法。

本发明提供一种基于非实时系统的ethercat主站同步方法,包括以下步骤:

s101:主站初始化;

s102:主站在配置阶段,通过修改从站寄存器和相关参数,使从站启用dc同步信号并以自由运行模式工作;

s103:主站启动从站;在运行阶段,主从站采用dc参考时钟进行动态同步调整,采用优化的周期性通讯方式收发从站数据;

s104:主站关闭通讯接口。

进一步地,步骤s101具体为:主站创建通讯线程,定时器任务和消息事件;主站初始化网络内的各个网卡,自动扫描该网络所连接从站,初始化从站寄存器,并设置每个从站为初始状态。

进一步地,步骤s102中,主站修改从站寄存器和相关参数,使从站启用dc同步信号并以自由运行模式工作,具体为:

s201:主站将所有从站的dc同步周期设置为主站通讯周期,并启用dc时钟;主站重新配置从站的pdi配置寄存器和al事件请求寄存器,加入dc同步模式的中断信号sync0,并屏蔽从站同步管理事件信号;

s202:主站通过sdo方式修改相关参数使从站强制工作在自由运行模式,其中相关参数包括同步管理参数0x1c32/0x1c33所包含的的对象子1和4,即当前同步类型和同步类型支持集。

进一步地,步骤s201中,主站将所有从站的dc同步周期设置为主站通讯周期,并启用dc时钟,具体为:

s301:主站初始化每个从站,设置从站状态为预运行状态;

s302:主站通过广播命令的方式锁存各个从站网络端口的数据帧接收时间,从而计算出从站dc的系统时间偏差、传输延时和时钟漂移值,并写入各个从站的时钟偏移和漂移寄存器中;

s303:主站设定从站dc时钟周期为通讯周期,设定启动时间,并启动dc同步信号。

进一步地,步骤s103中,主站在运行阶段,采用主从站时间同步和优化的周期性通讯方式收发从站数据,所述优化的周期性通讯方式,为周期性线程+定时任务方式;所述周期性线程+定时任务方式,具体如下:

s401:主站命令所有从站进入运行状态,并启动周期性线程和定时器;

s402:主站采用通讯线程进行周期数据报文的发送,在ti时刻启动定时器来等待从站返回数据报文的接收;

s403:主站在t1时刻开始接收从站返回数据报文,并激活接收完成消息事件;

s404:周期性线程发送完成后等待周期数据接收完成事件而进入挂起状态,释放cpu占用;

s405:周期性线程在t2时刻收到数据包接收完成消息事件,并根据接收到的周期数据进行计算输出;

s406:通讯线程在t3时刻开始读取本地cpu时间,并在预先设定的ti+1时刻再次发送数据报文。

进一步地,步骤s402中,主站采用通讯线程进行周期发送时,在发送数据帧中添加获取参考时钟的数据报文;所述参考时钟为首个从站的dc时钟。

进一步地,步骤s405中线程在t2时刻收到数据包接收完成事件时,还从接收数据帧中解析返回包含参考时钟的数据报文。

进一步地,步骤s104具体为:主站关闭通讯接口,结束线程,清理缓冲区,并设置从站返回到初始化状态。

步骤s402中,主站发送时间ti的具体计算方法如下:

s501:主站记录周期性线程启动时的本地cpu时间t0;

s502:主站计算发送时间ti=ti-1+tc;其中tc为通讯周期;ti-1表示上一个周期的发送时间,其初始值为t0;ti表示第i个周期的发送时间;

s503:主站从周期性接收数据包中获取从站的dc参考时钟tref;

s504:计算从站dc参考时钟与总线通讯周期的偏差dt=tref%tc;计算dc参考时钟和主站当前时间偏差的累积di=di-1+(ti–tref)%tc;di-1表示上次的累积值

s505:根据从站dc参考时钟与总线通讯周期的偏差dt,利用比例和积分调节法对发送时间ti进行更新ti=ti+kp*dt+ki*di;kp为预设的比例调节系数,ki为预设的积分调节系数。

s506:利用步骤s502-步骤s505动态调节主站每个周期的发送时间ti。

本发明提供的技术方案带来的有益效果是:在不改变操作系统的通用性和兼容性条件下,克服了非实时系统无法运行dc同步模式的造成缺陷,提高了主站和从站之间同步的准确性。

附图说明

图1为本发明一种基于非实时系统的ethercat主站同步方法的流程图;

图2为传统的非实时系统的周期性通讯方式示意图;

图3为本发明的主站优化后周期性通讯方式示意图;

图4为本发明中主站周期发送时间ti计算的流程图;

图5是主站与从站之间的整体通讯同步过程框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地描述。

请参考图1,本发明的实施例提供了一种基于非实时系统的ethercat主站同步方法的流程图,具体包括:

s101:主站初始化;

s102:主站在配置阶段,通过修改从站寄存器和相关参数,使从站启用dc同步信号并以自由运行模式工作;

s103:主站启动从站;在运行阶段,主从站采用dc参考时钟进行动态同步调整,采用优化的周期性通讯方式收发从站数据;

s104:主站关闭通讯接口。

步骤s101具体为:主站创建通讯线程,定时器任务和消息事件;主站初始化网络内的各个网卡,自动扫描该网络所连接从站,初始化从站寄存器,并设置每个从站为初始状态。

步骤s102中,主站修改从站寄存器和相关参数,使从站启用dc同步信号并以自由运行模式工作,具体为:

s201:主站将所有从站的dc同步周期设置为主站通讯周期,并启用dc时钟;主站重新配置从站的pdi配置寄存器和al事件请求寄存器,加入dc同步模式的中断信号sync0,并屏蔽从站同步管理事件信号;

s202:主站通过sdo方式修改相关参数使从站强制工作在自由运行模式,其中相关参数包括同步管理参数0x1c32/0x1c33所包含的的对象子1和4,即当前同步类型和同步类型支持集。

步骤s201中,主站将所有从站的dc同步周期设置为主站通讯周期,并启用dc时钟,具体为:

s301:主站初始化每个从站,设置从站状态为预运行状态;

s302:主站通过广播命令的方式锁存各个从站网络端口的数据帧接收时间,从而计算出从站dc的系统时间偏差、传输延时和时钟漂移值,并写入各个从站的时钟偏移和漂移寄存器中;

s303:主站设定从站dc时钟周期为通讯周期,设定启动时间,并启动dc同步信号。

请参考图2,图2为传统的非实时系统的周期性通讯方式,主站根据预先设定好的收发定时器周期性的发送并接收pdo数据包。这种方式主要缺陷是每个周期的定时抖动比较大,造成pdo发送时间不精确,而且等待接收时间长短不确定,既浪费cpu资源,也容易影响定时器正常工作。

请参考图3,图3为主站优化的周期性通讯方式;步骤s103中,主站在运行阶段,采用主从站时间同步和优化的周期性通讯方式收发从站数据,所述优化的周期性通讯方式,为周期性线程+定时任务方式;所述周期性线程+定时任务方式,具体如下:

s401:主站命令所有从站进入运行状态,并启动周期性线程和定时器;

s402:主站采用通讯线程进行周期数据报文的发送,在ti时刻启动定时器来等待从站返回数据报文的接收;

s403:主站在t1时刻开始接收从站返回数据报文,并激活接收完成消息事件;

s404:周期性线程发送完成后等待周期数据接收完成事件而进入挂起状态,释放cpu占用;

s405:周期性线程在t2时刻收到数据包接收完成消息事件,并根据接收到的周期数据进行计算输出;

s406:通讯线程在t3时刻开始读取本地cpu时间,并在预先设定的ti+1时刻再次发送数据报文。

步骤s402中,主站采用通讯线程进行周期发送时,在发送数据帧中添加获取参考时钟的数据报文;所述参考时钟为首个从站的dc时钟。

步骤s405中线程在t2时刻收到数据包接收完成事件时,还从接收数据帧中解析返回包含参考时钟的数据报文。

步骤s104具体为:主站关闭通讯接口,退出线程,清理缓冲区,并设置从站返回初始化状态。

请参考图4,图4为本发明中主站周期发送时间ti计算的流程图;步骤s402中,步骤s402中,主站发送时间ti的具体计算方法如下:

s501:主站记录周期性线程启动时的本地cpu时间t0;

s502:主站计算发送时间ti=ti-1+tc;其中tc为通讯周期;ti-1表示上一个周期的发送时间,其初始值为t0;ti表示第i个周期的发送时间;

s503:主站从周期性接收数据包中获取从站的dc参考时钟tref;

s504:计算从站dc参考时钟与总线通讯周期的偏差dt=tref%tc;计算dc参考时钟和主站当前时间偏差的累积di=di-1+(ti–tref)%tc;di-1表示上次的累积值

s505:根据从站dc参考时钟与总线通讯周期的偏差dt,利用比例和积分调节法对发送时间ti进行更新ti=ti+kp*dt+ki*di;kp为预设的比例调节系数,ki为预设的积分调节系数。

s506:利用步骤s502-步骤s505动态调节主站每个周期的发送时间ti。

最后,请参考图5,图5是主站与从站之间的整体通讯同步过程框图;图5中右侧关于从站部分单独的工作非本发明核心内容,这里不作解释说明;图5中左侧为主站和从站之间通讯主流程,其过程在前述内容已作详细解释,不再赘述。

本发明提出的一种基于非实时系统的ethercat主站同步方法:

(1)利用从站的dc中断信号来提高同步精度,并强制工作在自由运行模式。

(2)主站和从站之间采用dc参考时钟实现实时同步调整。

(3)利用线程和定时器配合的方式,提高周期性数据的通讯精度。

本发明的有益效果是:在不改变操作系统的通用性和兼容性条件下,克服了非实时系统无法运行dc同步模式的造成缺陷,提高了主站和从站之间同步精度。

在不冲突的情况下,本文中上述实施例及实施例中的特征可以相互结合。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1