万沈文,吴海然,方立,吴忠兵,闫渠成
(上海振华重工电气有限公司,上海 200125)
:动力定位系统主要用来解决船舶深海动力定位问题,系统对网络实时性和安全性有着极高的要求。同时动力定位系统网络节点多且网络结构复杂,部分单元控制器和数据采集器往往需要收发两个网络的数据。在深入比较分析各种实时以太网的基础上,选择了具有实时性和安全性的工业以太网POWERLINK为研究对象,采用ZYNQ为硬件平台,提出了在ZYNQ上建立两个MicroBlaze软核分别运行两个独立POWERLINK协议的新方法。该方法能解决控制器双网络平台复用问题,同时还能实现POWERLINK主从站的任意组合,达到优化网络结构和降低成本的效果。最后组建了POWERLINK双协议网络并利用wireshark进行抓包测试,测得两组网络实际参数与设计参数相同且数据交互传输正确,实验结果证明了该方案的可靠性和正确性。
:POWERLINK;双协议;ZYNQ;动力定位系统
:TP23;TP393.11文献标识码:ADOI: 10.19358
引用格式:万沈文,吴海然,方立,等.基于ZYNQ的POWERLINK双协议组网研究与实现[J].微型机与应用,2017,36(9):67-70,77.
0引言
动力定位系统(Dynamic Positioning System,DPS)通过实时检测船舶的实际位置与目标位置的偏差,计算出使船舶到达目标位置所需推力的大小,并对船舶上各推进器进行推力分配控制,从而使船尽可能地保持在所要求的位置和方向上[1]。船舶动力定位控制系统对安全性和实时性要求非常高,一旦出现故障,将带来巨大的经济损失和安全问题。此外动力定位系统网络节点多且网络结构复杂,部分控制器和数据采集单元往往要收发两个网络的数据。在比较各种实时以太网[23]后选择POWERLINK来作为动力定位控制系统的实时以太网。
目前,POWERLINK的研究集中在协议性能分析与应用等方面,在国内主要用于CNC和机器人[4]以及安全控制等领域[5]。而POWERLINK在多网络平台下的使用研究较少,北方自动控制技术研究所研究的双层POWERLINK网络网关采用的双芯片架构(MCU+FPGA)主要用于实现两组网络传输同步性问题[6],但对单FPGA芯片上实现双网络和数据传输问题未做出相关研究。国外研究方面意大利帕多瓦大学的L.Seno等人将POWERLINK应用于报警处理系统[7];法国格勒诺布尔大学的
A.Soury等人将POWERLINK和openSAFETY结合使用在电梯网络化控制系统中[8]。以上多为研究POWERLINK分布式组网、安全性冗余设计及POWERLINK仿真[911],对双网络组网模式研究较少。
本文对船舶动力定位控制系统网络进行了研究,分析网络拓扑图的结构。根据控制单元和数据采集单元的使用情况,设计了一种以ZYNQ和PHY芯片为硬件平台,并在ZYNQ上建立两个MicroBlaze软核独立运行POWRLINK协议。最后用wireshark分别对两组网络进行抓包测试,网络测试参数与网络设计参数一致,验证了设计方案的正确性和可靠性。
1动力定位系统网络结构分析
如图1所示动力定位系统网络结构主要分为3层:信息层、控制层及设备层。信息层主要是由计算机组成,在整个系统中主要是控制各个设备的信息传输显示设备的运行状态。控制层主要由控制器和工业以太网组成,其中CU为控制单元器,DAU为数据采集器。CU主要负责解析指令、算法执行和数据通信,DAU主要负责采集外接设备如风传感器、无线电系统、推进器等数据信息。设备层主要是由艏向传感器、动力系统和推力系统等组成。
POWERLINK网络中负责管理总线使用权的节点被称为POWERLINK管理节点(Managed Node,MN),通常称为主站。网络上的所有可用节点都由管理节点管理操作,一个POWERLINK网络只能有一个管理节点。仅在MN分配的通信时隙内发送报文的所有其他节点被称为受控节点(Controlled Node,CN), 通常称为从站[12]。从站的数据收发,完全由主站控制。
动力定位系统设备数量多、网络结构复杂,部分控制器和数据采集单元往往要收发两个网络的数据。如图2所示,CU1、CU2、CU3将指令和算法下发到DAU1、DAU2、DAU3中,在此网络中CU1、CU2、CU3作为主站使用,DAU1、DAU2、DAU3作为从站使用。
动力定位系统的单元控制器大多作主站使用,但在部分网络中控制器在特殊情况下被当作从站使用。如图3所示,该网络中CU1为主站,CU3为从站接受CU1发出的控制指令和算法,然后再将指令和算法转发给DAU4。
从以上两组网络拓扑图中可以看出,CU3在第一种网络中作主站使用,在第二种网络中作从站使用。换而言之,CU3需要分别运行POWERLINK主从站两种协议才能实现该功能。
2系统设计
2.1硬件设计
考虑到控制器功能复杂以及FPGA资源等问题,故选择Xilinx公司的ZYNQ作为硬件平台。除了ZYNQ之外,实现POWERLINK通信节点还需要如下硬件:
(1)一片512 MB×8 bit的NAND Flash芯片S34ML04G100TFI,用作存储POWERLINK程序和文件系统。
(2)两片128 MB×16 bit的DDR3芯片MT41J128M16HA125IT,作为运行POWERLINK协议栈所需要的外部内存。
(3)POWELRINK是通过节点地址来寻址的,每个节点都有一个NodeID,需要一个8 bit拨码开关来设置节点的NodeID。
(4)网络总路数为两路,选择两片型号为88E1111的芯片作为PHY芯片。采用IO接口较少的RMII(Reduced Medium Idependent Interface)模式作为PHY的工作模式。在PHY芯片上再外接两个RJ45的网口,每路端口均提供通信与watchdog状态指示LED。
(5)50 MHz的晶振为FPGA和整个硬件系统提供时钟源。
(6)JTAG接口用于软件的调试和程序的下载。
硬件系统框图如图4所示。
2.2软件设计
目前常用的POWERLINK方案有两种:基于MCU/CPU的C语言方案和基于FPGA的Verilog HDL方案。POWERLINK是一种基于C语言的方案,如果运行于FPGA中需要在FPGA内实现一个软处理器,如MicroBlaze[13]。
POWERLINK双协议实现需要在嵌入式处理器中选择AXI system下的Dual MicroBlaze Processor System模式,对每个MicroBlaze的时钟频率和Local Memory size进行设置,一般情况下Local Memory设置为8 KB。POWERLINK内部总共使用了两种总线,一种是AXI总线,另一种是LMB总线。AXI(Advanced eXtensible Interface)总线是一种高带宽、低延迟的总线,主要用在片内两个主从设备的数据传输上。LMB(Local Memory Bus)是本地内存总线,用于内存总线访问存放指令和数据的片上块RAM。内存总线有指令内存总线(ilmb)和数据内存总线(dlmb)两种,分别用于处理器指令和数据接口。
如图5所示系统采用AXI总线作为系统的通信结构,axi2axi_connector实现AXIlite总线上的slave共享,两个MicroBlaze核之间协同处理共享slave。总线上挂处理器通信模块Mailbox和处理器同步模块Mutex。
两个MicroBlaze各自有一个BRAM用来存储处理器私有的指令和数据。表1列出了双MicroBlaze中系统结构的主要模块。如图6所示将两个POWERLINK IP核的数据和寄存器引脚S_AXI_MAC_PKT和S_AXI_MAC_REG以及两个MicroBlaze软核数据端口M_AXI_DP共同连至ZYQN内部axi2axi_connector IP上。POWERLINK IP中主要包含物理层HUB和MAC,不同的IP核包含POWERLINK不同的组网模式,组网模式主要有环形、星形和菊花链形等。
设置完XPS中的MicroBlaze、bram和AXI总线后将硬件设计导出至SDK软件中,
在SDK中导入POWERLINK开源程序后建立BSP(Board Support Package)达到软件在硬件主板上运行的目的。程序需要配置各站的节点号、通信周期、数据量,并将应用程序变量和对象字典对应的对象关联起来,需要修改的部分如下:
(1)主站节点号、通信周期和数据量设置:
#define NODEID0xF1//主站节点号为241
#define CYCLE LEN 800//通信周期设置为800 μs
#define CONFIG_TX_PAYLOAD 250//发250 B
#define CONFIG_RX_PAYLOAD 250//收250 B
(2)对象字典主要参数包括索引、子索引、对象类型、访问类型和数据类型等,具体如下:
EPL_OBD_SUBINDEX_RAM_VAR(0x6000, 0x00, kEplObdTypUInt8, kEplObdAccConst, tEplObdUnsigned8, NumberOfEntries, 0x01)
其中0x6000是索引;0x00是0x6000的子索引;kEplObdTypUInt8是8 bit无符号对象类型;kEplObdAccConst是访问类型;tEplObdUnsigned8是8 bit无符号数据类型;NumberOfEntries是索引名字;0x01是默认值。
设置对象字典参数时根据自己的需要主要修改索引、子索引和数据类型的值。
(3)POWERLINK通过对象字典中的Object数据封装和解析数据帧,在demo_main.c程序中有DigitalIn_Domain1和DigitalOut_Domain1两个变量。主站周期性地把DigitalIn_Domain1变量值发送给节点1,周期性地把从节点1收到的值存入到变量DigitalOut_Domain1中。
//将接收的数据放入变量DigitalIn_Domain1中
ObdSize = CONFIG_RX_PAYLOAD;
uiVarEntries = 1;
EplRet = EplApiLinkObject(0x6100, DigitalIn_Domain1, &uiVarEntries, &ObdSize, 0x01);
if(EplRet != kEplSuccessful)
{
goto ExitShutdown;
}
POWERLINK网络IP地址最后三位为POWERLINK节点号,因此设置时节点号不能重复。根据节点号可将POWERLINK程序分主站程序和从站程序,编写脚本文件将主站与主站、主站与从站、从站与从站3种模式组合成3个文件,根据应用需求通过JTAG下载至硬件系统中。
3系统测试及结果分析
POWERLINK通信过程比较复杂,为了能更好地测试双协议运行情况,搭建了一组主站运行双协议的POWERLINK网络,如图7所示。主站的两个网口各自接入不同的HUB中,其中一个HUB接入从站节点1,通信周期为500 μs,数据量为250 B。另一个HUB接入从站节点2和从站节点3,通信周期为800 μs,数据量为250 B。在PC上运行wireshark软件接入网络中进行测试,这样能从抓包数据中明显看出两组数据的区别及各网络的运行情况。
图8中主站240与从站1通信数据量为250 B,POWERLINK通信周期为两个相邻SOC帧时间间隔,即500 μs。图9中主站240与从站2和从站3通信数据量为250 B,通信周期为800 μs。两个网络的从站节点号、通信周期和数据量均与实验设计参数一致,故双协议网络通信正常,能实现POWERLINK网络。
从图10和图11中可以得知,经过长时间多次测试数据前三位均为0,没有出现错误计数现象,说明POWERLINK双协议运行数据传输正确。
4结束语
本文以动力定位系统为应用背景,针对动力系统网络结构复杂,单个控制器在两个网络中同时使用这一情况,深入研究POWERLINK原理及协议,提出了以ZYNQ为硬件平台,在双MicroBlaze软核平台上分别运行POWERLINK协议的方法,然后搭建测试网络从节点号、通信周期、数据量和数据出错率衡量双协议网络的正确性和稳定性。经过多次测试得到实验实际参数与实验设计参数一致且数据交互传输正确这一结论,验证了该方案的可行性。
参考文献
[1] FOSSEN T I.Guidance and control of ocean vehicles[M].John Wiley & Sons. Ltd,Chichester,1994.
[2] 单春荣, 刘艳强, 郇极. 工业以太网现场总线EtherCAT及驱动程序设计[J]. 制造业自动化, 2007, 29(11):79-82.
[3] 谢经明, 陈幼平, 周祖德,等. SERCOS总线协议及其在数控系统中应用[J]. 机械与电子, 2001(5):3-5.
[4] 刘争明, 王钦若, 万振磊. 基于工业以太网Ethernet Powerlink和ARM9的伺服控制系统的设计[J]. 工业控制计算机, 2011, 24(4):55-56.
[5] MOYNE J R, TILBURY D M. The emergence of industrial control networks for manufacturing control, diagnostics, and safety data[J]. Proceedings of the IEEE, 2007, 95(1):29-47.
[6] 赵经时, 史贵林, 张静怡,等. 一种双层Powerlink网络的网关[J]. 火力与指挥控制, 2015(7):180-183.
[7] SENO L, VITTURI S, ZUNINO C. Analysis of Ethernet powerlink wireless extensions based on the IEEE 802.11 WLAN[J]. IEEE Transactions on Industrial Informatics, 2009, 5(2):86-98.