《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 基于主控同步的CAN總線多點實時數(shù)據(jù)采集技術(shù)
基于主控同步的CAN總線多點實時數(shù)據(jù)采集技術(shù)
2016年微型機與應(yīng)用第18期
王軍1,2,,曾獻輝1,2
1. 東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 201620; 2.數(shù)字化紡織服裝技術(shù)教育部工程研究中心,,上海 201620
摘要: RS-485總線與CAN總線是工業(yè)現(xiàn)場數(shù)據(jù)采集最常用的有線組網(wǎng)方式,,它們均有各自的局限性,。針對一類多節(jié)點網(wǎng)絡(luò)的數(shù)據(jù)實時采集問題,提出了基于主控同步的CAN總線多點實時數(shù)據(jù)采集技術(shù),,將RS485總線主控思想應(yīng)用于CAN總線的數(shù)據(jù)通信中,,通過對各節(jié)點發(fā)送數(shù)據(jù)時間的同步,有效地避免了節(jié)點間數(shù)據(jù)沖突問題,。實驗結(jié)果證明了該方案能有效地提高數(shù)據(jù)傳輸?shù)膶崟r性和可靠性,,解決了CAN總線訪問沖突。
Abstract:
Key words :

  王軍1,2,,曾獻輝1,2

 ?。?. 東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 201620; 2.數(shù)字化紡織服裝技術(shù)教育部工程研究中心,,上海 201620)

       摘要:RS-485總線與CAN總線是工業(yè)現(xiàn)場數(shù)據(jù)采集最常用的有線組網(wǎng)方式,,它們均有各自的局限性。針對一類多節(jié)點網(wǎng)絡(luò)的數(shù)據(jù)實時采集問題,,提出了基于主控同步的CAN總線多點實時數(shù)據(jù)采集技術(shù),,將RS485總線主控思想應(yīng)用于CAN總線的數(shù)據(jù)通信中,,通過對各節(jié)點發(fā)送數(shù)據(jù)時間的同步,有效地避免了節(jié)點間數(shù)據(jù)沖突問題,。實驗結(jié)果證明了該方案能有效地提高數(shù)據(jù)傳輸?shù)?a class="innerlink" href="http://forexkbc.com/tags/實時性" title="實時性" target="_blank">實時性和可靠性,,解決了CAN總線訪問沖突。

  關(guān)鍵詞:數(shù)據(jù)采集,;CAN總線,;主控同步;實時性

0引言

  現(xiàn)場數(shù)據(jù)采集一般有CAN總線與RS485總線[1]兩種有線組網(wǎng)方式,,但是RS485采用主從多址輪詢的方式,,實現(xiàn)多址接入,輪詢周期隨著節(jié)點數(shù)量的增大而加長,,影響數(shù)據(jù)傳輸?shù)膶崟r性,。而CAN總線是一種有效支持分布式控制或?qū)崟r控制的串行通信網(wǎng)絡(luò),它可靠性高,,且網(wǎng)絡(luò)內(nèi)的節(jié)點個數(shù)在理論上不受限制,,各節(jié)點之間實現(xiàn)自由通信。CAN總線[2-3]具有多主發(fā)送,、采用確定性的優(yōu)先級仲裁機制等特點,,保證了CAN總線數(shù)據(jù)通信的可靠性、實時性和靈活性,。在數(shù)據(jù)通信過程中,,如果出現(xiàn)碰撞,低優(yōu)先級的節(jié)點會主動退出,,而最高優(yōu)先級的節(jié)點可以不受影響繼續(xù)傳輸數(shù)據(jù),,從而大大節(jié)省了總線訪問沖突[45]仲裁時間,保證了傳輸數(shù)據(jù)的實時性,。但是,,在數(shù)據(jù)采集這種特殊環(huán)境下,由于各個節(jié)點的數(shù)據(jù)的優(yōu)先級都是相同的,,因此本文在標準CAN總線的基礎(chǔ)上,,結(jié)合RS485的工作模式,提出了基于主控同步的CAN總線多點實時數(shù)據(jù)采集技術(shù),,它可以解決數(shù)據(jù)采集過程中總線沖突的問題,,提高數(shù)據(jù)傳輸?shù)目煽啃耘c實時性。

  1RS-485工作模式

  RS-485是半雙工的工作模式,,任何時候只能有一點處于發(fā)送狀態(tài),,它采用主從式多址輪詢方式實現(xiàn)多址接入,也就是說所有的節(jié)點共用一條總線,主節(jié)點按照地址依次輪流查詢各個從節(jié)點,,被查詢的從節(jié)點返回數(shù)據(jù)或者空操作,。由此可以看出,隨著節(jié)點的增多,,輪詢的周期也會變長,,這對數(shù)據(jù)的實時性傳輸具有很大的影響。RS-485的網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖1所示,。

圖像 001.png

2CAN總線協(xié)議和仲裁機制

  CAN是一種有效支持分布式控制或?qū)崟r控制的串行通信網(wǎng)絡(luò),,CAN總線具有多主發(fā)送、采用確定性的優(yōu)先級仲裁機制等特點,,保證了CAN總線數(shù)據(jù)通信[6-7]的可靠性,、實時性和靈活性。CAN總線的網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖2所示,。

圖像 002.png

  報文信號使用差分電壓[8]傳送,,可以提高CAN總線傳輸數(shù)據(jù)的可靠性和傳輸距離。兩條信號線分別為CANH與CANL,。這兩根線之間的電位差可以對應(yīng)兩個不同的邏輯狀態(tài)進行編碼,。如果CANH-CANL>2,此時狀態(tài)表示為邏輯 0,,也可以叫作顯性,。如果CANH-CANL=0,此時狀態(tài)表示為邏輯1,,也可以叫作隱性,。當(dāng)總線上2個不同節(jié)點在同一位時間分別強加顯性和隱性時,,總線上呈現(xiàn)顯性位,,即顯性位可以覆蓋修改隱性位。電平標稱值如圖3所示,。

圖像 003.png

  在數(shù)據(jù)傳輸過程中,,如果出現(xiàn)碰撞,低優(yōu)先級的節(jié)點會主動退出,,而最高優(yōu)先級的節(jié)點可以不受影響繼續(xù)傳輸數(shù)據(jù),,從而大大節(jié)省了總線沖突仲裁時間,保證了傳輸數(shù)據(jù)的實時性,。但是這種靜態(tài)優(yōu)先級機制[9-10]的一個缺點就是不能均等地為高優(yōu)先級和低優(yōu)先級站點分配帶寬,,在網(wǎng)絡(luò)負載很大時,低優(yōu)先級站點會在多次競爭總線使用權(quán)時失敗,,從而導(dǎo)致低優(yōu)先級站點消息傳輸產(chǎn)生不確定的延時,,甚至無法發(fā)送。而在數(shù)據(jù)采集的環(huán)境下,各個節(jié)點采集到的數(shù)據(jù)沒有優(yōu)先級之分,,所以CAN總線的靜態(tài)優(yōu)先級機制對于數(shù)據(jù)采集來說并不是最好的機制,。

3主控同步的CAN總線

圖像 004.png

  CAN總線的特點之一就是多主發(fā)送,各個站點在任何時候都可以隨機發(fā)送數(shù)據(jù),,如果在某一個時刻有2個或2個以上的站點要發(fā)送數(shù)據(jù),,就要通過非破壞性仲裁機制進行仲裁來競爭總線的使用權(quán),標識符數(shù)值小的站點即優(yōu)先級較高的站點可以獲得總線使用權(quán),,競爭失敗的站點則需等待下次重新競爭,。在數(shù)據(jù)采集中,每個節(jié)點的優(yōu)先級都是相同的,,所以本文提出了主控同步的CAN總線多點實時數(shù)據(jù)采集技術(shù),,流程圖如圖4所示。

  RS-485是主從結(jié)構(gòu),,采用主從輪詢的方式,,主節(jié)點依次詢問每個從節(jié)點。主從同步的CAN總線就是將主控節(jié)點應(yīng)用在CAN總線上,。

  3.1靜態(tài)主控同步CAN總線

  靜態(tài)主控同步CAN總線就是對CAN總線上的所有節(jié)點進行編號分別為1,2,3,,…,n,,所有節(jié)點都發(fā)送1次數(shù)據(jù)的時間稱為周期T,,每個節(jié)點發(fā)送數(shù)據(jù)時間為t=T/n,主控節(jié)點可以控制開始發(fā)送數(shù)據(jù)的時間,,在總線空閑時,,總線廣播一次,此時可以發(fā)送數(shù)據(jù),,然后所有節(jié)點依次在自己規(guī)定的時間發(fā)送數(shù)據(jù),,第一個節(jié)點發(fā)送數(shù)據(jù)的時間為0-T/n,如果它的數(shù)據(jù)沒有發(fā)送完就停止發(fā)送,,則在T/n時刻第二個節(jié)點開始發(fā)送數(shù)據(jù),,在2T/n時刻第三個節(jié)點發(fā)送數(shù)據(jù),以此類推下去,,直到最后個節(jié)點發(fā)送完數(shù)據(jù),,只要保證T/n合適,就可以讓每個節(jié)點順利地傳輸數(shù)據(jù),。每個節(jié)點發(fā)送數(shù)據(jù)的時刻與時間段如圖5所示,。

圖像 005.png

  CAN總線上的節(jié)點并不一定都是同時在線或者不在線,有可能突然故障或者斷線,,也有可能突然上線,,這樣節(jié)點發(fā)送數(shù)據(jù)就容易產(chǎn)生沖突,。所以規(guī)定每個節(jié)點都是T/n的時間,不管該節(jié)點是否在線都占用T/n的時間段,,以此來避免某個節(jié)點上線或者下線產(chǎn)生沖突,。這是最簡單的也是最容易實現(xiàn)的結(jié)構(gòu),雖然提高了數(shù)據(jù)傳輸?shù)目煽啃?,但是會浪費時間,,不管幾個節(jié)點在線都需要一個周期T的時間才能進行下次數(shù)據(jù)的發(fā)送,傳輸?shù)男什桓?,對?shù)據(jù)的實時性有一定的影響,。

  3.2動態(tài)主控同步CAN總線

  由于靜態(tài)主控同步的缺陷性,在其基礎(chǔ)上本文又提出動態(tài)主控同步CAN總線來提高數(shù)據(jù)發(fā)送的實時性,。在CAN總線初始化的時候,,所有在線節(jié)點給主控節(jié)點報告自己在線的信息,此時,,主控節(jié)點知道總線中所有節(jié)點的狀態(tài),,然后將所有節(jié)點狀態(tài)廣播給每個節(jié)點??偩€上所有上下線的節(jié)點如圖6所示,。

圖像 006.png

  假如此時3和4號節(jié)點未上線,其余都正常上線且不會突然下線,,那么,,1號和2號正常發(fā)送數(shù)據(jù),5號節(jié)點在2t~3t時間段內(nèi)發(fā)送數(shù)據(jù),,其余的依次類推,,則所有節(jié)點發(fā)完一次數(shù)據(jù)的時間為T-2t,比靜態(tài)主控同步少了2t,,總線的周期從T變成了T-2t,提高了數(shù)據(jù)傳輸?shù)膶崟r性,。w是每個上線節(jié)點給主控節(jié)點匯報所需要的時間,V=Xw,,X是不在線節(jié)點的個數(shù),,Y為在線節(jié)點的個數(shù),,X+Y=n,,Y×t=T1。在實際情況中不可避免地會出現(xiàn)某些節(jié)點(假如節(jié)點5)突然下線的情況,如圖7所示,。

圖像 007.png

  此時如果節(jié)點5突然從在線變成下線,,所有節(jié)點收到的廣播還是只有3和4不在線,其余都在線,,那么5號節(jié)點仍會占用一個t,,6號節(jié)點仍然在第4個時間段t發(fā)送數(shù)據(jù),保證了所有節(jié)點都可以按照自己的編號依次發(fā)送數(shù)據(jù),當(dāng)所有在線節(jié)點發(fā)送完數(shù)據(jù)后,,主控節(jié)點根據(jù)收到的數(shù)據(jù)就可以判斷哪些節(jié)點(例如5號節(jié)點)中途下線,,然后將這些信息再廣播到總線,之后其余在線節(jié)點就可以調(diào)節(jié)自己發(fā)送數(shù)據(jù)的時刻,,那些下個周期下線的節(jié)點(5號)就不占用時間段,,從而減少了時間的浪費,縮短了數(shù)據(jù)發(fā)送時間周期,。

  某個節(jié)點(4號)突然上線時,,此時主控節(jié)點廣播的時候還是3與4號節(jié)點不在線,其余節(jié)點都在線的狀態(tài),,如圖6所示,。此時如果4號節(jié)點突然上線,但是所有節(jié)點收到的廣播還是3與4號節(jié)點不在線,,實際上4號節(jié)點已經(jīng)在線,,如圖8所示。

圖像 008.png

  所有節(jié)點在依次發(fā)送完數(shù)據(jù)后會暫停時間段V,,使得上線節(jié)點可以及時向總線匯報,,使其在下個周期可以發(fā)送數(shù)據(jù)。

  開始時主控節(jié)點廣播當(dāng)前上線和下線的節(jié)點,,每個在線節(jié)點收到的信息應(yīng)該還是3和4號節(jié)點不在線,,其余節(jié)點都在線,而實際上4號節(jié)點已經(jīng)上線,,要將自己的狀態(tài)匯報給主控節(jié)點,,如果沒有緩沖時間片V,在2號節(jié)點發(fā)送完數(shù)據(jù)后5號節(jié)點發(fā)送數(shù)據(jù),,此時就會出現(xiàn)5號節(jié)點發(fā)送數(shù)據(jù),,同時4號節(jié)點也發(fā)送自己上線的信息,從而發(fā)生沖突,。時間片V就解決了發(fā)送數(shù)據(jù)與匯報狀態(tài)的沖突問題,。如圖8所示,如果只有3和4號節(jié)點不在線,,那么V=2w,,在第一個w里,由于4號節(jié)點上線,,會向主控節(jié)點匯報自己在線,,下個周期主控節(jié)點會將最新的從節(jié)點狀態(tài)廣播到總線上,因此從節(jié)點會重新安排上線節(jié)點(4號)發(fā)送數(shù)據(jù)的時刻與順序,。如果出現(xiàn)連續(xù)兩個節(jié)點上線,,那么這兩個節(jié)點就會出現(xiàn)仲裁,,號數(shù)小的節(jié)點會優(yōu)先向主控節(jié)點匯報,號數(shù)大的節(jié)點在下個w時間段內(nèi)匯報給主控節(jié)點,。這樣就解決了匯報狀態(tài)與發(fā)送數(shù)據(jù)的沖突問題,。下個周期主控節(jié)點會刷新節(jié)點狀態(tài)廣播給所有的在線節(jié)點,剛上線的節(jié)點就擁有一個t時間段來發(fā)送數(shù)據(jù),,這樣就解決了動態(tài)主控同步CAN總線的節(jié)點突然上下線的問題,。

4設(shè)計仿真實驗及結(jié)果分析

  為了驗證在數(shù)據(jù)采集時,主控同步的CAN總線可以解決沖突問題和提高數(shù)據(jù)可靠性,,設(shè)計了圖9所示的仿真平臺,。

圖像 009.png

  主控同步的CAN總線在采控集數(shù)據(jù)時,當(dāng)時間周期為T時,,所有節(jié)點都發(fā)送一次采集的數(shù)據(jù)的時間就是T,,T越小,每個節(jié)點所分到的時間t就越短,,當(dāng)T小到某一個值時,,可能會出現(xiàn)所有節(jié)點的數(shù)據(jù)都無法發(fā)送完,就會出現(xiàn)數(shù)據(jù)采集失敗,。所以只有當(dāng)t≥tmax時,,每個節(jié)點都可以順利地向總線發(fā)送數(shù)據(jù),tmax為所有測試節(jié)點中正常發(fā)送數(shù)據(jù)所需時間最長的時間,。同時T=T1+V=Yt+Xw,,由于w<t,因此T=T1+V<nt,,隨著X的增多,,Y的減少,T=T1+V越來越小,,動態(tài)地減小了數(shù)據(jù)發(fā)送的周期,,提高了實時性。

  對于標準CAN,,由于每個節(jié)點之間是不相關(guān)的,,因此它們是獨立同分布的。假設(shè)總線空閑時每個節(jié)點發(fā)送數(shù)據(jù)的概率為P,,數(shù)據(jù)發(fā)送過程中會發(fā)生沖突的概率為Px,,總線空閑同時也沒有節(jié)點發(fā)送數(shù)據(jù)的概率為P0=C0nP0(1-P)n,總線空閑同時只有一個節(jié)點會發(fā)送數(shù)據(jù)的概率為P1=C1nP1(1-P)n-1,,則Px=1-P0-P1=1-C0nP0(1-P)n-C1nP1(1-P)n-1=1-(1-P)n-nP(1-P)n-1,。但是主控同步的CAN因為主控節(jié)點的緣故使得發(fā)生沖突的概率為0,。標準CAN與主控同步CAN的實驗結(jié)果對比如表1所示,。

圖像 010.png

  通過表1對比可以看出主控同步CAN總線的沖突的概率為0,,優(yōu)于標準CAN,靜態(tài)主控同步CAN的數(shù)據(jù)傳輸?shù)膶崟r性比動態(tài)的差,,因為在t和w變化的條件下,,X和Y也動態(tài)地變化,從而動態(tài)地改變了總體消耗的時間T=T1+V,,最終提高了數(shù)據(jù)傳輸?shù)膶崟r性,,由此看出動態(tài)主控同步CAN更加適合數(shù)據(jù)采集的環(huán)境。

5結(jié)論

  本文通過分析RS485和CAN總線的仲裁機制,,在標準CAN的基礎(chǔ)上提出了基于主控同步的CAN總線,,它能

  夠解決數(shù)據(jù)沖突的問題,避免了仲裁,,提高數(shù)據(jù)傳輸?shù)膶崟r性與可靠性,。靜態(tài)主控同步的CAN總線可以提高數(shù)據(jù)的可靠性,但是會浪費一些時間段T/n,,所以在此基礎(chǔ)上提出了動態(tài)主控同步的CAN總線,。通過對比發(fā)現(xiàn),動態(tài)主控同步可以提高數(shù)據(jù)傳輸?shù)膶崟r性和可靠性,,所以在數(shù)據(jù)采集這個特殊的背景下,,動態(tài)主控同步的CAN總線有著自己獨特的優(yōu)勢。

  參考文獻

 ?。?] 彭剛,,徐慶江.基于STM32單片機的RS485總線分布式數(shù)據(jù)采集系統(tǒng)設(shè)計[J].伺服控制,2011(2):64-66.

 ?。?] 龍志強.CAN總線技術(shù)與應(yīng)用系統(tǒng)設(shè)計[M].北 京: 機械工業(yè)出版社,,2013.

  [3] 鄧婕.CAN 總線通信原理分析[J].電子設(shè)計工程,,2012,20(7):104-106.

 ?。?] 劉向明,方建安.CAN總線網(wǎng)絡(luò)的實時性研究和改進[J].現(xiàn)代電子技術(shù),,2011,,34(22):46-49.

  [5] DVIS R I,,BURNS A,,BRIL R J,et al.Controller area network (CAN) schedulability analysis:refuted,,revisited and revised[J].RealTime Systems,,2007,-35(3):239-272.

 ?。?] 紀文志,,陳國忠,,唐加山.基于 CAN 總線智能節(jié)點的設(shè)計與實現(xiàn)[J].微型機與應(yīng)用,2012,,31(2):44-46.

 ?。?] 陳瑛,宋俊磊,,王典洪.CAN 總線在野外地震數(shù)據(jù)傳輸中的應(yīng)用[J].電子技術(shù)應(yīng)用,,2013,39(9):34-36.

 ?。?] 牛躍聽.CAN總線應(yīng)用層協(xié)議實例解析[D].北京:北京航空航天大學(xué),,2014.

  [9] 孫鵬,,沈顯慶,,周杰.CAN總線協(xié)議的改進及 性能驗證[J].現(xiàn)代科學(xué)儀器,,2010(5):35-37.

 ?。?0] 陳飛,,謝建.基于CAN總線的網(wǎng)絡(luò)監(jiān)控系統(tǒng)調(diào)度算法研究與改進[J].計算機與現(xiàn)代化,,2015(1):92-95.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。