穆加艷,羅 睿,劉 赟,潘麗麗
(中國船舶重工集團(tuán)公司第七二四研究所,南京 210003)
隨著雷達(dá)性能的不斷提高,雷達(dá)分系統(tǒng)規(guī)模逐步擴(kuò)大,對雷達(dá)系統(tǒng)整機(jī)操控及故障檢測系統(tǒng)的要求在逐步提高,同時雷達(dá)的整機(jī)監(jiān)控系統(tǒng)對智能化、實時化方面的要求也在快速提高。過去大部分監(jiān)控系統(tǒng)主要采用RS-485 總線,只定義了一些電器特性,無完整的協(xié)議規(guī)約,系統(tǒng)的實時性、通訊的可靠性、傳輸距離均已難以滿足當(dāng)今雷達(dá)發(fā)展的要求?;?85 總線的監(jiān)控系統(tǒng)只能有一個主站,其余為從站,這樣的系統(tǒng)就無法構(gòu)成多主結(jié)構(gòu)或冗余結(jié)構(gòu)的系統(tǒng)。CAN 總線是一種具有國際標(biāo)準(zhǔn)的現(xiàn)場總線,應(yīng)用非常廣泛。CAN的協(xié)議對應(yīng)于OSI 模型里的物理層和數(shù)據(jù)鏈路層的功能服務(wù),其最高通訊速率可達(dá)1 Mbit/s (最大總線長度40 m),任意2個節(jié)點之間的最大距離可以達(dá)到10 km(通訊速率為5kbit/s)。CAN 總線在傳輸層上有檢錯等措施,提高了可靠性。CAN 總線是一種多主機(jī)的總線,組網(wǎng)很靈活。它突破了RS-485 通信網(wǎng)絡(luò)的單主機(jī)局限,具有多主機(jī)工作方式,是一種多主機(jī)的串行通訊局域網(wǎng)絡(luò),能有效地支持具有很高安全等級的分布式控制和實時控制,可同時掛110個智能節(jié)點。
CAN 總線的高性能、高可靠性和實時性等特點使得CAN的應(yīng)用范圍越來越廣泛。它還具有抗干擾能力強和布線簡單的特點,能夠適合雷達(dá)的整機(jī)操控和故障檢測系統(tǒng)的要求。雷達(dá)系統(tǒng)實時性要求比較高,各個分控制節(jié)點能夠在較短時間限度內(nèi)互相交換數(shù)據(jù),以保證整個系統(tǒng)控制不會有明顯的滯后。
CAN 協(xié)議有兩層,分別為物理層和傳輸層。傳輸層是CAN 協(xié)議的核心部分,主要功能是接收物理層的報文,負(fù)責(zé)定時及同步、報文分幀、仲裁、應(yīng)答、錯誤檢測和標(biāo)定、故障界定。CAN節(jié)點的層結(jié)構(gòu)如表1所示。
表1 CAN節(jié)點的層結(jié)構(gòu)
CAN的報文分標(biāo)準(zhǔn)格式和擴(kuò)展格式兩種不同的幀格式。標(biāo)準(zhǔn)的CAN 格式有11 位標(biāo)識符,擴(kuò)展格式有29 位標(biāo)識符。本文設(shè)計的系統(tǒng)采用擴(kuò)展格式。幀類型有數(shù)據(jù)幀、遠(yuǎn)程幀、錯誤幀和過載幀等4 種。數(shù)據(jù)幀將數(shù)據(jù)從發(fā)送器傳送到接收器??偩€單元發(fā)出遠(yuǎn)程幀,請求發(fā)送具有統(tǒng)一識別符的數(shù)據(jù)幀。任何節(jié)點單元檢測到錯誤就發(fā)送錯誤幀。過載幀用來在先行的和后續(xù)的數(shù)據(jù)幀(或遠(yuǎn)程幀)之間提供一個附加的延時。
數(shù)據(jù)幀由7個不同的位場組成,即幀起始、仲裁場、控制場、數(shù)據(jù)場、CRC 場、應(yīng)答場和幀結(jié)尾。幀起始(標(biāo)準(zhǔn)格式和擴(kuò)展格式)標(biāo)志數(shù)據(jù)幀和遠(yuǎn)程幀的起始,僅由一個“顯性”位組成,只在總線空閑時才允許其他節(jié)點開始發(fā)送(信號)。所有的節(jié)點必須同步于首先開始發(fā)送報文的站的幀起始前沿。標(biāo)準(zhǔn)格式幀與擴(kuò)展格式幀的仲裁場格式不同。在標(biāo)準(zhǔn)格式里,仲裁場由11 位識別符和RTR 位組成。ID-28~I(xiàn)D-18為識別符位。在擴(kuò)展格式里,仲裁場包括29 位識別符、SRR 位、IDE 位和RTR 位。ID-28~I(xiàn)D-0為其識別符。為了區(qū)別標(biāo)準(zhǔn)格式和擴(kuò)展格式,之前版本CAN 規(guī)范1.0-1.2的保留位r1 現(xiàn)表示為IDE Bit。標(biāo)準(zhǔn)格式識別符的長度為11 位,相當(dāng)于擴(kuò)展格式的基本ID(Base ID)。這些位按ID-28 到ID-18的順序發(fā)送。最低位是ID-18。7個最高位(ID-28~I(xiàn)D-22)一定不能全是“隱性”。擴(kuò)展格式的識別符由29 位組成,其格式含兩個部分:11 位基本ID和18 位擴(kuò)展ID。數(shù)據(jù)場(標(biāo)準(zhǔn)格式及擴(kuò)展格式)由數(shù)據(jù)幀里的發(fā)送數(shù)據(jù)組成,可以為0~8個字節(jié),首先發(fā)送MSB。
CAN 總線的數(shù)據(jù)以信息幀的形式按位串行傳送??偩€空閑時,任何節(jié)點都能發(fā)送報文。一次只傳送一幀數(shù)據(jù),由幀起始、仲裁域、控制域、數(shù)據(jù)域、校驗域、應(yīng)答域和結(jié)束域組成一幀信息。
本文報文是指在CAN 總線系統(tǒng)中傳輸信息的有效部分,包括信息的標(biāo)識符和數(shù)據(jù),可由一個或多個信息幀的有效數(shù)據(jù)部分組成。
網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)采用總線型結(jié)構(gòu),可靠性高,增加和減少站點都很方便??偩€型結(jié)構(gòu)信息按組發(fā)送,所有節(jié)點共享一個通道,當(dāng)多點同時發(fā)送數(shù)據(jù)時就有沖突產(chǎn)生。CAN 通過使用標(biāo)識符的逐位仲裁來解決總線訪問沖突,確保了報文和時間均不損失。CAN的報文是具有優(yōu)先權(quán)的。在該系統(tǒng)里,操控報文的優(yōu)先權(quán)高于故障檢測報文的優(yōu)先權(quán)。在有總線沖突的時候,有較高優(yōu)先權(quán)報文的節(jié)點可以獲得總線的訪問權(quán)。
在系統(tǒng)的可靠性方面,采用動態(tài)冗余技術(shù),兩套系統(tǒng)同時、同步運行。當(dāng)聯(lián)機(jī)子系統(tǒng)檢測到錯誤時退出程序進(jìn)行維修;另外的一個熱備份系統(tǒng)還在運行,備用模塊在待機(jī)過程中其失效率為零。
本文設(shè)計的分布式監(jiān)控系統(tǒng)采用8051 單片機(jī)和CAN 控制器SJA1000 設(shè)計。SJA1000 是一種獨立的CAN 控制器,支持CAN2.0B 協(xié)議,溫度適應(yīng)范圍為-40 ℃~+125 ℃。系統(tǒng)框圖如圖1所示。
圖1 系統(tǒng)的總體框圖
上位監(jiān)控機(jī)是基于X86的嵌入式VxWorks 系統(tǒng),負(fù)責(zé)對系統(tǒng)各節(jié)點控制命令的發(fā)送以及各控制單元狀態(tài)故障的實時顯示。
終端CAN節(jié)點(CAN節(jié)點0和CAN節(jié)點1)的功能有兩個:一個是作為上位監(jiān)控機(jī)與CAN 總線的接口,完成雷達(dá)的操控信息的轉(zhuǎn)發(fā);另一個是對其他節(jié)點傳送過來的采集信息進(jìn)行故障分析,判斷故障并發(fā)送故障信息給上位監(jiān)控機(jī)。終端CAN節(jié)點有兩個,為冗余備份的,這主要是利用CAN的多主機(jī)的特性。
其他CAN節(jié)點(CAN節(jié)點2-N)是接收終端CAN節(jié)點的控制信息及采集分機(jī)的數(shù)據(jù)上報給終端CAN節(jié)點。
每個CAN節(jié)點的板卡采用統(tǒng)一的標(biāo)準(zhǔn)設(shè)計,單片機(jī)程序也相同。當(dāng)每個CAN節(jié)點的板卡裝在分機(jī)里時,會根據(jù)分機(jī)里的撥碼開關(guān)的設(shè)置來自動識別位于哪個分機(jī)。
雷達(dá)控制系統(tǒng)的應(yīng)用層通信協(xié)議采用“節(jié)點ID+命令+數(shù)據(jù)+校驗”的形式。標(biāo)識符ID.21~I(xiàn)D.28 固定作為命令,不參與驗收濾波。數(shù)據(jù)則表示通信的具體內(nèi)容。校驗為一個字節(jié),采用校驗和的形式。由于CAN 總線本身具有15 位CRC 校驗,理論上其校驗強度應(yīng)該完全可以滿足本系統(tǒng)對通信可靠性的要求,但在實際應(yīng)用中并非如此,所以增加一個校驗位進(jìn)行端端差錯控制。聯(lián)網(wǎng)通信流程圖如圖2所示。
圖2 聯(lián)網(wǎng)通信示意圖
終端CAN節(jié)點發(fā)送操控報文,分機(jī)CAN節(jié)點接收到后寫相應(yīng)的內(nèi)容到寄存器,并回送操控報文;終端CAN節(jié)點收到回送的報文就說明操控成功,否則就重發(fā)該操控報文;重發(fā)3 次,如果3 次都不成功,就上報上位監(jiān)控機(jī)操控失敗。
終端CAN節(jié)點發(fā)送故障詢問報文,分機(jī)CAN節(jié)點接收到后把采集的數(shù)據(jù)信息發(fā)送給終端CAN節(jié)點;終端CAN節(jié)點收到數(shù)據(jù)信息就作故障分析;如果在一定的時間內(nèi)沒有收到數(shù)據(jù)信息,就上報該分機(jī)的通信故障,偶爾有丟包的,就報上次的故障信息給上位監(jiān)控機(jī)。
系統(tǒng)硬件設(shè)計采用8051 單片機(jī)和CAN 控制器SJA1000,包括兩個終端以及伺服、信號、發(fā)射各分系統(tǒng)。
硬件板卡里的單片機(jī)和SJA1000 連線圖見圖3。
圖3 單片機(jī)和SJA100的連接圖
單片機(jī)軟件設(shè)計采用C 語言,開發(fā)工具為Keil C51。軟件設(shè)計時,充分考慮系統(tǒng)的安全性和可靠性,以及系統(tǒng)的實時響應(yīng)能力。在安全性方面,除了CAN總線本身的錯誤檢驗措施外,還增加了1個數(shù)據(jù)校驗位的方式。在可靠性方面,采用動態(tài)冗余技術(shù),兩套系統(tǒng)同時、同步運行。
主程序的功能是初始化全局變量和初始化SJA1000 控制器,根據(jù)節(jié)點的編號調(diào)用相應(yīng)的模塊。主程序流程圖如圖4所示。
圖4 主程序框圖
圖5 終端CAN節(jié)點功能模塊的流程圖
RS232 串口通信采用波特率為19200bps,CAN 控制器采用PeliCAN 模式,波特率設(shè)置為100kbps。終端CAN節(jié)點功能模塊的流程圖如圖5。
本文設(shè)計的系統(tǒng)是基于CAN 總線的分布式監(jiān)控系統(tǒng),每個CAN節(jié)點以單片機(jī)為核心,利用CAN 控制器來收發(fā)數(shù)據(jù)。與傳統(tǒng)基于RS-485 總線的監(jiān)控系統(tǒng)相比,該系統(tǒng)數(shù)據(jù)傳輸率高,可靠性極高,抗干擾能力強,具有非破壞性總線仲裁,支持競爭,在實際中已經(jīng)得到了廣泛應(yīng)用,取得了較好的效果。該系統(tǒng)的穩(wěn)定性以及實時性都得到了驗證。
[1]饒運濤,鄒繼軍,王進(jìn)宏,等.現(xiàn)場總線CAN 原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2003.
[2]王幸之,王雷,鐘愛琴,等.單片機(jī)應(yīng)用系統(tǒng)抗干擾技術(shù)[M].北京:北京航空航天大學(xué)出版社,2000.