POWERLINK多客户端通信系统设计
2019-12-04李骏杰聂诗亮
李骏杰,聂诗亮
(西南科技大学信息工程学院,四川 绵阳 621010)
0 引言
随着工业信息化的快速发展,现场总线技术在传输速率、数据量以及实时性上已无法满足当前工业网络通信的要求,而以太网技术则可以用于应对当前工业通信遇到的问题[1]。然而,传统工业以太网使用的载波监听多路访问/冲突检测(carrier sense multiple access with collision detection,CSMA/CD)机制会引起数据传输的不确定性,也无法确保通信的实时性[2]。
实时以太网(Ethernet POWERLINK,EPL)[3]是一种基于普通工业以太网的实时通信协议。它在数据链路层加入了时间槽通信管理机制(slot communication network management,SCNM),避免了数据冲突,实现了通信的确定性[4-5]。本文在基于Linux操作系统的嵌入式设备下实现POWERLINK协议,完成主站的构建,与Windows系统下的多从站进行通信。通过观察数据的收发状况与抓包验证,证明了通信的可行性。
1 POWERLINK协议
POWERLINK协议是一项由奥地利贝加莱公司设计规划的,基于标准以太网,无需专用硬件支持,速度快、实时性强的开源以太网技术。
POWERLINK协议是一个三层的通信网络,规定了物理层、数据链路层和应用层。POWERLINK物理层基于标准以太网、遵循IEEE 802.3快速以太网标准。POWERLINK协议的核心是数据链路层,主要作用是解决通信问题,提高实时性。应用层遵循CANopen标准。 CANopen 是一个应用层协议,为应用程序提供了一个统一的接口,使得不同的设备与应用程序之间有统一的访问方式。POWERLINK协议模型如图1所示。
图1 POWERLINK协议模型图
从图1可以看出,POWERLINK协议与普通以太网最大的区别在于其引入了SCNM,即在整个系统中选定某个节点作为管理节点,其他节点均作为受控节点。系统中数据通信均由管理节点进行控制,受控节点在何时进行上报由管理节点配置的参数决定。管理节点配置完成后,规定不同的受控节点在不同的时间内进行数据通信,避免了发生数据冲突,保证了系统在同一时刻只有一对设备进行数据交互,解决了传统以太网通信实时性差的问题。
2 系统设计
2.1 硬件设计
POWERLNK主站基于Linux操作系统的嵌入式设备。该设备基于ARM9处理器构建,支持1个10/100 MB自适应工业以太网接口,支持 Linux3.6操作系统,并装配RTL8211网卡芯片,因此可以使用POWERLINK协议应用结构模式下的内核模式,在以太网模型的最底层(即物理层)实现协议栈。
POWERLINK从站基于Windows系统的PC机。PC机则在应用结构模式下的用户空间模式实现协议栈。主、从站使用双绞线通过以太网接口连接,使用以太网交换机实现主站对多个从站的数据通信。硬件框图如图2所示。
图2 硬件框图
2.2 软件实现
2.2.1 POWERLINK 主站实现
在内核空间模式下,需要将网卡芯片的驱动程序添加至POWERLINK协议栈中,在OSI模型的最底层(即MAC层)实现POWERLINK协议。将网卡的驱动程序添加至协议后,通过调用芯片的操作函数将芯片注册入协议栈。将芯片注入协议栈后,便可对POWERLINK进行编译,生成协议栈可驱动模块。
POWERLINK协议需要使用相关参数变量来实现节点的对应关系,从而完成通信任务。因此,使用CANopen协议里的对象字典(OD)与过程数据目标(PDO)配置对应的网络参数和映射参数,为通信对象和数据帧之间建立映射关系。
不同于单个从站通信,多个从站的情况需要在单个的前提下,在主站点完成如下操作:首先添加一一对应的通信对象,用于在协议栈中对交互的数据进行相关操作;接着添加用于建立通信对象与数据帧映射关系的过程数据对象的网络参数和映射参数;然后使用连接函数将程序实际使用的变量与对象字典中的通信对象连接起来;最后编写同步回调函数,周期性地完成数据交互。
主站与一号从战完成数据交互后,关闭主站协议栈,停止与一号从站的数据通信。开启二号从站后,再重新开启主站协议栈,开始与二号从站实现数据交互,直到完成主站与多个从站的数据交互过程。主站通信流程如图3所示。
图3 主站通信流程图
2.2.2 POWERLINK 从站实现
从站通信流程如图4所示。
图4 从站通信流程图
POWERLINK在协议栈的用户模式下进行实现。在该模式下,需要安装winpcap库作为网卡的驱动程序。POWERLINK从站的配置过程与主站基本相同。需要注意的是,不同从站的网络参数和映射参数需要与主站中对应于该从节点的配置参数满足映射关系,并且针对其同步回调函数,设置不同的从站点设置差值不同的数据流与主站实现数据交互。从站与主站的数据通信主要受到主站的影响,从站须先开启,等待主站启动协议栈后才能进行数据通信。
3 数据通信测试
对Linux系统下实现的POWERLINK主站,使用终端仿真软件运行已编译成功的POWERLINK协议驱动模块。在Windows系统下的POWERLINK从站[6-10],使用Visual Studio开发工具运行其工程项目来实现POWERLINK协议栈。
3.1 通信结果测试
采用两个从站实现设计目标。首先一号从站开启,等待主站开启并开始数据通信,通信结束后关闭主站,主从通信中断。POWERLINK协议主站发送数据差为2的连续数据给一号从站,一号从站收到数据后同时发送差为1的连续数据给主站。二号从站与主站数据通信过程与一号从站与主站过程相同,POWERLINK协议主站发送的数据不变,二号从站则发送数据差为2的连续数据给主站。在成功通信后,使用网络工具Wireshark对通信的准确性进行了验证。最后,通信结果以及抓包结果表明系统成功实现了协议的数据通信。
3.2 通信性能测试
数据通信的性能指标是衡量一个通信系统传输数据信息能力的重要标志。本设计针对误码率、丢包率以及传输时延,对其进行测试。测试结果如表1所示。
表1 测试结果
通信测试结果表明,随着测试时间的增加,系统的传输延时时间基本保持在3.20 μs。该传输延时时间是一个数据帧在本系统中由一个节点传输到另一节点所花费的时间。通过在Wireshark工具查看数据包的收发情况可以发现,其丢包率基本不存在;通过查看数据通信结果可以发现,误码率随着时间的增长虽然存在,但仍在预期范围内,基本维持在0。测试结果说明了本系统的稳定性以及通信的准确性,达到了通信的基本要求。
4 结束语
本文设计了一种基于POWERLINK协议的多客户端通信系统阐述。在搭建的硬件平台上,完成了Linux系统下的POWERLINK主站与Windows系统下的POWERLINK多从站的数据通信,通过实际的数据交互以及网络工具的抓包试验对其进行验证。最后针对通信的性能指标,通过试验对其进行了测试。测试结果证明了系统通信的稳定性与准确性。该系统对今后工业通信的研究具有深远的意义。