0 引言
本文简要介绍TRDP协议栈移植目标系统及其所处位置、工作硬件环境,分析并解决移植之后遇到的问题,指出目前系统后门问题。
VxWorks操作系统是美国风河(Wind River)公司在1983年开发的一款强实时嵌入式操作系统,因具有良好的可靠性、高性能的内核、卓越的实时性以及友好的用户开发环境等使其在嵌入式实时操作系统中独领风*。目前VxWorks广泛应用于高精尖技术及对实时性要求极高的领域中。
以太网技术已经被广泛应用在列车通信网络和车载终端设备,主要是满足大数据量传输的系统,如车载广播系统、视频系统、下载固件程序等,可以减少系统更新时间,提高工作效率。但由于以太网本身的链路层、协议栈的复杂性,其可靠性、网络失效影响及Robust等都还在验证中。国外一些大的轨道设备供货商都已经研制出了相关以太网产品,如庞巴迪研制的完全基于以太网控制的列车已经交付到德国与荷兰开始正式运行;EKE也已经形成了基于EKE-Trainnet IP/Ethernet的完整解决方案;MOXA、UniControls等公司已经研发出符合IEC新标准的ETBN交换机,正在进行调试及一致性测试;株洲机车研究所也已经推出基于ECN与ETB的相关实验室产品,2014年其新一代列车网络控制系统(DTECS-2)产品代表中国在业界首次亮相,并成功通过国际专家组测试考核。
国际标准化组织(IEC)推出了基于以太网的列车通信网络标准,包括列车骨干以太网(Ethernet Train Backbone,ETB,由IEC61375-2-5定义)和编组以太网(Ethernet Consist Network,ECN,由IEC61375-3-4定义)。ETB界定了不同列车编组之间的互连接和互操作规范,而ECN界定了在每个编组内各个终端设备构成的以太网的通信规范。在2015年7月出台了机车车辆使用的工业以太网标准IEC61375-2-3,Edition1.0,其为ECN与ETB的4~7层都将使用专为铁路用途开发的自主协议列车实时数据协议(Train Real-time Data Protocol,TRDP),并通过行业团体TCNOpen以开源的形式公开,可在对应网站https://sourceforge.net/projects/tcnopen/下载其源码,截止到目前,其最新版本为1717。
TRDP协议栈在以太网中所处位置[1]如图1所示。
TRDP协议栈在应用系统中位置如图2所示。
列车中央控制单元(Central Control Unit,CCU)是列车网络控制系统的一个核心部件,负责整个车辆的网络管理和车辆运行控制功能。其硬件部分采用低功耗嵌入式PC/104结构的工业计算机104-1645CLDN-(24B)板卡,集成了AMD LX800CPU、256 MB DDR、一个PC/104扩展接口、一个10/100 Mb/s自适应网口、一个IDE接口、两个串口、USB2.0接口等[2]。
其软件部分主要包括底层系统软件和应用层软件,前者是后者的操作系统平台,在本设计中采用基于x86硬件平台VxWorks操作系统,进行软件IO映射管理、内存管理、任务调度,通过运行相关任务的方式完成和上位机的通信、MVB数据的收发、PLC控制任务、在线监视、运行数据记录、故障记录、列车级速度控制、牵引制动控制等。
由于TRDP源代码开发环境为Wind River Workbench 3.0,对应VxWorks版本为6.6,代码测试硬件为PPC603,因此,不只是开发环境版本高于项目所使用的开发环境,测试硬件架构也不同,所以当需要改变运行环境后就必须考虑TRDP协议栈移植及其带来的新问题。
2 TRDP组播TTL问题
把TRDP协议栈移植到VxWorks 6.5下,编译无误通过。下载到头车CCU中运行,发现尾车CCU收不到对应数据。经研究代码和反复测试及使用以太网工具Wireshark抓包分析发现组播数据报文中TTL(Time To Live)值为1,所以影响数据包通过ETBN(Ethernet Train Backbone Node)到尾车CCU中。
选中setsockopt后按F1查看官方帮助文档[3],其中关于TTL如图3所示。
按照说明重新设置TTL=64: