VxWorks下TRDP协议栈移植

您所在的位置:网站首页 trdp协议按udp通吗 VxWorks下TRDP协议栈移植

VxWorks下TRDP协议栈移植

2023-09-30 14:03| 来源: 网络整理| 查看: 265

0 引言

    本文简要介绍TRDP协议栈移植目标系统及其所处位置、工作硬件环境,分析并解决移植之后遇到的问题,指出目前系统后门问题。

1 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所示。

qrs1-t1.gif

    TRDP协议栈在应用系统中位置如图2所示。

qrs1-t2.gif

    列车中央控制单元(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所示。

qrs1-t3.gif

    按照说明重新设置TTL=64:

qrs1-cx1.gif

    setsockopt返回错误代码0x16,即非法参数。此时数据包虽然可以发出,但其TTL值仍为默认值,即TTL=1,不符合期望以太网包跨2个以上交换机通信的要求。说明由于VxWorks内核问题,设置TTL时不能安装默认设置方式进行设置。

    继续测试发现setsockopt对单播设置时可以通过sizeof(int)传入第4个参数,而组播时只能用sizeof(char)或直接写入1来传入第4个参数。此时,抓包显示TTL=64,为期望值,而setsockopt返回值亦正确。

    总之,当需要跨多个交换机进行组播数据,需要设置其TTL时,VxWorks 6.5系统底层函数实现有bug,和单播设置TTL时不一样,值得开发者注意。

3 以太网组播数据停止发送问题

    为了保证系统长时间运行稳定可靠,要其连续数百小时不间断工作,从而满足列车长远距离运输的需要。但是在测试过程中出现了CCU运行一段时间(长短不固定)后以太网组播数据停止发送的问题,此时可正常接收数据。

    经研究代码和在代码中增加调试输出语句,发现TRDP协议栈在时间比较上采用宏定义方式,例如:

qrs1-cx2.gif

    该种方式运行的结果是某个时刻后比较结果与实际计算结果相反,导致发送条件不能满足,而且比较失败后会一直都保持这种错误的比较结果,即使被比较的参数已经发生变化还是返回错误的比较结果,从而导致某时刻之后数据停止发送的问题。因此可以断定该版本的VxWorks系统已经将这个比较宏定义函数修改成错误的比较方式。

    注释掉这些宏定义比较函数,并新设计时间比较函数:

    qrs1-cx3.gif

qrs1-cx4.gif

qrs1-cx5.gif

    在读取本地时间时采取获取系统启动后tick个数来作为基准并进行时间暂存,即:

    qrs1-cx6.gif

    即使出现当前tick小于暂存tick时重置tick=0,从而可以保证在出问题时在两个tick之后会自动恢复,同时重新初始化TRDP协议栈。

    经过修改并进行多台设备长时间运行测试,该方式完全可以满足实际系统需要。到目前为止,运行该系统的CCU设备装车几十台(辆),没有再发生一起不发送过程数据的问题。

4 FTP账户问题

    在交叉编译环境下,设置目标机为FTP服务器,使用电脑FTP工具登录,并传输文件到目标机进行软件开发测试时会非常方便。VxWorks也提供该项功能,设置也比较简单:在工程中双击Kernel Configuration即可打开组建配置界面,在Network Components--Network Applications--FTP Components中即可找到FTP组件,添加FTP Server后,对其进行相应设置,保存重新编译后即可使用了,见图4。

qrs1-t4.gif

    若想限制FTP登录人员,可以设置账号密码,设置方式为在Network Components下,Network Authentication Components组件下,IPCOM authentication configurations下有Auth configuration #1~#6,最多可以设置6个账号密码,见图5。每当需要登录FTP时,可选择任意一个账号登录。当不设置任何账号密码时默认为匿名登录,只可查看及下载数据,不可进行上传、修改、删除等操作。

qrs1-t5.gif

    但是在实际中,只要添加FTP组件后就会有一个管理员账户,其用户名和密码并不复杂,况且该账号密码并不会在组件配置界面显示。只要知道目标机IP(此并非难事),使用该账号密码均可通过FTP登录目标机,并可进行任何操作,危险系数较大。经过多次测试,该账号密码广泛存在于VxWorks 6.5版本中。

5 结论

    本文首先阐述了TRDP协议栈所处的软硬件系统环境,解决了其从VxWorks高版本、Power PC平台移植到VxWorks低版本、X86平台下遇到的问题;其次针对以太网组播数据有时发送失败原因进行了分析与解决;最后指出并测试出VxWorks 6.5系统下的FTP组件确实存在后门问题。该协议栈已经在动力集中动车组中应用,经过历时两年的考验,在北京东郊铁科院环铁试验场的环线测试及重庆北-赶水东线路试验,到兰州局20万公里运用考核,该方案稳定可靠。以上均是基于作者在课题研究中遇到的问题并在解决问题后的经验总结,并提供一些解决问题的思路,希望对读者有所帮助。

参考文献

[1] IEC61375-2-3 Electronic railway equipment-Train communication network(TCN)-Part 2-3:TCN communication profile(IEC 61375-2-3 Edition 1.0)[S].2015.

[2] 任宝兵.城轨车辆中央控制单元设计[D].大连:大连理工大学,2014.

[3] VxWorks OS Libraries API Reference 5.5(Edition 2)[S].2003.

作者信息:

周浩尚1,2,高照玲3

(1.中车大连电力牵引研发中心有限公司,辽宁 大连116052;

2.动车组和机车牵引与控制国家重点实验室,辽宁 大连116052;3.大连东软信息学院 电子工程系,辽宁 大连116023)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3