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

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

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

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

  關鍵詞:數(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)絡,,它可靠性高,且網(wǎng)絡內(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總線的基礎上,結合RS485的工作模式,,提出了基于主控同步的CAN總線多點實時數(shù)據(jù)采集技術,,它可以解決數(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)絡結構示意圖如圖1所示。

圖像 001.png

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

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

圖像 002.png

  報文信號使用差分電壓[8]傳送,,可以提高CAN總線傳輸數(shù)據(jù)的可靠性和傳輸距離,。兩條信號線分別為CANH與CANL。這兩根線之間的電位差可以對應兩個不同的邏輯狀態(tài)進行編碼,。如果CANH-CANL>2,,此時狀態(tài)表示為邏輯 0,,也可以叫作顯性。如果CANH-CANL=0,,此時狀態(tài)表示為邏輯1,,也可以叫作隱性。當總線上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)絡負載很大時,低優(yōu)先級站點會在多次競爭總線使用權時失敗,,從而導致低優(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ù),就要通過非破壞性仲裁機制進行仲裁來競爭總線的使用權,,標識符數(shù)值小的站點即優(yōu)先級較高的站點可以獲得總線使用權,,競爭失敗的站點則需等待下次重新競爭。在數(shù)據(jù)采集中,,每個節(jié)點的優(yōu)先級都是相同的,所以本文提出了主控同步的CAN總線多點實時數(shù)據(jù)采集技術,,流程圖如圖4所示,。

  RS-485是主從結構,采用主從輪詢的方式,,主節(jié)點依次詢問每個從節(jié)點,。主從同步的CAN總線就是將主控節(jié)點應用在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)的結構,,雖然提高了數(shù)據(jù)傳輸?shù)目煽啃裕菚速M時間,,不管幾個節(jié)點在線都需要一個周期T的時間才能進行下次數(shù)據(jù)的發(fā)送,,傳輸?shù)男什桓撸瑢?shù)據(jù)的實時性有一定的影響,。

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

  由于靜態(tài)主控同步的缺陷性,,在其基礎上本文又提出動態(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ù),,當所有在線節(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é)點廣播當前上線和下線的節(jié)點,,每個在線節(jié)點收到的信息應該還是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ù)據(jù)采集時,,主控同步的CAN總線可以解決沖突問題和提高數(shù)據(jù)可靠性,設計了圖9所示的仿真平臺,。

圖像 009.png

  主控同步的CAN總線在采控集數(shù)據(jù)時,,當時間周期為T時,所有節(jié)點都發(fā)送一次采集的數(shù)據(jù)的時間就是T,,T越小,,每個節(jié)點所分到的時間t就越短,當T小到某一個值時,,可能會出現(xiàn)所有節(jié)點的數(shù)據(jù)都無法發(fā)送完,,就會出現(xiàn)數(shù)據(jù)采集失敗。所以只有當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é)點之間是不相關的,因此它們是獨立同分布的,。假設總線空閑時每個節(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的實驗結果對比如表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結論

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

  夠解決數(shù)據(jù)沖突的問題,,避免了仲裁,,提高數(shù)據(jù)傳輸?shù)膶崟r性與可靠性。靜態(tài)主控同步的CAN總線可以提高數(shù)據(jù)的可靠性,,但是會浪費一些時間段T/n,,所以在此基礎上提出了動態(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)設計[J].伺服控制,2011(2):64-66.

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

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

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

 ?。?] 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é)點的設計與實現(xiàn)[J].微型機與應用,,2012,31(2):44-46.

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

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

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

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


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