孫經(jīng)偉 許崇 孫緯偉
摘要:該文從CAN總線通信的角度,提出了一種冗余的高安全性CAN總線通訊系統(tǒng)。以求解決在聯(lián)鎖系統(tǒng)中遇到的通信問(wèn)題。文章詳細(xì)闡述了新型通信系統(tǒng)的設(shè)計(jì)原理與實(shí)現(xiàn)步驟,并用實(shí)例驗(yàn)證了該方法的有效性。
關(guān)鍵詞:CAN; 通信系統(tǒng);二乘二取二;冗余;安全性
中圖分類(lèi)號(hào):TP273.5 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)02-0401-03
如今的工業(yè)控制領(lǐng)域正朝著信息化、智能化、網(wǎng)絡(luò)化不斷發(fā)展,影響著通信效率的工業(yè)總線技術(shù)越來(lái)越受到行業(yè)的重視。傳統(tǒng)的工業(yè)通信總線大多采用RS-485總線,但是RS-485總線存在著總線利用率低、傳輸速率低、通信距離短等缺點(diǎn),并且缺乏完備的錯(cuò)誤檢測(cè)機(jī)制,導(dǎo)致其安全性較差,不適合應(yīng)用在安全相關(guān)的工業(yè)領(lǐng)域。安全相關(guān)的工業(yè)領(lǐng)域包括核電、水利、交通、礦山等關(guān)系著重大公共安全的行業(yè),一般有著嚴(yán)格的安全性要求。
本文提出了一種新的設(shè)計(jì)方案,通過(guò)采用二乘二取二架構(gòu),多重校驗(yàn)和冗余收發(fā)技術(shù),每個(gè)有效的數(shù)據(jù)包的發(fā)送和接收都是冗余的,并且通過(guò)在發(fā)送端和接收端設(shè)置多次校驗(yàn),確保系統(tǒng)的高安全性。
1 背景
控制器局域網(wǎng)CAN(Controller Area Network)總線是一種能有效支持分布式實(shí)時(shí)控制的串行通信網(wǎng)絡(luò)。近年來(lái),由于CAN總線具有高可靠性、高傳輸速率、良好的勘誤檢錯(cuò)能力和低廉的成本優(yōu)勢(shì),逐漸成為應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一。安全相關(guān)的工業(yè)領(lǐng)域比一般的工業(yè)領(lǐng)域?qū)Π踩砸蟾?,而且往往?yīng)用環(huán)境惡劣,存在著大量的干擾,例如電磁、溫度、粉塵等影響。CAN總線雖然有錯(cuò)誤檢測(cè)機(jī)制,但在實(shí)際應(yīng)用過(guò)程中,仍不可避免地會(huì)由于控制器或收發(fā)器故障、傳輸介質(zhì)損壞及環(huán)境的干擾產(chǎn)生傳輸錯(cuò)誤。另外,CAN總線的一個(gè)特點(diǎn)是多主工作方式,但在實(shí)際應(yīng)用中,多主工作方式容易導(dǎo)致總線控制沖突,使得緊急命令和消息得不到響應(yīng)或者響應(yīng)過(guò)慢,對(duì)中斷邏輯結(jié)構(gòu)要求較高,不適合對(duì)安全性和響應(yīng)時(shí)間有著嚴(yán)格要求的安全相關(guān)系統(tǒng)。
2 CAN總線系統(tǒng)架構(gòu)
本文的目的在于提供一種冗余的高安全性CAN總線通信系統(tǒng),以解決現(xiàn)有技術(shù)中存在的問(wèn)題。
一種冗余的高安全性CAN總線通信系統(tǒng),包括一個(gè)上位機(jī)、多個(gè)下位機(jī)和兩條互為熱備的CAN總線,每個(gè)上位機(jī)和下位機(jī)均由兩個(gè)互為熱備的模塊構(gòu)成;每個(gè)模塊均有兩個(gè)同步運(yùn)算的微處理器CPU,分別為第一CPU和第二CPU,構(gòu)成兩個(gè)相互獨(dú)立的運(yùn)算通道,每個(gè)運(yùn)算通道集成兩個(gè)CAN總線接口,所述兩個(gè)CAN總線接口分別一一對(duì)應(yīng)連接兩條CAN總線。
由上述技術(shù)方案可知,本方案采用二乘二取二架構(gòu),包括一個(gè)上位機(jī)、若干下位機(jī)和兩條CAN總線,每個(gè)上位機(jī)和下位機(jī)均由兩個(gè)互為熱備的模塊構(gòu)成,兩條CAN總線構(gòu)成熱備,每個(gè)模塊集成兩個(gè)相互獨(dú)立的運(yùn)算通道,每個(gè)運(yùn)算通道以一個(gè)高性能微處理器為核心,同步運(yùn)算并實(shí)現(xiàn)二取二表決,每個(gè)運(yùn)算通道集成兩個(gè)CAN總線接口分別連接到兩條CAN總線上;CAN總線通信采用主從模式,上位機(jī)定期巡訪所有下位機(jī),每個(gè)時(shí)間片內(nèi),上位機(jī)和固定的下位機(jī)通信,有效避免總線沖突。本實(shí)用新型采用多重校驗(yàn)和冗余收發(fā)技術(shù),每個(gè)有效的數(shù)據(jù)包的發(fā)送和接收都是冗余的,并且在發(fā)送端和接收端設(shè)置多次校驗(yàn),確保高安全性。
3 工作原理
本設(shè)計(jì)方案的工作原理(選取一個(gè)下位機(jī)2進(jìn)行說(shuō)明):
1)準(zhǔn)備階段:系統(tǒng)上電,完成初始化工作,每個(gè)模塊檢查自身狀態(tài)和接口設(shè)備是否運(yùn)行正常;檢查完畢后,若所有模塊均處于正常工作狀態(tài),則互為熱備的兩個(gè)模塊根據(jù)固定的主備關(guān)系工作,若有模塊出現(xiàn)故障,則互為熱備的兩個(gè)模塊根據(jù)本模塊和對(duì)方模塊的狀態(tài)確定主備關(guān)系;若前期檢查所有模塊均正常工作,上位機(jī)模塊M1工作在主系狀態(tài)下,M2工作在備系狀態(tài)下,下位機(jī)模塊M3工作在主系狀態(tài)下,M4工作在備系狀態(tài)下;
2)上位機(jī)主系模塊CPU1發(fā)送階段:上位機(jī)主系模塊M1占有總線控制權(quán),在固定的時(shí)間片內(nèi),選擇與下位機(jī)主系模塊M3通信:M1-CPU1將自己需要發(fā)送的數(shù)據(jù)Data1_1通過(guò)CAN總線接口M1-CPU1-CAN1發(fā)送到CAN-BUS1上;M1-CPU2通過(guò)CAN總線接口M1-CPU2-CAN1接收數(shù)據(jù),M3-CPU1通過(guò)CAN總線接口M3-CPU1-CAN1接收數(shù)據(jù),M3-CPU2通過(guò)CAN總線接口M3-CPU2-CAN1接收數(shù)據(jù);
3)上位機(jī)主系模塊CPU2比較階段:M1-CPU2接收到來(lái)自M1-CPU1的數(shù)據(jù)Data1_1,并將接收到的數(shù)據(jù)Data1_1與自己準(zhǔn)備發(fā)送的數(shù)據(jù)Data1_2做比較,如果兩個(gè)數(shù)據(jù)相同,則跳轉(zhuǎn)步驟S4,如果兩個(gè)數(shù)據(jù)不相同,則跳轉(zhuǎn)步驟S8;
4)上位機(jī)主系模塊CPU2發(fā)送階段:M1-CPU2將自己需要發(fā)送的數(shù)據(jù)Data1_2通過(guò)CAN總線接口M1-CPU2-CAN1發(fā)送到CAN-BUS1上。M1-CPU1通過(guò)CAN總線接口M1-CPU1-CAN1接收數(shù)據(jù),M3-CPU1通過(guò)CAN總線接口M3-CPU1-CAN1接收數(shù)據(jù),M3-CPU2通過(guò)CAN總線接口M3-CPU2-CAN1接收數(shù)據(jù);
5)下位機(jī)主系模塊CPU1和CPU2比較階段:M3-CPU1和M3-CPU2分別從CAN-BUS1上接收到了兩個(gè)數(shù)據(jù)Data1_1和Data1_2,分別對(duì)這兩個(gè)數(shù)據(jù)進(jìn)行比較,如果M3-CPU1和M3-CPU2均判定兩個(gè)數(shù)據(jù)是相同的,則跳轉(zhuǎn)步驟S6,否則,只要M3-CPU1或M3-CPU2其中之一判定兩個(gè)數(shù)據(jù)不相同,就跳轉(zhuǎn)步驟S8;
6)下位機(jī)主系模塊CPU1和CPU2解碼階段:M3-CPU1和M3-CPU2分別解碼各自接收到的數(shù)據(jù)Data1_1和Data1_2,得到相應(yīng)的時(shí)間戳、序列號(hào)和CRC校驗(yàn)碼,如果M3-CPU1和M3-CPU2均判定相應(yīng)的時(shí)間戳、序列號(hào)和CRC校驗(yàn)碼是正確的,則跳轉(zhuǎn)S7,如果出現(xiàn)錯(cuò)誤,則跳轉(zhuǎn)步驟S8;
7)通信完成階段:CAN總線通信正確完成,下位機(jī)根據(jù)解碼得到的數(shù)據(jù)區(qū),進(jìn)行后續(xù)處理,為上位機(jī)應(yīng)答做準(zhǔn)備;
8)通信錯(cuò)誤階段:CAN總線通信出現(xiàn)錯(cuò)誤,通信中止,等待上位機(jī)重新發(fā)起通信。
需要說(shuō)明以下幾點(diǎn):
其一、備系模塊(上位機(jī)模塊M2、下位機(jī)模塊M4)正常接收CAN總線上的數(shù)據(jù),但不允許向CAN總線上發(fā)送數(shù)據(jù),即處在“只收不發(fā)”的狀態(tài)。備系模塊接收到數(shù)據(jù)后,與其相應(yīng)的主系模塊同步運(yùn)行,當(dāng)主系模塊出現(xiàn)故障時(shí),備系模塊可以無(wú)擾切換為主系模塊,保證系統(tǒng)可靠運(yùn)行。
其二、兩條CAN總線以相同的方法進(jìn)行數(shù)據(jù)傳輸,形成冗余結(jié)構(gòu),兩條CAN總線只要有一條通信正常,系統(tǒng)就能正常工作。上述步驟S2中,M1-CPU1將自己需要發(fā)送的數(shù)據(jù)Data1_1通過(guò)CAN總線接口M1-CPU1-CAN1發(fā)送到CAN-BUS1上,同時(shí)也通過(guò)CAN總線接口M1-CPU1-CAN2發(fā)送到CAN-BUS2上,從而M1-CPU2也可以通過(guò)CAN總線接口M1-CPU2-CAN2接收數(shù)據(jù),M3-CPU1也可以通過(guò)CAN總線接口M3-CPU1-CAN2接收數(shù)據(jù),M3-CPU2也可以通過(guò)CAN總線接口M3-CPU2-CAN2接收數(shù)據(jù);上述步驟S4中的情況與此相同。
其三、當(dāng)下位機(jī)根據(jù)上位機(jī)下發(fā)的命令完成規(guī)定任務(wù)后,向上位機(jī)應(yīng)答,下位機(jī)向上位機(jī)發(fā)送數(shù)據(jù)和消息與上位機(jī)向下位機(jī)發(fā)送數(shù)據(jù)和命令,兩者的通信方向相反,方法相同。
其四、CAN總線上的各個(gè)模塊,除了自身發(fā)送之外,所有其他的動(dòng)作,都是由接收事件驅(qū)動(dòng)的。每個(gè)CAN接口保持對(duì)總線的監(jiān)聽(tīng),當(dāng)接收到數(shù)據(jù)時(shí),調(diào)用相應(yīng)的接收中斷處理函數(shù)。同一個(gè)CPU上的兩個(gè)CAN接口的CAN接收中斷處理函數(shù)在流程上是一致的。因?yàn)镃AN總線協(xié)議取消了地址編碼,而在程序中,需要明確每條CAN總線報(bào)文來(lái)自哪個(gè)模塊,在編碼設(shè)計(jì)中規(guī)定了專(zhuān)門(mén)的地址碼段。
在CAN總線上,一個(gè)合法的數(shù)據(jù)包必須由兩個(gè)數(shù)據(jù)Data1_1和Data1_2組成,Data1_1由發(fā)送端的CPU1發(fā)出,Data1_2由發(fā)送端的CPU2發(fā)出,接收端接收到兩個(gè)數(shù)據(jù)并比較一致之后才能進(jìn)行后續(xù)處理。數(shù)據(jù)包內(nèi)包含地址碼、時(shí)間戳、序列號(hào)、數(shù)據(jù)區(qū)、CRC校驗(yàn)碼等內(nèi)容。其中,地址碼標(biāo)明數(shù)據(jù)來(lái)源于總線上的模塊位置,時(shí)間戳標(biāo)明數(shù)據(jù)發(fā)送的時(shí)間點(diǎn),序列號(hào)標(biāo)明數(shù)據(jù)發(fā)送的流水號(hào),數(shù)據(jù)區(qū)存放后續(xù)處理中需要使用的命令或信息,CRC校驗(yàn)碼標(biāo)明數(shù)據(jù)的CRC校驗(yàn)結(jié)果。
其五、每個(gè)模塊的CPU1和CPU2都需要檢驗(yàn)各自接收到的數(shù)據(jù)是否為有效數(shù)據(jù)。設(shè)CAN-BUS1為當(dāng)前通信總線,CAN-BUS2為備用通信總線,判斷接收到的數(shù)據(jù)是否來(lái)自于CAN-BUS1上的有效模塊,即當(dāng)前正在占用通信時(shí)間片的模塊,對(duì)無(wú)效模塊傳來(lái)的數(shù)據(jù)一律丟棄不用;如果該數(shù)據(jù)來(lái)自有效模塊的CPU1,將該數(shù)據(jù)保存至存儲(chǔ)區(qū),記錄該數(shù)據(jù)到達(dá)的時(shí)間點(diǎn),啟動(dòng)對(duì)應(yīng)的定時(shí)器,如果在該定時(shí)器規(guī)定的時(shí)間內(nèi),收到來(lái)自該有效模塊CPU2的數(shù)據(jù),則將該數(shù)據(jù)判定為有效數(shù)據(jù);如果超時(shí)沒(méi)有收到來(lái)自該有效模塊CPU2的數(shù)據(jù),則刪除保存的數(shù)據(jù),并發(fā)送報(bào)警信息,標(biāo)識(shí)CAN-BUS1總線上通信出錯(cuò),將CAN-BUS2切換為當(dāng)前工作總線;如果該數(shù)據(jù)來(lái)自有效模塊的CPU2,則查找存儲(chǔ)區(qū)中是否包含該有效模塊CPU1傳來(lái)的數(shù)據(jù),如果有,則將該數(shù)據(jù)判定為有效數(shù)據(jù),如果沒(méi)有,則將該數(shù)據(jù)判定為無(wú)效數(shù)據(jù)。
以上所述實(shí)施方式僅僅是對(duì)本實(shí)用新型的優(yōu)選實(shí)施方式進(jìn)行描述,并非對(duì)本實(shí)用新型的范圍進(jìn)行限定,在不脫離本實(shí)用新型設(shè)計(jì)精神的前提下,本領(lǐng)域普通技術(shù)人員對(duì)本實(shí)用新型的技術(shù)方案作出的各種變形和改進(jìn),均應(yīng)落入本實(shí)用新型的權(quán)利要求書(shū)確定的保護(hù)范圍內(nèi)。
4 實(shí)施實(shí)例
下面,結(jié)合圖1和具體實(shí)例進(jìn)一步說(shuō)明本方案。
一種冗余的高安全性CAN總線通信系統(tǒng),包括上位機(jī)1、下位機(jī)2和CAN總線3,其中上位機(jī)1一個(gè),下位機(jī)2若干個(gè),CAN總線3兩條。每個(gè)上位機(jī)1和下位機(jī)2均由兩個(gè)互為熱備的模塊構(gòu)成,兩條CAN總線3構(gòu)成熱備。每個(gè)模塊集成兩個(gè)相互獨(dú)立的運(yùn)算通道,每個(gè)運(yùn)算通道以一個(gè)高性能微處理器CPU為核心,同步運(yùn)算并實(shí)現(xiàn)二取二表決;每個(gè)運(yùn)算通道集成兩個(gè)CAN總線接口分別一一對(duì)應(yīng)連接到兩條CAN 總線3上。CAN總線通信采用主從模式,即通信只能由主機(jī)發(fā)起,從機(jī)應(yīng)答;在通信流程中,上位機(jī)1為主機(jī),下位機(jī)2為從機(jī),主機(jī)周期地逐個(gè)同所有從機(jī)交互數(shù)據(jù),其與每個(gè)從機(jī)的通信占用一定的時(shí)間片,在該時(shí)間片內(nèi)不允許其它從機(jī)獲得總線的發(fā)送權(quán),有效避免總線沖突;通信方法采用多重校驗(yàn)和冗余收發(fā)技術(shù),每個(gè)有效的數(shù)據(jù)包的發(fā)送和接收都是冗余的,并且在發(fā)送端和接收端設(shè)置多次校驗(yàn),確保高安全性。
如圖1所示(作為示例,只選了一個(gè)下位機(jī)2進(jìn)行說(shuō)明,其它下位機(jī)2情況相同),上位機(jī)1具有兩個(gè)模塊M1和M2,互為熱備。如果兩個(gè)模塊均正常,則M1工作在主系狀態(tài)下,M2工作在備系狀態(tài)下;M1上集成兩個(gè)高性能微處理器CPU:M1-CPU1和M1-CPU2,M2上集成兩個(gè)高性能微處理器CPU:M2-CPU1和M2-CPU2。每個(gè)CPU都集成了兩個(gè)CAN總線接口,M1-CPU1集成了M1-CPU1-CAN1和M1-CPU1-CAN2,M1-CPU2集成了M1-CPU2-CAN1和M1-CPU2-CAN2,M2-CPU1集成了M2-CPU1-CAN1和M2-CPU1-CAN2,M2-CPU2集成了M2-CPU2-CAN1和M2-CPU2-CAN2。
下位機(jī)2模塊的數(shù)量根據(jù)系統(tǒng)容量的大小而靈活變化,總共有2*N個(gè),每?jī)蓚€(gè)模塊形成一組冗余結(jié)構(gòu),互為熱備。以一個(gè)下位機(jī)2為例:模塊兩個(gè):M3和M4,互為熱備,如果兩個(gè)模塊均正常,則M3工作在主系狀態(tài)下,M4工作在備系狀態(tài)下;M3上集成兩個(gè)高性能微處理器CPU:M3-CPU1和M3-CPU2,M4上集成兩個(gè)高性能微處理器CPU:M4-CPU1和M4-CPU2,每個(gè)CPU都集成了兩個(gè)CAN總線接口,M3-CPU1集成了M3-CPU1-CAN1和M3-CPU1-CAN2,M3-CPU2集成了M3-CPU2-CAN1和M3-CPU2-CAN2,M4-CPU1集成了M4-CPU1-CAN1和M4-CPU1-CAN2,M4-CPU2集成了M4-CPU2-CAN1和M4-CPU2-CAN2。
冗余的兩條CAN總線3:CAN-BUS1和CAN-BUS2,CAN總線接口M1-CPU1-CAN1、M1-CPU2-CAN1、M2-CPU1-CAN1、M2-CPU2-CAN1、M3-CPU1-CAN1、M3-CPU2-CAN1、M4-CPU1-CAN1、M4-CPU2-CAN1連接CAN-BUS1;CAN總線接口M1-CPU1-CAN2、M1-CPU2-CAN2、M2-CPU1-CAN2、M2-CPU2-CAN2、M3-CPU1-CAN2、M3-CPU2-CAN2、M4-CPU1-CAN2、M4-CPU2-CAN2連接CAN-BUS2。
5 結(jié)束語(yǔ)
本文主要論述了一種新的基于二乘二取二架構(gòu)的高安全性CAN通信系統(tǒng)的設(shè)計(jì)方案,介紹了設(shè)計(jì)原理,并通過(guò)設(shè)計(jì)實(shí)例說(shuō)明了該方案的可行性。該方案對(duì)提高系統(tǒng)安全性具有積極的意義。
參考文獻(xiàn):
[1] 姜幼卿,左國(guó)華,陳勤學(xué),張宜生.基于CAN總線的溫室自動(dòng)控制系統(tǒng)的通信設(shè)計(jì)[J].儀表技術(shù)與傳感器,2005(4).
[2] 饒運(yùn)濤.現(xiàn)場(chǎng)總線CAN原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2003.
[3] 吳坎.基于SJA1000和PCA82C250的CAN總線接口設(shè)計(jì)[J].機(jī)械設(shè)計(jì)與制造,2010(7).
[4] 朱華偉,伍愛(ài)蓮,楊如鋒,肖濤.適用于變電站的CAN現(xiàn)場(chǎng)總線通信適配卡的設(shè)計(jì)[J].電力系統(tǒng)及其自動(dòng)化學(xué)報(bào),2005(5).
[5] 夏澤中,薛敏.CAN總線和基于CAN總線的高層協(xié)議CANopen[J].可編程控制器與工廠自動(dòng)化,2005(2).
[6] 魯也傳,陳永生,郭玉臣.基于通信的列車(chē)自動(dòng)監(jiān)控系統(tǒng)平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2009(S2).
[7] 王成,唐濤.CBTC仿真系統(tǒng)中數(shù)據(jù)庫(kù)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)仿真,2007(9).
[8] 王琰.基于通信的列車(chē)控制系統(tǒng)后備系統(tǒng)的探討[J].鐵道標(biāo)準(zhǔn)設(shè)計(jì),2007(6).