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