管 婷,王玉松,宋红霞
(西南交通大学 智能控制与仿真工程研究中心,四川成都610031)
1999年国际电工委员会(IEC)发布了TCN列车通信网络标准IEC 61375-1:1999。TCN标准包括两级总线:车辆总线 (Multifunction Vehicle Bus,MVB)和列车总线(Wire Train Bus,WTB)。MVB用于连接可编程的站及简单传感器/执行机构的车辆总线;WTB则适用于机车车辆经常连挂和解列的列车总线;实时协议(Real Time Protocol,RTP)为一个应用与另一个应用在车辆通信网络上通信提供协议和服务,这两个应用可以位于不同车辆上,在同一车辆上或在同一设备内。RTP可用于WTB和MVB或有相同基本服务的其他总线的通信,只要至少有两条总线同时遵守RTP时就存在路由器。
TCN网关实现WTB列车级网络和MVB车辆级网络间的相互通信,具有消息路由功能。消息路由功能的实现是通过站索引或功能索引来寻址消息的路由途径,将消息从源设备传送到目的设备,实现消息的点对点传输。如果路由没有成功,消息将不能被传送。
一个TCN节点的网络层如图1描述,消息包在网络层的传递分为3种:(1)从该站的传送层到链路层(出境包);(2)从链路层之一到传送层(入境包);(3)在路由器节点中从一个链路层到另一个链路层(中转包)。
网络层将消息包从起始站传送到终点站,使用以下索引提供的映射:站索引、功能索引、组索引、节点索引。消息的网络地址分系统地址和用户地址,系统地址用于标志网络中的一个站,用户地址用于标志网络中的一个功能。
根据消息包的来源,TCN网关的路由分为3种:来自传送层的消息包路由;来自MVB消息包的路由;来自WTB消息包的路由。路由工况如表1所示。
图1 节点的网络层
表1 路由工况
对于出境包,路由算法通过对功能索引表以及站索引表的查找,完成网络地址到链路地址的映射,将数据包发送到MVB或者WTB的链路层直至物理层;对于入境包,路由算法将消息包发送至网络层和传送层之间的队列;对于中转包,路由算法通过查表将包继续转发出去。
TCN网关软件系统架构如图2所示,包括WTB物理层与链路层协议软件、MVB物理层与链路层协议软件、RTP实时协议软件(包括过程数据入网、消息数据通信)、用户应用软件及网络管理软件。链路层接口包括:过程数据链路层接口(LPI)、消息数据链路层接口(LMI)、监视数据链路层接口(LSI);应用层接口包括:过程数据应用接口(AVI)、消息数据应用接口(AMI)、监视数据应用接口(ASI)。
过程数据入网仅包含应用层;消息通信则包含了网络层、传送层、会话层、表示层、应用层,其中网络层实现消息路由功能;传送层提供分包、流量控制和差错控制等服务;会话层实现远程过程的呼叫;表示层没有协议;应用层提供呼叫/应答服务、初始化、缓冲区管理和多播服务。为更好的阐述消息路由算法,首先介绍消息通信机制的实现。
图2 TCN网关软件系统架构
消息通信机制的实现如图3所示,交互流程分析如下:
(1)用户呼叫者调用应用层接口函数am_call_request开始通信。应用层接口函数am_call_request调用传送层函数tm_send_req,请求传送层任务发送消息;当传送层任务发送消息后,释放一个队列信号,通知网络层有消息到达。
(2)网络层接收传送层的指示,调用来自传送层的消息包的路由算法,完成消息包网络地址到链路地址的映射;之后调用链路层接口函数lm_send_request,将消息拷贝至链路层发送队列中,并声明有消息要发送;链路消息进程将发送队列的数据通过实际物理网络发送至目的链路层。
(3)目的链路消息进程接收到消息后,将消息拷贝至消息接收队列中,并调用nm_event_indicate,释放一个队列信号,通知网络层有消息到达。
(4)网络层任务接收到消息到来指示,解析接收到的入境包,处理后将其发送至网络层和传送层之间的队列,并释放一个指示信号,激活传送层任务。
(5)传送层任务处理接收的消息包,直至呼叫消息接收完毕,释放一个邮箱信号,激活应用层任务,继而调用receive_confirm进行接收确认。
应答者的通信过程与呼叫者相似,不再赘述。
图3 消息通信机制的实现
如前面提到的TCN网关路由分3种,消息路由算法对应也分3种:来自传送层消息包的路由算法,来自MVB消息包的路由算法,来自WTB消息包的路由算法。配置站索引表、功能索引表、节点索引表、组索引表等来实现路由索引服务。网络层任务根据指示信号调用相应的路由算法:传送层的发送指示信号触发来自传送层消息包的路由算法;WTB链路层的接收指示信号触发来自WTB消息包的路由算法;MVB链路层的接收指示信号触发来自MVB消息包的路由算法。
以来自传送层消息包的路由算法的设计为例,主要讨论单播过程,其流程见图4,分析如下:
(1)判断是否单播,若非单播则进行多播处理。
(2)判断网络地址类型,若采用系统地址,则标志了终点站;否则需通过功能索引指明终点站。
(3)判断最终节点和下一站的内容,若通信伙伴为同一站时,将不存在路由,并返回错误。否则通过站索引寻址相应的总线地址及总线上的设备地址,确定路由的去向。
(4)构造转发包的链路报头和网络报头,调用相应总线的链路层接口函数,将消息数据最终路由至目的总线的链路层,返回正确。
图4 来自传送层消息包的路由算法
路由算法的测试采用由成都运达轨道交通设备有限公司自主研发的TCN网关,其网关的硬件结构如图5所示。WTB模块完成WTB总线相关功能,并对整个网关的资源进行调配,是网关的“中枢神经”。MVB模块完成MVB总线相关功能,并具有MVB总线管理器的功能。WTB模块和MVB模块之间采用双端口RAM的方式完成数据交换。外围接口包括110 V电源输入、MVB接口、WTB接口、程序下载接口、状态指示灯、复位按钮。
图5 TCN网关硬件结构
为测试消息路由算法,搭建了如图6所示的硬件测试平台,包括3个 TCN网关,8个MVB 4类设备。其中1个TCN网关采用UniControls a.s.公司生产的标准网关,MVB 4类设备采用北车研发中心的MVB设备,均符合TCN标准。网关之间、MVB设备之间分别由WTB电缆和MVB电缆连接。用4位数字表示车辆总线设备的设备地址,用“#”符号加3位数字表示站标志符,用2位数字表示一个节点的地址。TCN网关和MVB设备都设有调试串口,可通过各自的调试串口查看测试过程中设备运行的数据。
图6 硬件测试平台
为了验证路由算法,选用系统地址寻址方式,配置3组实例:
(1)位于不相邻网关的两个站:由挂在节点02上的站#004向挂在节点04上的站#022发送一个消息包。
(2)位于相邻网关的两个站:节点03即站#005向挂在节点04上的站#021发送一个消息包。
(3)位于同一网段下的两个站:由节点04(节点本身也是站,即#018)向挂在节点04上的站#023发送一个消息包。
以上3组测试结果均与预期一致。以第一组实例的测试情况为例,详细分析如下。
第1步,起始站#004发送一个消息数据帧给网关02,通过起始站的设备0033的调试串口截获关心的消息数据,如图7所示。
图7 起始站设备0033发送的消息数据
对应MVB消息数据帧的格式,分析了图7中消息数据内容的含义,见表2。
表2 MVB消息数据帧的内容
第2步,网关节点02对接收到的消息数据帧译码,得到目的节点是 04。网关产生一个寻址节点04的WTB帧,在帧的报头中插入自己的节点地址02作为源地址,通过此网关设备的调试串口截获关心的消息数据,如图8所示。
图8 网关节点02发送的数据
对应WTB消息数据帧的格式,分析了图8中消息数据内容的含义,见表3。
表3 WTB消息数据帧的内容
第3步,网关节点04收到此WTB消息数据帧,得到目标站是#022,从站索引表中查到目标设备0077是挂在MVB2总线上的,网关04建立一个MVB帧,帧中将其设备地址0040作为源设备地址。通过此网关设备的调试串口截获关心的消息数据,如图9所示。
图9 网关节点04发送的消息数据
对应MVB消息数据帧的格式,分析了图9中数据内容的含义,见表4。
表4 MVB2消息数据帧的内容
第4步,目的设备0077收到消息数据帧,根据路由算法,通知传送层处理。通过此目的设备的调试串口截获关心的消息数据,如图10所示。
图10 目的设备0077接收的消息数据
图10中目的设备0077接收的消息数据内容与图9中网关节点04发送的消息数据内容一致,则表明消息数据帧被成功传送至目的设备0077。
设计的消息路由算法通过了试验室的测试,验证了该算法能够依据所收到消息包的网络地址将其传送给目的设备,实现了TCN网关的消息路由功能,初步证明能够实现IEC 61375-1的消息通信协议。后期需要进一步开展TCN网关的一致性测试和现场应用测试工作。
[1] IEC61375-1,Electric Railway Equipment-Train Bus-Part l:Train Communication Network[S].
[2] 刘 军,黄志武,刘群欣.基于Linux系统的MVB 3类设备研究[J].机车电传动,2009,(6):10-12.
[3] 陈为雄,张 闯,黄根生.基于UML TCN网络分析[J].铁道机车车辆,2009,(3):15-18.
[4] 杨卫峰,曾 嵘.DT ECS系统TCN协议的设计[J].机车电传动,2009,(2):21-23.