摘要:CAN-bus總線在軌道交通、醫(yī)療設(shè)備等行業(yè)得到廣泛應(yīng)用,但工程師們經(jīng)常會(huì)遇到信號(hào)傳輸延遲的問(wèn)題困擾。本文將針對(duì)傳輸延遲問(wèn)題,進(jìn)行詳細(xì)分析,并給出一些可行的解決方案。
由于CAN-bus總線的實(shí)時(shí)性強(qiáng)、抗干擾能力強(qiáng)等特點(diǎn),在軌道交通、汽車電子等行業(yè)得到廣泛的應(yīng)用。伴隨著技術(shù)的升級(jí)和CAN節(jié)點(diǎn)的增加,CAN協(xié)議提供的8字節(jié)數(shù)據(jù)傳輸以及最高1Mbps的波特率已經(jīng)不能滿足工程師的應(yīng)用需求。針對(duì)此現(xiàn)象,CiA協(xié)議聯(lián)合各大車廠,制定出新一代的CAN FD協(xié)議,其主要的內(nèi)容就是將一幀的數(shù)據(jù)段由8字節(jié)提升到64字節(jié),同時(shí)可以提升數(shù)據(jù)段的波特率,以縮短通訊時(shí)間。
在一些行業(yè)中,對(duì)實(shí)時(shí)性要求很高,例如CAN通信在軌道交通制動(dòng)系統(tǒng)中的應(yīng)用,如果CAN-bus總線通訊出現(xiàn)了延遲,會(huì)嚴(yán)重影響軌道交通安全,造成列車運(yùn)行癱瘓,甚至危及人身安全。那么,如何評(píng)估CAN網(wǎng)絡(luò)延時(shí)情況以及如何降低CAN/CAN FD通訊延遲,保證通訊穩(wěn)定呢?接下來(lái),做詳細(xì)介紹。
CAN-bus總線采用多主通信模式、非破壞式總線仲裁機(jī)制。發(fā)送節(jié)點(diǎn)在發(fā)送報(bào)文時(shí),在發(fā)完CRC校驗(yàn)場(chǎng)之后,會(huì)發(fā)出長(zhǎng)度為2個(gè)位的ACK段,如圖1所示。當(dāng)接收節(jié)點(diǎn)正確接收到有效報(bào)文時(shí),就會(huì)在應(yīng)答間隙(ACK SLOT)向發(fā)送節(jié)點(diǎn)發(fā)送一個(gè)“顯性”位來(lái)作為回應(yīng)。發(fā)送節(jié)點(diǎn)檢測(cè)到總線呈現(xiàn)顯性狀態(tài),便認(rèn)為成功發(fā)送報(bào)文。如果發(fā)送節(jié)點(diǎn)沒(méi)有檢測(cè)到有效的顯性位,則認(rèn)為總線錯(cuò)誤。所以,CAN FD信號(hào)延遲的最大時(shí)限是確保發(fā)送節(jié)點(diǎn)在應(yīng)答間隙內(nèi)接收到有效的應(yīng)答信號(hào)。
圖1 ACK應(yīng)答
以1Mbit/s波特率為例,在單次采樣模式下,當(dāng)采樣率為75%時(shí),應(yīng)保證在750ns內(nèi),發(fā)送節(jié)點(diǎn)能夠采集到接收節(jié)點(diǎn)發(fā)出的顯性位,否則會(huì)出現(xiàn)總線錯(cuò)誤。即,延時(shí)總和時(shí)間≤位時(shí)間x采樣點(diǎn)百分比。
工程師們?cè)陂_(kāi)發(fā)設(shè)計(jì)CAN底層硬件時(shí),需要結(jié)合應(yīng)用場(chǎng)景充分考慮延遲帶來(lái)的影響。那么,工程師如何快速評(píng)估CAN網(wǎng)絡(luò)的延時(shí)情況?如圖2所示,是CANScope分析儀抓取的,由于傳輸延遲導(dǎo)致的錯(cuò)誤波形。
圖2 傳輸延遲錯(cuò)誤
由于ACK界定符被前面的應(yīng)答場(chǎng)嚴(yán)重壓縮,導(dǎo)致被某個(gè)節(jié)點(diǎn)識(shí)別為顯性(原本是隱性),所以這個(gè)識(shí)別錯(cuò)誤的節(jié)點(diǎn)后面發(fā)出了錯(cuò)誤幀,進(jìn)行全局通知,讓發(fā)送節(jié)點(diǎn)重新發(fā)送。
CANScope分析儀可以提供傳輸延遲測(cè)量的功能,可以進(jìn)行單幀的延遲測(cè)量,也可以進(jìn)行所有波形的延時(shí)統(tǒng)計(jì)。如圖3所示,可以通過(guò)延遲測(cè)量出導(dǎo)線的等效長(zhǎng)度,即最大延遲÷5ns/m,并給出該波特率下最長(zhǎng)等效傳輸距離。
圖3 CANScope傳輸延遲測(cè)量功能
通過(guò)延時(shí)上限可以了解到,我們需要嚴(yán)格的控制總線上各個(gè)部分造成的延時(shí)時(shí)間,確保延時(shí)時(shí)間總和在一定范圍內(nèi)。接下來(lái),以CAN FD為例,了解一下造成延時(shí)的具體原因。
如圖4所示,CAN FD網(wǎng)絡(luò)上兩節(jié)點(diǎn)之間通信過(guò)程中,CAN FD報(bào)文首先從節(jié)點(diǎn)A控制器發(fā)出,經(jīng)過(guò)隔離器件、CAN FD收發(fā)器發(fā)送到總線上,再通過(guò)一段距離的傳輸依次達(dá)到節(jié)點(diǎn)B的CAN FD收發(fā)器、隔離器件,CAN FD控制器,最后又節(jié)點(diǎn)B發(fā)出ACK顯性應(yīng)答位,重復(fù)上述過(guò)程到達(dá)節(jié)點(diǎn)A。很明顯,整個(gè)過(guò)程中,會(huì)影響信號(hào)傳輸延遲的因素有:CAN FD控制器、隔離方式、收發(fā)器循環(huán)延時(shí)、線纜傳播。
圖4總線節(jié)點(diǎn)通訊結(jié)構(gòu)
CAN FD控制器造成的延時(shí)可以從兩方面分析:
l 軟件延時(shí):在應(yīng)用進(jìn)程中,主CPU將數(shù)據(jù)從CAN FD控制器中讀寫耗費(fèi)的時(shí)間;
l 控制器延時(shí):CAN FD控制器實(shí)現(xiàn)串行化信息所耗費(fèi)的時(shí)間。
這個(gè)過(guò)程中與主控制器、CAN FD控制器、接口芯片等有關(guān),通常情況下,延時(shí)在納秒級(jí)以下,可以忽略不計(jì)。
為了增加信號(hào)傳輸?shù)目煽啃?,通常都?huì)在CAN FD底層硬件設(shè)計(jì)中添加隔離設(shè)計(jì)。隔離器件的添加,帶來(lái)一定的延時(shí)并影響CANFD系統(tǒng)容許的線纜長(zhǎng)度。不同的隔離方式,延時(shí)效果也不同。