朱少华,吉凡
(中车南京浦镇车辆有限公司,江苏南京,210031)
随着我国城市轨道交通的迅猛发展,越来越多的地铁列车网络采用以太网TRDP协议进行通信。以太网大大提升了网络的带宽和传输速率,提高了信息传输能力,但同时存在可靠性、实时性方面的缺陷,可能会影响列车实时控制性能,威胁行车安全,采用TRDP协议并不能解决这些问题。本文针对SDTv2协议进行了研究,并通过实际项目应用,实现了地铁列车重要数据安全实时的传输。
列车实时数据协议(Train Real-Time Data Protocol,TRDP)是一种列车实时传输协议,定义在IEC61375-2-3的附录A中。TRDP层位于应用层和传输层之间,传输层使用TCP/UDP协议。TRDP报文如图1所述。
图1
TRDP协议通过FCS-32生成多项式对TRDP头进行CRC校验,生成头部校验码HeaderFCS,但协议并未对用户数据段进行校验。
TRDP协议过程数据有PUSH和PULL两种模式,常用的是PUSH模式,如图2所示。
TRDP协议简要描述了一下超时判断机制,并未对数据传输实时性要求进行详细规定。
安全数据传输协议(Safe Data Transmission version 2,SDTv2)是一种在应用数据层增加安全数据传输的协议,主要适用于列车以太网通信,也可用于MVB通信。定义在IEC61375-2-3的附录B中。
图2
SDTv2提供了在一个安全相关(重要)数据源(SDSRC)和一个/多个安全相关数据宿(SDSINK)之间的安全通信路径。该安全通信路径称作“SDTv2通道”。SDSRC侧SDTv2层的主要任务是添加协议信息,在发送之前构成传输层数据安全传输所必需的VDP。SDSINK侧SDTv2层确认已接收的VDP,如果确认成功则在SDTv2应用接口呈现已包含的重要数据。
图3
所有安全相关数据源(SDSRC)都应由一个源标识符(SID)标识。SID是按照下列数据结构,通过SC-32循环冗余校验计算得到的一个UINT32值。初始值应为‘FFFFFFFF’H。
SID数据格式如图3所示。
重要数据包(Vital Data Packet,VDP)置于TRDP过程数据报文的用户数据部分中,数据结构如图4所示。
图4
VDP数据格式如图5所示。
图5
SDSRC使用2.1中计算的SID作为初始值,对重要过程数据、用户数据版本、安全序列计数器进行SC-32循环冗余校验计算得到SafetyCode,生成VDP发送出去。SDSINK接收到VDP后,通过TRDP定义的源IP、目的IP、ComId找到对应发送方,根据发送方的预定义信息得到SMI等数据,使用SC-32计算对应SID,然后用SID作为初始值,对接收到的重要过程数据等信息再次使用SC-32计算应该得到的SafetyCode,与实际接收到的SafetyCode进行对比,判断VDP的是否正确。
SDTv2需要配置下列时间参数:
Ttx_period:VDP发送周期,为SDSRC定义。
Trx_period:VDP接收(采样)周期,为SDSINK定义。
Trx_safe:SDSINK未收到新的重要数据的最大容忍时间。
Tguard:SDSINK用于检测出SDSRC冗余组中多个SRSRC处于激活状态的时间。
2.3.1 安全数据发送(SDSRC)
SDSRC根据定义的Ttx_period周期性的发送VDP,每发一个VDP安全序列计数器(SSC)增加1。
冗余SDSRC同一时刻只有一个在发送VDP,另外一个不发送。冗余切换时间:
Tred≤ Trx_safe- 2 × max(Ttx_period,Trx_period)
2.3.2 安全数据接收(SDSINK)
SDSINK接收并验证VDP,将验证通过的数据呈现给SDTv2应用程序接口。
2.3.2.1 VDP种类
VDP可以分为以下种类:
正确VDP:SafetyCode校验正确且用户数据版本正确的VDP。
重复VDP:本次经过校验的SafetyCode与上次经过校验的SafetyCode相同的VDP。
初始VDP:不是重复VDP,或者上电/重启后第一个正确VDP,或者通信中断恢复后第一个正确VDP,或者SDSRC冗余切换后第一个正确VDP。
新鲜VDP:正确VDP,且不是初始VDP,且SID是初始SID,且SSC延续上个初始或新鲜VDP的SSC。
有效VDP:新鲜或者重复VDP。
2.3.2.2 VDP有效性检查
SDSINK在收到初始VDP之后,记录下当前SSCi,然后等待接收下一个VDP。如果下一个VDP的SSCi+1范围在:SSCi+1 <= SSCi+1<= SSCi+Trx_safe/ Ttx_period,则为新鲜VDP,如果SSCi= SSCi+1,则为重复VDP。此时SSCi+1作为新的SSCi记录下来,再次等待接收下一个VDP。其他SSC无效。
SDSINK将通过校验正确且SSC新鲜或者重复的VDP判断为有效VDP,呈现给应用程序接口。
2.3.2.3 宿时间监测
SDSINK接收到初始VDP之后开始计时,如果在Trx_safe时间内收到新鲜VDP,则重新开始计时。当超过该时间未收到新鲜VDP时,SDSINK判断数据接收超时,安全通信丢失,等待再次收到初始VDP后开始计时,安全通信恢复。
2.3.2.4 保护时间检查
保护时间检查用于检测两个冗余SDSRC均激活的情况。保护时间Tguard应从接收初始VDP之后开始计时,并且持续时间为Trx_safe的倍数(可配置)。SDSINK在接收到一个SDSRC初始VDP之后开始计时,如果在Tguard时间内收到了其冗余SDSRC的初始VDP,则SDSINK判断保护时间违反,安全通信丢失。此时保护时间重新开始计时,直到Tguard内未收到冗余SDSRC的初始VDP停止计时,安全通信恢复。
2.3.2.5 延迟监测
延迟监测用于监督VDP传输的延迟。在网络故障的情况下,延迟时间平均值可能会随时间增加。SDSINK在接收到新鲜VDP的SSCi之后,对于下个VDP有一个预期SSCE=SSCi+1,实际采样得到的是SSCs,当SSCE-SSCs >=Trx_safe/ Ttx_period时,SDSINK判断延迟时间违反,安全通信丢失。当SSCE-SSCs < Trx_safe/ Ttx_period时,安全通信恢复。
2.3.2.6 通道监测
通道监测用于检测SDTv2通道发生硬件或者软件故障后,传输故障率突然增加的情况。如果单位时间内接收到的带有不正确SafetyCode的VDP数量超过预定义的阈值(通道监测阈值),则SDSINK判断通道故障,指示安全通信丢失。当不正确SafetyCode的VDP数量小于阈值时,安全通信恢复。
无锡3号线智能列车网络采用实时以太网进行通信,通信协议为基于TRDP过程数据的SDTv2协议。
本项目将列车网络系统与各个子系统划分不同系统编号,根据系统编号、车辆号、设备号分配设备IP地址、通信组播地址、ComID、SMI等信息,并配置SDTv2时间参数。
网络系统与子系统之间通过上述信息和参数互相收发数据,按照SDTv2协议验证数据的正确性和实时性,实现了列车安全数据传输。
TRDP定义了通信标识符(Communication Identifier,ComID)作为协议数据单元的独特标识符。本项目的ComID按表1规则进行分配(ABCDDE,其中A表示过程数据流向)。
SDTv2定义了安全消息标识符(Safe Message Identifier,SMI)作为用户定义的安全数据传输标识符。本项目的SMI按表2规则进行分配(ABCDDEF,其中A表示过程数据流向)。
表1
表2
Ttx_period:本项目规定与TRDP发送周期一致。
Trx_period:本项目规定为CPU执行周期,注意Ttx_period应为该值的整数倍,即Ttx_period= N * Trx_period。
Trx_safe:本项目规定为Ttx_period的5倍,即Trx_safe= 5*Ttx_period。
Tguard:本项目规定为Trx_safe的10倍,即Tguard= 10 *Trx_safe。
SDTv2协议在TRDP协议的基础上,增加了对数据传输的正确性和实时性要求。通过双重SC-32循环冗余校验、VDP有效性检查、通道监测等方式,SDTv2确保了数据收发的正确性。通过宿时间监测、保护时间检查、延迟监测等方式,SDTv2确保数据收发的实时性。