徐蔚中
摘 要 在當(dāng)前軌道交通車輛列車控制與診斷系統(tǒng)中,將TCN掛載在RS-485通信總線上的系統(tǒng)或設(shè)備接入到MVB總線或者列車以太網(wǎng)仍是一項關(guān)鍵的技術(shù)項點,并且不同總線和網(wǎng)絡(luò)的接口轉(zhuǎn)換實現(xiàn)效果將影響網(wǎng)絡(luò)通信的質(zhì)量。本文從TCN工程應(yīng)用項目中遇到的RS-485總線網(wǎng)絡(luò)接入MVB總線網(wǎng)絡(luò)的實際問題點出發(fā),重點關(guān)注RS-485通信的半雙工主從通信模式的特點,主要討論應(yīng)用層面的半雙工主從通信需要掌握和注意的關(guān)鍵技術(shù)要點,以及介紹其在TCN項目中起到的作用。
關(guān)鍵詞 RS-485 半雙工 主從通信 總線數(shù)據(jù)碰撞 通信質(zhì)量
中圖分類號:TN91 文獻標(biāo)識碼:A 文章編號:1007-0745(2022)01-0022-03
當(dāng)今列車通信網(wǎng)絡(luò)(TCN,Train Communication N-
etwork)正朝著高速率、多功能、大數(shù)據(jù)量等方向飛速發(fā)展,與現(xiàn)代社會互聯(lián)網(wǎng)應(yīng)用和信息科技領(lǐng)域的發(fā)展趨勢相吻合。目前行業(yè)內(nèi)的TCN主要是基于多功能車輛總線(MVB,Multifunction Vehicle Bus)和絞線式列車總線(WTB,Wire Train Bus)來實現(xiàn)[1],并且正朝著基于列車實時數(shù)據(jù)協(xié)議(TRDP,Train Real-time Data Protocol)的以太網(wǎng)通訊網(wǎng)絡(luò)(ECN,Ethernet Consist N-
etwork)方向發(fā)展和推廣。與此同時,在實際的TCN應(yīng)用中,由于技術(shù)、成本等原因,還可能存在著其他形式的現(xiàn)場總線網(wǎng)絡(luò)介質(zhì)和接口。RS-485通信就是其中一種,由于其雙絞線式總線成本低廉、抗干擾力較強、傳輸速率較高、便于實現(xiàn)等特點,仍有著較為廣泛的應(yīng)用。本文將結(jié)合工程項目中的實踐經(jīng)驗,對RS-485主從通信接口轉(zhuǎn)換技術(shù)要點進行研究和分析,形成公式,便于理解其技術(shù)要點,并助力于工程應(yīng)用設(shè)計開發(fā)。
1 基本原理和項目實踐介紹
實際項目運用的接口示意簡化圖如圖1所示,主設(shè)備Master和從設(shè)備Slave均有兩個冗余接口(Port1和Port2),接口均為UART(通用異步收發(fā)器)。主、從設(shè)備上的每個接口均通過RS-485總線與對方設(shè)備的對應(yīng)接口連接,總線為差分?jǐn)?shù)據(jù)傳輸方式,半雙工通信。主、從設(shè)備間通過Port1連接組成通道1,通過Port2連接組成通道2。
需要主從通信雙方協(xié)商確定的接口設(shè)置主要有表1所示幾項(參數(shù)為示例值)。
示例為半雙工主從通信機制,僅Master設(shè)備能夠根據(jù)應(yīng)用層協(xié)議,輪詢周期每50ms主動發(fā)出一個數(shù)據(jù)幀,作為通信請求。Slave設(shè)備在收到Master設(shè)備的請求數(shù)據(jù)幀后,經(jīng)過呼吸時間延時,根據(jù)應(yīng)用層協(xié)議發(fā)出響應(yīng)數(shù)據(jù)幀進行回復(fù)響應(yīng)[2]。Master的請求數(shù)據(jù)幀將同時從通道1和通道2發(fā)送至Slave設(shè)備,Slave設(shè)備默認(rèn)從通道1進行響應(yīng)回復(fù)。Slave設(shè)備如果連續(xù)5個輪詢周期(250ms)內(nèi)均未收到Master設(shè)備的請求數(shù)據(jù)幀,則切換至通道2進行回復(fù)響應(yīng)。若Master設(shè)備在連續(xù)10個輪詢周期(500ms)內(nèi)均未收到Slave設(shè)備的響應(yīng)回復(fù),則視為通信異常。
上述UART接口配置中的數(shù)據(jù)格式即為RS-485通信的數(shù)據(jù)層協(xié)議。每次即將開始傳送一個字符時,先發(fā)出一位邏輯“0”信號作為起始位,隨后開始數(shù)據(jù)傳輸(本示例項目為8位)。奇偶校驗位通過將該bit位置位為邏輯“1”或“0”,來控制數(shù)據(jù)中的邏輯“1”的數(shù)量為偶數(shù)(偶校驗)或奇數(shù)(奇校驗),本示例項目不配置奇偶校驗位。
本字符傳輸結(jié)束后,隨即發(fā)出1位、1.5位或2位高電平,作為字符傳輸結(jié)束的標(biāo)志。由于數(shù)據(jù)是在傳輸線上定時的,并且每一個設(shè)備都有其自己的時鐘,很可能在通信中兩臺設(shè)備間會出現(xiàn)細(xì)微的不同步現(xiàn)象。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供設(shè)備收發(fā)接口校正時鐘同步的機會,適用于停止位的位數(shù)越多,不同時鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時也越慢。
實際項目中應(yīng)用層另需雙方定義應(yīng)用層的數(shù)據(jù)通信協(xié)議,示例Master設(shè)備發(fā)送至Slave設(shè)備的請求數(shù)據(jù)幀協(xié)議為30個字節(jié),Slave設(shè)備發(fā)送至Master設(shè)備的響應(yīng)數(shù)據(jù)幀協(xié)議為10個字節(jié),幀頭和幀尾標(biāo)識均為固定值,數(shù)據(jù)幀的序號為0-255逐幀增加,累計至255后重新賦值為0,以便區(qū)分不同數(shù)據(jù)幀。CRC校驗結(jié)果為針對B1至B26/B6數(shù)據(jù)的循環(huán)冗余校驗結(jié)果(具體校驗算法可結(jié)合實際確定)。
2 存在的問題與初步分析
在實際項目運用中,發(fā)現(xiàn)存在偶發(fā)性通信異常問題,導(dǎo)致應(yīng)用業(yè)務(wù)故障,獲取實際總線數(shù)據(jù)發(fā)現(xiàn)數(shù)據(jù)存在錯亂的情況。
正常情況下在50ms的輪詢周期中,應(yīng)為Normal所示每個輪詢周期一幀請求數(shù)據(jù)后跟隨一幀響應(yīng)數(shù)據(jù)的情況。而異常情況下,會出現(xiàn)Error所示三種情形:1、請求數(shù)據(jù)后跟隨多幀響應(yīng)數(shù)據(jù);2、請求數(shù)據(jù)后無響應(yīng)數(shù)據(jù);3、數(shù)據(jù)錯亂,數(shù)據(jù)幀不完整。
結(jié)合基本原理和項目實際情況分析,由于RS-485半雙工通信的特點,總線上同一時間僅能夠供給1個設(shè)備發(fā)送數(shù)據(jù),所以需采用主從輪詢的方式進行通信[3]。某一設(shè)備在檢測到總線上有數(shù)據(jù)傳輸時,應(yīng)不允許自身數(shù)據(jù)發(fā)送。若同一時間雙方或多方設(shè)備同時發(fā)送數(shù)據(jù),則在總線上會出現(xiàn)數(shù)據(jù)碰撞的情況,導(dǎo)致數(shù)據(jù)錯亂。此處的異常情形3即為主從雙方設(shè)備同時發(fā)送數(shù)據(jù),導(dǎo)致主設(shè)備的輪詢數(shù)據(jù)無幀頭(數(shù)據(jù)碰撞導(dǎo)致數(shù)據(jù)錯亂)。異常情形1為從設(shè)備自身未考慮半雙工通信的特點,在收到主設(shè)備請求數(shù)據(jù)后多次重復(fù)發(fā)送響應(yīng)數(shù)據(jù)。異常情形2為從設(shè)備采樣檢測請求數(shù)據(jù)周期不滿足要求,以及接收到的主設(shè)備請求數(shù)據(jù)錯誤或不完整,導(dǎo)致無法正確發(fā)出響應(yīng)數(shù)據(jù)。
因此在實際的運用實踐中,需結(jié)合通信方式和實際配置的特點,對涉及的接口參數(shù)和程序開發(fā)形成正確引導(dǎo)[4],故對此類通信接口的特性展開研究是很關(guān)鍵的。
3 細(xì)化分析與研究
示例的半雙工主從通信過程示意圖如圖2所示,描述了一個通用示例周期的主從通信過程。在每個通信輪詢周期中,主設(shè)備傳輸完一幀請求數(shù)據(jù),且從設(shè)備正確接收后,應(yīng)反饋且僅反饋一次響應(yīng)數(shù)據(jù)幀。圖中標(biāo)出了各個關(guān)鍵時間參數(shù),其值為示例值。圖中參數(shù)具體含義如表2所示。
由于實際的程序運行和數(shù)據(jù)傳輸時間等都存在難以避免的誤差,所以實際情況下上述所有參數(shù)都是理論值。尤其是主設(shè)備的tRound與從設(shè)備的tCheck之間不可能完全同步,導(dǎo)致二者時間會存在著各種程度的錯位(圖中體現(xiàn)為tCheck與tRound開始、結(jié)束時間點的錯位),因此需考慮最差情況下的通信情形,以明確tCheck的參數(shù)設(shè)置要求。
分析可知,各參數(shù)之間應(yīng)滿足以下關(guān)系:
tBlind+n*tCheck+tResponse≤tRound(n≥1)
tResponse≥tBreath+tAck
另外,理論上tBlind≤tReq,最差情況下出于預(yù)留應(yīng)考慮tBlind≥tReq。
現(xiàn)擬定擬定tBlind=tReq tCheck,tResponse= tBreath+ tAck,可得知tCheck應(yīng)滿足:
tCheck≤(tRound-tBlind-tResponse)/n(n≥1)
其中tReq與tAck需根據(jù)通信接口波特率設(shè)置、數(shù)據(jù)傳輸格式和應(yīng)用層協(xié)議數(shù)據(jù)幀長度進行計算。例如示例項目波特率為38.4kbps,傳輸每個字符(Byte)需消耗1個起始位,8個數(shù)據(jù)位和1個停止位,共計10bit。請求數(shù)據(jù)幀為30Byte,響應(yīng)數(shù)據(jù)幀為10Byte,可得知傳輸請求數(shù)據(jù)幀和響應(yīng)數(shù)據(jù)幀分別需要7.8125ms和2.6042ms。
為便于計算與預(yù)留時間余量,設(shè)定tReq=10ms,tBreath+tAck=10ms,則示例中tCheck最大設(shè)置值(n=1時)應(yīng)滿足tCheck≤30ms。且從設(shè)備應(yīng)保證每次正確接收完請求數(shù)據(jù)后僅發(fā)送一幀響應(yīng)數(shù)據(jù)。
4 結(jié)語
通過對RS-485通信的原理及應(yīng)用情景介紹和研究,深入了解了其在實際應(yīng)用中的實現(xiàn)方式和技術(shù)要點,結(jié)合工程實踐指出了在工程項目實踐中需要避免的問題點,分析研究了通信接口應(yīng)用參數(shù)的關(guān)系,最終以公式化的形式總結(jié)出其限制條件,對應(yīng)用開發(fā)形成了引導(dǎo)性結(jié)論。在應(yīng)用實踐中可參考本文內(nèi)容進行設(shè)計和問題排查,避免工程應(yīng)用中出現(xiàn)設(shè)計問題導(dǎo)致的通信故障和功能缺陷,提高應(yīng)用工程的效率和穩(wěn)定性,保障實踐應(yīng)用的安全。
參考文獻:
[1] 劉濤.帶有RS485轉(zhuǎn)換功能的一類網(wǎng)卡設(shè)計與實現(xiàn)[D].大連:大連理工大學(xué),2006.
[2] 趙亮,張吉禮.提高RS485總線通信可靠性的優(yōu)化設(shè)計方法[J].大連理工大學(xué)學(xué)報,2015,55(04):393-398.
[3] 陳航,嚴(yán)帥,劉勝,等.基于RS485總線的分布式高精度數(shù)據(jù)采集系統(tǒng)[J].儀表技術(shù)與傳感器,2021(02):71- 74,79.
[4] 柏思忠.基于RS485數(shù)據(jù)幀計時的總線設(shè)備間距離測量[J].工礦自動化,2021,47(07):92-97,114.