張向文,張帆,李向陽
(北京航天發(fā)射技術(shù)研究所,北京 100076)
摘要:基于控制系統(tǒng)智能化水平日益增長的背景,快速自動識別出CAN總線網(wǎng)絡拓撲關(guān)系的需求日益突出 ,采用在CAN總線傳統(tǒng)網(wǎng)絡架構(gòu)中增加中間層的措施,結(jié)合CAN總線網(wǎng)絡鏈路動態(tài)分離的機制,設(shè)計了詳細的切換電路,介紹了電路的工作原理及整個系統(tǒng)的工作原理,明確了總線數(shù)據(jù)的處理流程、方法,實現(xiàn)了CAN總線網(wǎng)絡拓撲關(guān)系的快速自動識別,為后續(xù)相關(guān)技術(shù)的應用奠定了基礎(chǔ)。
關(guān)鍵詞:CAN總線;網(wǎng)絡拓撲;編組;邏輯序列;動態(tài)分離
中圖分類號:TN710文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.10.021
引用格式:張向文,張帆,李向陽.一種自動獲取CAN網(wǎng)絡拓撲關(guān)系方法的研究[J].微型機與應用,2017,36(10):74-76,80.
0引言
控制器局域網(wǎng)絡(Controller Area Net,CAN)是Robert Bosch公司在20世紀80年代初為汽車業(yè)開發(fā)的一種串行數(shù)據(jù)通信總線,其通信速率可達到1 Mb/s,并且通信距離在1 Mb/s下可達到40 m。CAN已有國際標準,即用于高速場合的ISO 11898和用于低速場合的ISO 115193[12]。由于其具備可靠性和良好的性能價格比,在軍民領(lǐng)域均已得到廣泛應用。近些年隨著信息化技術(shù)的快速發(fā)展,智能化的應用如雨后春筍般不斷涌現(xiàn),同樣基于CAN總線網(wǎng)絡的智能化應用也在不斷地發(fā)展與進步,對CAN總線網(wǎng)絡的相關(guān)基礎(chǔ)技術(shù)提出的新的要求。在新的軌道交通的環(huán)節(jié)中,由于存在列車的編組需要,導致整個CAN總線網(wǎng)絡并不是固定的、穩(wěn)定的,它是根據(jù)不同的任務需求進行臨時、快速組合的[34]。因此產(chǎn)生了對CAN總線網(wǎng)絡拓撲關(guān)系自動進行快速識別的需求,以便用戶、設(shè)計人員能夠快速掌握當前控制系統(tǒng)網(wǎng)絡的網(wǎng)絡拓撲關(guān)系,為后續(xù)網(wǎng)絡管理以及相關(guān)智能化應用奠定基礎(chǔ)。本文基于此需求,設(shè)計了一種快速CAN總線網(wǎng)絡拓撲關(guān)系自動獲取的方法。
1傳統(tǒng)CAN網(wǎng)絡的組成介紹
傳統(tǒng)的CAN總線網(wǎng)絡如圖1所示,主要包括單機、CAN總線電纜、終端電阻。單機內(nèi)部主要包括處理器、CAN總線協(xié)議芯片、隔離器件、CAN總線驅(qū)動芯片等[57]。各個單機的驅(qū)動芯片的CANH、CANL與總線電纜的CANH、CANL直接連接。各個CAN總線單機通過CAN總線電纜實現(xiàn)單機的互聯(lián)互通,從而實現(xiàn)一個設(shè)備發(fā)送全部設(shè)備均可接收的效果。CAN總線終端電阻掛于CAN總線電纜的兩端。
在傳統(tǒng)架構(gòu)下,單機2發(fā)送的CAN總線信號可以同時傳輸給單機1、單機3、單機n,各設(shè)備均可以進行應答,從而在傳統(tǒng)的網(wǎng)絡架構(gòu)中任何單機均可以無差別地實現(xiàn)與網(wǎng)絡中所有單機的通信,滿足了一對多的高效通信,有效提高了系統(tǒng)的通信效率[89]。但是在這種網(wǎng)絡架構(gòu)下,網(wǎng)絡中的單機無法實現(xiàn)對其他單機設(shè)備處于本設(shè)備的那個方向的識別,從而無法構(gòu)建出各單機的網(wǎng)絡邏輯關(guān)系,不能支持軌道交通編組條件下的快速網(wǎng)絡拓撲關(guān)系的自動識別。
因此在傳統(tǒng)網(wǎng)絡架構(gòu)中,要識別動態(tài)編組網(wǎng)絡中的邏輯拓撲關(guān)系,為用戶、應用設(shè)計人員提供基礎(chǔ)的網(wǎng)絡架構(gòu)信息是無法完成的。
2自動網(wǎng)絡拓撲關(guān)系識別網(wǎng)絡架構(gòu)設(shè)計
為解決傳統(tǒng)網(wǎng)絡的不足,本文提出了一種新型的CAN總線網(wǎng)絡拓撲架構(gòu),以滿足CAN總線網(wǎng)絡拓撲關(guān)系自動識別的目的。
2.1總體設(shè)計
如圖2所示,在新的網(wǎng)絡架構(gòu)中與傳統(tǒng)網(wǎng)絡架構(gòu)的區(qū)別主要有三點:(1)在單機的CAN驅(qū)動芯片與CAN總線電纜之間串入切換電路,切換電路用于完成總線網(wǎng)絡的前后向通信切換以及CAN總線電氣網(wǎng)路的補償;(2)每個單機的總線CANH、CANL均有兩對接口,與切換電路對應的接口相連,系統(tǒng)中終端電阻仍在CAN總線電纜的兩頭掛接;(3)系統(tǒng)中設(shè)置網(wǎng)絡管理單機,用于實現(xiàn)整個網(wǎng)絡拓撲架構(gòu)的識別與輸出,其可以使用任意單機設(shè)備來執(zhí)行相應的功能。另外為了方便后續(xù)描述,本文規(guī)定了前向、后向網(wǎng)絡的方向,由圖2可以看出,單機左側(cè)為單機的后向網(wǎng)絡,單機右側(cè)為單機的前向網(wǎng)絡。
2.2切換電路設(shè)計
切換電路的接口示意圖如圖3所示,其中CANH1、CANL2用于與CAN總線驅(qū)動芯片的CANH、CANL相連,IO接口用于實現(xiàn)單機設(shè)備對切換電路內(nèi)部繼電器的控制。CANH2、CANL2用于連接前向通信CAN總線設(shè)備,CANH3、CANL3用于連接后向通信CAN總線設(shè)備。單機根據(jù)CAN總線指令控制IO端口實現(xiàn)各個CAN端口的連接與斷開,從而實現(xiàn)前向、后向通信的偵測。
切換電路內(nèi)部原理如圖4所示,由圖4可以看出,整個電路主要包括K1、K2、K3、K4、K5 五個繼電器,R1A、R2A兩個CAN總線終端匹配電阻。電路工作原理為:在單元初始上電狀態(tài)下,K1繼電器閉合,K2、K3繼電器斷開,K4、K5 繼電器通電分別與各自的1端進行閉合。在此種狀態(tài)下,構(gòu)成的CAN總線網(wǎng)絡架構(gòu)與傳統(tǒng)的網(wǎng)絡架構(gòu)完成相同,整個系統(tǒng)可按照傳統(tǒng)模式進行工作。當需要進行網(wǎng)絡拓撲關(guān)系識別時,單機通過CAN總線接收到了網(wǎng)絡主機發(fā)送的要求本機進行自動識別的指令時,單機通過IO控制,斷開K1繼電器,并同時接通K2、K3繼電器,從而使原來完整的一條CAN總線網(wǎng)絡形成了兩條獨立的CAN總線網(wǎng)絡,其中R1A、R2A分別用于補充前向網(wǎng)絡、后向網(wǎng)絡中的終端匹配電阻,以便兩個獨立的CAN總線網(wǎng)絡均可以進行獨立工作。然后控制K4、K5繼電器通電使CANH1、CANL1先與對應繼電器的1端聯(lián)通,使本單機與后向網(wǎng)絡相連,單機向后向CAN總線網(wǎng)絡發(fā)送網(wǎng)絡架構(gòu)幀測幀,獲取后向各個單機的網(wǎng)絡編號,然后單機控制K4、K5繼電器通電使CANH1、CANL1與對應繼電器的2端聯(lián)通,使單機與前向網(wǎng)絡相聯(lián)通,單機向前向CAN總線網(wǎng)絡發(fā)送網(wǎng)絡架構(gòu)幀測幀,獲取后向各個單機的網(wǎng)絡編號,最后單機恢復K2、K3斷電,K4、K5繼電器與1端閉合,K1通電導通恢復整個網(wǎng)絡的傳統(tǒng)架構(gòu),本單機發(fā)送所獲取的單機前后向設(shè)備編號數(shù)據(jù)給網(wǎng)絡管理單機。
2.3系統(tǒng)工作過程設(shè)計
整個網(wǎng)絡連接后關(guān)系如圖5所示,系統(tǒng)設(shè)定單機4為管理單機。整個系統(tǒng)的工作原理如下。
首先上電后,各個單機均為上電初始狀態(tài),即整個系統(tǒng)的網(wǎng)絡架構(gòu)與傳統(tǒng)的網(wǎng)絡架構(gòu)相同,各個單機之間可按照傳統(tǒng)的模式進行通信。然后系統(tǒng)根據(jù)用戶指令或預定的計劃由網(wǎng)絡管理單機(單機4)獲取單機前向、后向單機的ID號(參見切換電路工作原理)并記錄,再依據(jù)所獲取的設(shè)備ID號,依次給所有的單機發(fā)送獲取其前、后向網(wǎng)絡單機的指令,獲取相關(guān)的獲取單機前向、后向單機的ID號并記錄。當網(wǎng)絡中所有的設(shè)備信息獲取完成后,網(wǎng)絡管理單機對數(shù)據(jù)進行處理,獲得系統(tǒng)各單機的連接關(guān)系,輸出給設(shè)計人員或用戶平臺。
2.4數(shù)據(jù)處理方法設(shè)計
如圖5所示,在管理單機完成數(shù)據(jù)提取工作后,其所獲數(shù)據(jù)如表1所示。
通過對數(shù)據(jù)的分析可以看出,每個設(shè)備的后向設(shè)備ID號的信息對于設(shè)備在網(wǎng)絡中的關(guān)系有一定的反映關(guān)系。通過初步分析總結(jié)歸納如下:首先通過查表獲取后向(或前向)為空的設(shè)備ID,將其作為整個網(wǎng)絡端首設(shè)備,如表1所示,單機1為網(wǎng)絡端首設(shè)備,然后查表獲取其他后向設(shè)備ID號只含有單機1的設(shè)備ID號,如表所示為單機2 ,之后通過查表方式查找其他后向設(shè)備ID只包含單機1、單機2的設(shè)備ID,依次查找,即可確定整個網(wǎng)絡的網(wǎng)絡拓撲關(guān)系。
為驗證方法的正確性,模擬各單機設(shè)備進行重新編組,編組后的關(guān)系如圖6所示。
假設(shè)單機4為管理節(jié)點,其自動獲取到的各單機的前后向網(wǎng)絡ID號如表2所示。
按照上述方法,首先查表獲取后向設(shè)備ID為空的設(shè)備為單機2,然后查表獲取后向設(shè)備ID僅含單機2的設(shè)備為單機1,然后查表獲取后向設(shè)別ID僅包含單機1、2的設(shè)備為單機5,然后獲取單機設(shè)備中僅含有單機1、2、5的設(shè)備為單機4,依次類推便可以自動獲取后向的關(guān)系,設(shè)備的順序依次為單機2、單機1、單機5、單機4、單機3、…、單機n。通過以上對數(shù)據(jù)的分析,證明是可以獲取系統(tǒng)設(shè)備的網(wǎng)絡邏輯關(guān)系的。
為了提高效率,對數(shù)據(jù)進行進一步分析,通過表1、表2內(nèi)的數(shù)據(jù)可以看出,設(shè)備節(jié)點所處的位置與后向設(shè)備的ID數(shù)量有關(guān),即其所處的位置為后向設(shè)備ID數(shù)量+1的位置。另外前向設(shè)備ID中的數(shù)據(jù)規(guī)律與后向設(shè)備ID中的數(shù)據(jù)相同,可僅處理后向數(shù)據(jù)或前向數(shù)據(jù)即可。
在現(xiàn)實CAN總線系統(tǒng)中,設(shè)備的ID號不一定是連續(xù)的,并且可能分成多個區(qū)段,為了解決這一問題,縮短系統(tǒng)比對時間,提高效率,對數(shù)據(jù)表進行規(guī)定,要求所有的設(shè)備ID排列順序為從小到大順序排列,并且依次放入對應的數(shù)組中,單機ID作為數(shù)據(jù)表中的一個屬性項。系統(tǒng)設(shè)定數(shù)組來進行數(shù)據(jù)表管理,包含數(shù)組X[n][n]與設(shè)備ID號數(shù)組DVEID[n],X[n][n]用來存儲對應單機ID設(shè)備的后向設(shè)備ID,
DVE-ID[i]用于存儲對應的單機設(shè)備ID號,n為系統(tǒng)中的設(shè)備數(shù)。設(shè)定Y[n]為設(shè)備最終序列存儲數(shù)組,設(shè)備邏輯序列的具體流程圖如圖7所示。即通過判斷對應設(shè)備ID的后向設(shè)備數(shù)量直接將對應的本設(shè)備的ID號賦予最終數(shù)組的位置。通過一次處理即可獲取到設(shè)備邏輯序列,并輸出到Y(jié)[n]數(shù)組中。
3結(jié)論
隨著控制系統(tǒng)中對信息化、智能化水平的要求越來越高,對于更多地、更智能地掌握整個控制系統(tǒng)中信息的要求越來越突出,控制系統(tǒng)中的總線網(wǎng)絡邏輯拓撲關(guān)系則是其中關(guān)鍵的一環(huán),順利掌握其信息,可以為全網(wǎng)絡提供更加智能的解決方案,同時為用戶提供更加直觀的系統(tǒng)架構(gòu)信息。本文針對CAN總線網(wǎng)絡架構(gòu)邏輯拓撲關(guān)系的自動識別,提出了通過增加切換電路的方法,改變了傳統(tǒng)的CAN總線網(wǎng)絡架構(gòu),根據(jù)網(wǎng)絡反饋數(shù)據(jù)提出了數(shù)據(jù)處理方法,并給出了整個系統(tǒng)的工作原理,圓滿地實現(xiàn)了基于CAN總線網(wǎng)絡架構(gòu)下邏輯拓撲關(guān)系識別的問題,同時可以為其他網(wǎng)絡的識別提供借鑒。
參考文獻
[1] 尚明玲. 基于SJA1000的CAN總線智能網(wǎng)橋設(shè)計[J]. 現(xiàn)代制造技術(shù)與裝備, 2015(4):8687.