SylixOS实时以太网浅析

来源:互联网 发布:网络机房综合布线系统 编辑:程序博客网 时间:2024/05/16 01:47

目录

1. 应用场景    1

2. 技术实现    1

2.1驱动层面的分析    1

2.2 收发包方式的分析    2

2.3 收发包周期控制的分析    4

3. 参考资料    5

 

 

 

  1. 应用场景

    工业以太网技术将成为工业控制网络和现场总线的主流技术,但传统以太网介质访问控制方式——带有冲突检测的载波侦听多路访问机制CSMA/CD,即:当一个节点要发送数据时,首先监听信道;如果信道空闲就发送数据,并继续监听;如果在数据发送过程中监听到了冲突,则立刻停止数据发送,等待一段随机的时间后,重新开始尝试发送数据。这种方式是一种非确定性的介质访问控制方式,不能满足工业现场的实时性要求。针对这种情况,业界提出了工业以太网新标准。当然,随着机器人、伺服驱动、数控系统的发展,实时以太网的趋势也越来越明显。

     

  2. 技术实现

    SylixOS在AM335X开发板上实现了EtherCat实时以太网,经过长时间测试,可以驱动6轴联动。下面将从驱动,收发包方式,收发包周期控制三个方面分析。

    2.1驱动层面的分析

    SylixOS提供网卡驱动框架,编写一个网卡驱动变得十分简单,主要需要实现网卡初始化、收包、发包、中断处理、控制等几个驱动函数。图 21为网卡驱动框架简图。

    21 网卡驱动框架简图

    在接收中断服务例程中,只通知t_netjob任务接收报文,不做网络包的接收,防止中断处理时间过长。图 22为接收中断服务例程。

    22 接收中断服务例程

    2.2 收发包方式的分析

    根据EtherCat协议,时间关键的数据采用周期性过程数据的通信方式,非时间关键的数据采用非周期性通信方式。图 23 为EtherCat通信参考模型。

    23 EtherCat通信参考模型

    SylixOS提供AF_PACKET链路层通信,专门针对EtherCat协议,用于实现高速实时数据通信。在数据传输过程中,因为用户希望数据直接通过网络接口收发包,不经过协议栈,则可以用这个协议域。在运动控制中,主站也可以通过这个协议域得到从站的MAC地址,在使用上它有两种方式,一种方式是用户直接用send、recv类函数进行收发,还有一种是mmap内存映射,可以有效减少内存拷贝的次数,图 24为SylixOS网络架构。

     

    24 SyLIxOS网络架构

     

    2.3 收发包周期控制的分析

    在实时以太网应用中,用户对于收发包周期有严格的要求,尽量避免发生抖动,因为抖动可能会导致收发包的精度下降。但在数据传输过程中,收发包的时间不可避免。比如有一种需求是用户希望收发包的整个周期是一个600us的过程,但在实际开发过程中,收发包的时间无法准确估计,如何保证整个周期的时间就是600us,过去一般是通过延时一个比600us稍短的时间,以达到整个周期的时间接近600us的目的,但SylixOS提供了更好的解决方法——速率单调调度RMS,为周期性任务解决多任务调度冲突的一种非常好的方法,RMS基于任务的周期指定优先级。在使用中只需要将周期时间参数告诉系统,系统会自动调整周期内的延时时间,如果在600us内都没有跑完周期性任务,系统是会报错的。用户在做这种周期性的开发是很方便的,不需要再去微调延时时间。下面用一段伪代码简单介绍一下RMS的使用方法。图 25为RMS使用范例,设置RMS调度器时间为3秒,代码执行时间随机产生,最终测试结果为3秒打印一次。

    25 RMS使用范例

     

    在工业实时以太网的应用过程中,不仅需要对实时性有要求,对于准确性有着更高的要求,SylixOS从驱动层到用户层全面保证。我们后续还将推出工业系统现场总线解决方案包。

     

  3. 参考资料

0 0