APP下载

POWERLINK 物理层通信的实现

2015-12-23陈在平

计算机工程与设计 2015年6期
关键词:物理层通信协议内核

陈在平,孙 逊+,贾 超

(1.天津理工大学 天津市复杂系统控制理论及应用重点实验室,天津300384;

2.天津理工大学 自动化学院,天津300384)

0 引 言

传统的工业以太网通信协议仅仅是在传统以太网的基础之上进行简单地优化,实现了传输速度的提升,并没有从根本上解决传统以太网通信技术中所存在通信不确性的问题,这使得传统工业以太网在现场设备层不能够得到充分的应用。Ethernet POWERLINK (简称POWERLINK)作为一种实时工业以太网通信协议,完全摆脱了传统以太网基于TCP/IP的通信理念,引入了时间槽这一核心概念,实现了数据通信的确定性[1,2]。POWERLINK 实时以太网技术的推广和应用,对以太网通信技术向着确定性方向发展发挥了巨大作用。

POWERLINK 通信协议能够在多种平台上实现通信功能。但由于其出现的比较晚,目前只获得了少数第三方公司的支持[3]。本文在ARM+Linux这一成熟的嵌入式技术之上,从应用角度出发,提出了一种实现POWERLINK 协议物理层通信方法,并通过实际测试,验证了这一方法的可行性,从而为POWERLINK 实时以太网向工业现场推进提供了一种可行方案。

1 POWERLINK 通信协议

POWERLINK 通信协议是在2001 年由奥地利贝加莱(B&R)公司提出,是一项在标准以太网介质上,用于解决工业控制领域以及数据采集领域所涉及到的数据传输准确性问题的技术规范,是一种开源实时以太网总线技术[4]。它作为一个免授权和开放性的通信协议,受到POWERLINK 标准化组织 (Ethernet POWERLINK standardization group,EPSG)的大力推广[5]。2012年3月POWERLINK现场总线正式被批准为中国国家推荐性标准,作为国内第一个实时以太网推荐标准,从此POWERLINK 协议技术在国内得到飞速地推广和发展[6]。

传统工业以太网多是基于TCP/IP 协议的通信协议,基本上是对TCP/IP 协议的修改或补充,没有从根本上解决工业底层通信实时性的需求。这是由于TCP/IP 是一种端到端面向连接的通信协议,它能够提供一种可靠的数据流服务,即采用 “带重传的肯定确认”技术来保证传输的可靠性[7]。同时,我们知道IEEE802.3 标准以太网规定,在数据链路层采用载波监听/监测即CSMA/CD (carrier sense multiple access with collision detection)方法来解决数据包传输产生的冲突,这种解决方法的原理简单总结为:先听后发,边发边听,冲突停发,随机延迟后重发[8,9]。所以,在传统以太网组建的通信网络上,当有多个工作站同时发送数据导致冲突的产生,工作站就会延迟重发数据,虽然这种方法能够保证了通信数据的完整性,但是无法保证数据在确定的时间内到达,不具有良好的实时性。

POWERLINK 的目标是确定性、实时性工业以太网,它是一个三层的通信网络,规定了物理层、数据链路层和应用层,如图1所示为POWERLINK 的OSI模型。应用层上遵循CANopen协议规范,物理层上遵循标准以太网协议规范。数据链路层是POWERLINK 协议的核心层,其中引入了时间槽通信管理机制SCNM (slot communication network management),即主站在开始通信之前,会去配置从站的参数,告诉每个从站应该在循环周期的哪一时刻上报[10]。这样,在所有时间内仅一个节点访问网络,从而避免数据碰撞,彻底解决了传统以太网由CSMA/CD 机制引起的通信实时性差的问题。

2 系统设计

2.1 硬件设计

本设计硬件电路主要由ARM9 芯片S3C2440 与DM9000网卡芯片构成,总体硬件框架如图2所示。

DM9000的访问基址是0x18000000对应S3C2440芯片内8个地址存储空间中的BANK3,因此通过nGCS3 来连接DM9000的片选信号端AEN。只用到一条地址线:AD-DR2,这是因为DM9000的地址信息和数据信息都在数据总线上传输,通过ADDR2控制CMD 引脚的电平状态来决定数据总线传递何种信息。控制总线主要完成对DM9000内部寄存器读写的控制。使用芯片H1102 作为网络变压器,可以增强信号的传输距离,并利用隔离措施加强抗干扰能力同时增加保护作用。

图1 POWERLINK 的OSI模型

图2 系统硬件框架

2.2 软件设计

Linux操作系统提供了一种Platform 设备驱动的实现方法,就是将硬件设备与驱动程序相分离,通过platform虚拟总线进行连接。论文就是利用这种方法实现DM9000芯片硬件与协议程序的关联。软件设计主要分为以下两步。

(1)增加平台设备,即在Linux内核文件中添加platform_device系统结构体。目的是将DM9000 这一设备硬件的描述文件添加到Linux内核中,使内核在启动时能够识别DM9000以太网芯片。

首先,建立dm9000_resource资源结构体,此结构体有两项数据,分别对DM9000以太网芯片的两个主要资源——内存空间资源和中断资源,做了详细的定义。其中,第一项数据,定义了分配内存资源的起始地址、所占内存空间的大小以及所分配内存空间的标识类型;第二项数据定义了中断号和中断触发方式。

然后,将dm9000_resource结构体变量添加到新创建的platform _device 总线型结构体变量device_dm9000中。此结构体中包含了硬件DM9000的完整信息,包括设备名称、设备ID、资源结构体和访问的数据宽度。其中,DM9000以太网芯片支持8位、16位和32位3种不同的数据访问方式,这里我们根据实际要求选择了16位的访问方式。

最后,把描述平台设备结构体device_dm9000导入到系统变量smdk_devs数组中。该数组存放的是各种平台设备结构体,相当于一个平台设备列表。并且,在启动Linux操作系统后,系统会自动把这个数组中的设备注册进内核中。

这样,经过第一步的一系列操作后,DM9000 这一硬件外设成功注册到Linux内核中。

(2)在POWERLINK 协议源码中添加DM9000的操作函数,包括寄存器访问函数、数据发送函数和中断回调函数等。

首先要增加platform _driver 结构体类型变量EdrvDriver:

然后,在协议栈初始化函数EdrvInit中通过platform_driver_register(&EdrvDriver)完成对EdrvDriver的注册。其中,EdrvInit函数在协议启动阶段被调用。注册过程就是platform 总线以EdrvDriver.driver.name为标准,去遍历之前启动Linux内核时注册到内核的platform_device设备,找到与之名字相同的进行关联。

如果注册成功就会继续执行结构体成员函数EdrvDriver.probe=EdrvInitOne,这个函数将会继续完成软硬之间的关联,主要包括以下几步设置:struct resource* pResource=platform _get _resource (pPlatformDev _p,IORESOURCE_MEM,0);

来获得之前在Linux内核中添加的dm9000以太网芯片的数据线物理地址,也就是dm9000的寄存器物理地址。

m_pIoAddr=ioremap (pResource->start,0x08);

将dm9000寄存器物理地址映射成虚拟地址,因为在Linux操作系统下,读写数据使用的是虚拟地址而不是物理地址。

完成以上两步操作后,便实现结构体platform _device和结构体platform _driver 的关联,从而将DM9000这一设备注册给协议栈。

3 数据通信与测试

3.1 数据通信

POWERLINK 协议利用DM9000芯片作为数据收发接口,完成协议的物理层功能。数据通信过程主要包括数据发送和数据接收两大过程。

用户要传输的数据,经过POWERLINK 网络协议的应用层和数据链路层后,封装成数据包,这个数据包保存在一个分配好存储空间的tEdrvTxBuffer 类型结构体变量pbBuff 中,最终通过EdrvSendTxMsg()函数传送给网络接口。网络接口的任务就是将数据包传送给硬件,完成物理传输。数据发送流程如图3所示。

图3 数据发送流程

网络数据接受过程,是在Linux内核提供的硬件中断请求机制下完成。在协议栈初始化阶段我们已经向内核注册了DM9000设备中断,当DM9000接收到数据后会产生中断信号,内核操作系统会根据我们注册的DM9000中断号来找到协议栈程序中的中断处理函数TgtEthIsr(),在中断函数中处理接收到的数据。图4为数据接收流程。

3.2 通信测试

使用2.6.30 版本的Linux 内核对协议栈程序进行编译,生成可加载协议驱动模块epl.ko,并通过SecureCRT终端软件来观察协议模块的加载和运行情况,如图5所示。

图5表示POWERLINK 主站已经正常运行。

利用装有Wireshark软件的PC机作为测试机,对设计的POWERLINK 工作站发送的数据包进行抓取测试,来检验数据的传输的正确性和实时性。其中,测试器PC机与工作站设备,通过网线连接在一起,并设置二者的IP地址在同一网段内。当主站正常运行时,PC 机上能够成功抓取到工作站传过来的数据包。图6为成功抓取到数据包的Wireshark界面。

图4 数据接收流程

图5 协议栈程序运行

图6 Wireshark截图

为了进一步验证本设计方法在实际应用上的可行性,进一步做主从协议栈之间的通信测试。其中,利用PC机运行虚拟的协议栈程序作为通信主站,我们设计的工作站做从站。主站向从站发送变化的数据,从站接受并显示主站传送过来的数据。图7为二者传输数据的一致性比较,确定主从站之间数据通信的正确性。

图7 主从站之间数据传输

4 结束语

本文介绍了如何在POWERLINK 协议栈源代码的基础上,不改变协议核心层数据链路层的功能,利用platform设备驱动程序设计方法,对协议栈内部物理层程序代码重新设计和编写。并设计制作相应的硬件电路,达到了使用一片普通以太网控制芯片DM9000就可以实现实时以太网POWERLINK 物理层通信的功能要求。通过具体的实验测试,证实了这一设计方法的可行性。

本设计的主导思想,是利用成熟的嵌入式技术,在低投入的条件下,实现了实时以太网POWERLINK 的通信功能,符合工业生产现场安全和高效的要求。

[1]Chowdhury Ali.Application of california ISO transmission economic assessment methodology(TEAM)for the sunrise POWERLINK project [C]//IEEE Power and Energy Society General Meeting,2009:1-5.

[2]LIN Dan,WANG Wenhai.The PC-based communication EPL[J].Journal of Jilin University(Engineering Science),2011(Suppl.):314-318 (in Chinese).[林丹,王文海.基于EPL的上位机通信 [J].吉林大学学报 (工学版),2011 (增刊):314-318.]

[3]Erwinski Krystian,Paprocki.Application of Ethernet power-link for communication in a Linux RTAI Open CNC system[J].IEEE Transactions on Industrial Electronics,2013,60(2):628-636.

[4]ZHANG Huiquan,CHEN Jing,YANG Ruixian.Research on application of Fieldbus control technology [J].China Instrumentation,2010 (9):45-48 (in Chinese). [张会泉,陈靖,杨瑞先.现场总线控制技术应用研究 [J].中国仪器仪表,2010 (9):45-48.]

[5]Lu Shengli,Li Min,Liu Meiling.Design of power windows based on POWERLINK industrial Ethernet[J].Applied Mechanics and Materials,2014,494-495:28-31.

[6]LIU Yang.Strategies for industrial Ethernet POWERLINK time slot control[D].Wuhan:Wuhan University of Technology,2013 (in Chinese).[刘阳.POWERLINK 工业以太网时间槽控制策略研究 [D].武汉:武汉理工大学,2013.]

[7]Gong Maofa,Xu Xinyuan,Liu Jianping.Multi-loop network power grid monitor based on the embedded operating system [J].Advanced Materials Research,2012,468-471:2119-2123.

[8]KONG Dong,ZHENG Jianhong.LWIP transplantation and application on the ARM platform embedded TCP/IP protocol stack [J].Communications Technology,2008 (6):38-40 (in Chinese). [孔栋,郑建宏.嵌入式TCP/IP 协议栈LWIP 在ARM 平台上的移植与应用[J].通信技术,2008 (6):38-40.]

[9]YUAN Anfu,XIA Shengfeng.Based on ARM and Linux DM9000driven by design and implementation of network interfaces[J].Computer Engineering and Science,2011,33 (2):27-31 (in Chinese). [袁安富,夏生凤.基于ARM 和Linux的DM9000网络接口设计及驱动实现 [J].计算机工程与科学,2011,33 (2):27-31.]

[10]Juan Antonio Maestro,Pedro Reviriego.Energy efficiency in industrial Ethernet:The case of powerlink [J].IEEE Tran-sactions on Industrial Electronics,2010,57 (8):2896-2903.

猜你喜欢

物理层通信协议内核
基于K-ML-MPWFRFT的物理层安全传输技术
强化『高新』内核 打造农业『硅谷』
公路联网电子不停车收费系统路侧单元物理层自动测试软件研发
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
基于Z-Stack通信协议栈的红外地温采集电路设计
微生物内核 生态型农资
基于DMX512通信协议的多路转发器设计与研究
基于NS-3的PLC多频通信协议仿真平台设计与实现
多天线物理层安全传输系统性能分析