朱少華,吉凡
(中車南京浦鎮(zhèn)車輛有限公司,江蘇南京,210031)
隨著我國城市軌道交通的迅猛發(fā)展,越來越多的地鐵列車網(wǎng)絡采用以太網(wǎng)TRDP協(xié)議進行通信。以太網(wǎng)大大提升了網(wǎng)絡的帶寬和傳輸速率,提高了信息傳輸能力,但同時存在可靠性、實時性方面的缺陷,可能會影響列車實時控制性能,威脅行車安全,采用TRDP協(xié)議并不能解決這些問題。本文針對SDTv2協(xié)議進行了研究,并通過實際項目應用,實現(xiàn)了地鐵列車重要數(shù)據(jù)安全實時的傳輸。
列車實時數(shù)據(jù)協(xié)議(Train Real-Time Data Protocol,TRDP)是一種列車實時傳輸協(xié)議,定義在IEC61375-2-3的附錄A中。TRDP層位于應用層和傳輸層之間,傳輸層使用TCP/UDP協(xié)議。TRDP報文如圖1所述。
圖1
TRDP協(xié)議通過FCS-32生成多項式對TRDP頭進行CRC校驗,生成頭部校驗碼HeaderFCS,但協(xié)議并未對用戶數(shù)據(jù)段進行校驗。
TRDP協(xié)議過程數(shù)據(jù)有PUSH和PULL兩種模式,常用的是PUSH模式,如圖2所示。
TRDP協(xié)議簡要描述了一下超時判斷機制,并未對數(shù)據(jù)傳輸實時性要求進行詳細規(guī)定。
安全數(shù)據(jù)傳輸協(xié)議(Safe Data Transmission version 2,SDTv2)是一種在應用數(shù)據(jù)層增加安全數(shù)據(jù)傳輸?shù)膮f(xié)議,主要適用于列車以太網(wǎng)通信,也可用于MVB通信。定義在IEC61375-2-3的附錄B中。
圖2
SDTv2提供了在一個安全相關(重要)數(shù)據(jù)源(SDSRC)和一個/多個安全相關數(shù)據(jù)宿(SDSINK)之間的安全通信路徑。該安全通信路徑稱作“SDTv2通道”。SDSRC側SDTv2層的主要任務是添加協(xié)議信息,在發(fā)送之前構成傳輸層數(shù)據(jù)安全傳輸所必需的VDP。SDSINK側SDTv2層確認已接收的VDP,如果確認成功則在SDTv2應用接口呈現(xiàn)已包含的重要數(shù)據(jù)。
圖3
所有安全相關數(shù)據(jù)源(SDSRC)都應由一個源標識符(SID)標識。SID是按照下列數(shù)據(jù)結構,通過SC-32循環(huán)冗余校驗計算得到的一個UINT32值。初始值應為‘FFFFFFFF’H。
SID數(shù)據(jù)格式如圖3所示。
重要數(shù)據(jù)包(Vital Data Packet,VDP)置于TRDP過程數(shù)據(jù)報文的用戶數(shù)據(jù)部分中,數(shù)據(jù)結構如圖4所示。
圖4
VDP數(shù)據(jù)格式如圖5所示。
圖5
SDSRC使用2.1中計算的SID作為初始值,對重要過程數(shù)據(jù)、用戶數(shù)據(jù)版本、安全序列計數(shù)器進行SC-32循環(huán)冗余校驗計算得到SafetyCode,生成VDP發(fā)送出去。SDSINK接收到VDP后,通過TRDP定義的源IP、目的IP、ComId找到對應發(fā)送方,根據(jù)發(fā)送方的預定義信息得到SMI等數(shù)據(jù),使用SC-32計算對應SID,然后用SID作為初始值,對接收到的重要過程數(shù)據(jù)等信息再次使用SC-32計算應該得到的SafetyCode,與實際接收到的SafetyCode進行對比,判斷VDP的是否正確。
SDTv2需要配置下列時間參數(shù):
Ttx_period:VDP發(fā)送周期,為SDSRC定義。
Trx_period:VDP接收(采樣)周期,為SDSINK定義。
Trx_safe:SDSINK未收到新的重要數(shù)據(jù)的最大容忍時間。
Tguard:SDSINK用于檢測出SDSRC冗余組中多個SRSRC處于激活狀態(tài)的時間。
2.3.1 安全數(shù)據(jù)發(fā)送(SDSRC)
SDSRC根據(jù)定義的Ttx_period周期性的發(fā)送VDP,每發(fā)一個VDP安全序列計數(shù)器(SSC)增加1。
冗余SDSRC同一時刻只有一個在發(fā)送VDP,另外一個不發(fā)送。冗余切換時間:
Tred≤ Trx_safe- 2 × max(Ttx_period,Trx_period)
2.3.2 安全數(shù)據(jù)接收(SDSINK)
SDSINK接收并驗證VDP,將驗證通過的數(shù)據(jù)呈現(xiàn)給SDTv2應用程序接口。
2.3.2.1 VDP種類
VDP可以分為以下種類:
正確VDP:SafetyCode校驗正確且用戶數(shù)據(jù)版本正確的VDP。
重復VDP:本次經(jīng)過校驗的SafetyCode與上次經(jīng)過校驗的SafetyCode相同的VDP。
初始VDP:不是重復VDP,或者上電/重啟后第一個正確VDP,或者通信中斷恢復后第一個正確VDP,或者SDSRC冗余切換后第一個正確VDP。
新鮮VDP:正確VDP,且不是初始VDP,且SID是初始SID,且SSC延續(xù)上個初始或新鮮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,呈現(xiàn)給應用程序接口。
2.3.2.3 宿時間監(jiān)測
SDSINK接收到初始VDP之后開始計時,如果在Trx_safe時間內(nèi)收到新鮮VDP,則重新開始計時。當超過該時間未收到新鮮VDP時,SDSINK判斷數(shù)據(jù)接收超時,安全通信丟失,等待再次收到初始VDP后開始計時,安全通信恢復。
2.3.2.4 保護時間檢查
保護時間檢查用于檢測兩個冗余SDSRC均激活的情況。保護時間Tguard應從接收初始VDP之后開始計時,并且持續(xù)時間為Trx_safe的倍數(shù)(可配置)。SDSINK在接收到一個SDSRC初始VDP之后開始計時,如果在Tguard時間內(nèi)收到了其冗余SDSRC的初始VDP,則SDSINK判斷保護時間違反,安全通信丟失。此時保護時間重新開始計時,直到Tguard內(nèi)未收到冗余SDSRC的初始VDP停止計時,安全通信恢復。
2.3.2.5 延遲監(jiān)測
延遲監(jiān)測用于監(jiān)督VDP傳輸?shù)难舆t。在網(wǎng)絡故障的情況下,延遲時間平均值可能會隨時間增加。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 通道監(jiān)測
通道監(jiān)測用于檢測SDTv2通道發(fā)生硬件或者軟件故障后,傳輸故障率突然增加的情況。如果單位時間內(nèi)接收到的帶有不正確SafetyCode的VDP數(shù)量超過預定義的閾值(通道監(jiān)測閾值),則SDSINK判斷通道故障,指示安全通信丟失。當不正確SafetyCode的VDP數(shù)量小于閾值時,安全通信恢復。
無錫3號線智能列車網(wǎng)絡采用實時以太網(wǎng)進行通信,通信協(xié)議為基于TRDP過程數(shù)據(jù)的SDTv2協(xié)議。
本項目將列車網(wǎng)絡系統(tǒng)與各個子系統(tǒng)劃分不同系統(tǒng)編號,根據(jù)系統(tǒng)編號、車輛號、設備號分配設備IP地址、通信組播地址、ComID、SMI等信息,并配置SDTv2時間參數(shù)。
網(wǎng)絡系統(tǒng)與子系統(tǒng)之間通過上述信息和參數(shù)互相收發(fā)數(shù)據(jù),按照SDTv2協(xié)議驗證數(shù)據(jù)的正確性和實時性,實現(xiàn)了列車安全數(shù)據(jù)傳輸。
TRDP定義了通信標識符(Communication Identifier,ComID)作為協(xié)議數(shù)據(jù)單元的獨特標識符。本項目的ComID按表1規(guī)則進行分配(ABCDDE,其中A表示過程數(shù)據(jù)流向)。
SDTv2定義了安全消息標識符(Safe Message Identifier,SMI)作為用戶定義的安全數(shù)據(jù)傳輸標識符。本項目的SMI按表2規(guī)則進行分配(ABCDDEF,其中A表示過程數(shù)據(jù)流向)。
表1
表2
Ttx_period:本項目規(guī)定與TRDP發(fā)送周期一致。
Trx_period:本項目規(guī)定為CPU執(zhí)行周期,注意Ttx_period應為該值的整數(shù)倍,即Ttx_period= N * Trx_period。
Trx_safe:本項目規(guī)定為Ttx_period的5倍,即Trx_safe= 5*Ttx_period。
Tguard:本項目規(guī)定為Trx_safe的10倍,即Tguard= 10 *Trx_safe。
SDTv2協(xié)議在TRDP協(xié)議的基礎上,增加了對數(shù)據(jù)傳輸?shù)恼_性和實時性要求。通過雙重SC-32循環(huán)冗余校驗、VDP有效性檢查、通道監(jiān)測等方式,SDTv2確保了數(shù)據(jù)收發(fā)的正確性。通過宿時間監(jiān)測、保護時間檢查、延遲監(jiān)測等方式,SDTv2確保數(shù)據(jù)收發(fā)的實時性。