基于CANopen協(xié)議的車(chē)載平臺數據通訊系統
引言
在現代戰爭中,隨著(zhù)武器裝備系統的機動(dòng)化、自動(dòng)化和信息化程度的不斷提高,軍用車(chē)輛上的車(chē)載設備也不斷增多,其中很多設備如車(chē)載雷達、車(chē)載光學(xué)瞄準設備、車(chē)載武器設備等,都需要一個(gè)穩定的水平平臺作為基座,以保證武器系統的瞄準、跟蹤和精確打擊。同時(shí),隨著(zhù)網(wǎng)絡(luò )技術(shù)的不斷發(fā)展,車(chē)輛系統中的網(wǎng)絡(luò )化程度也越來(lái)越高,這就要求一個(gè)車(chē)載裝置能和其它的設備進(jìn)行互連,從而有利于形成整車(chē)監控系統。目前,在車(chē)輛中大多數設備都通過(guò)CAN總線(xiàn)進(jìn)行連接,但是其應用層協(xié)議的不統一給不同廠(chǎng)商之間的設備互連帶來(lái)了困難。
CANopen 是基于CAN(Controller Area Network)總線(xiàn)的應用層協(xié)議,它最初由從事工業(yè)控制的CiA (CAN in Automation)會(huì )員開(kāi)發(fā)。由于CANopen是一種公共、開(kāi)放、通用的協(xié)議,而且精練透明、容易開(kāi)發(fā),因此在發(fā)布后不久就獲得了廣泛的承認。如今已經(jīng)被接受為CAN高層協(xié)議的標準之一。尤其在歐洲,CANopen協(xié)議被認為是在基于CAN的工業(yè)系統中占領(lǐng)導地位的標準,已經(jīng)應用于多種領(lǐng)域,如越野車(chē)、海上電子設備、醫療設備甚至于還可應用于公共汽車(chē)和鐵路,且針對行業(yè)應用,實(shí)現比較簡(jiǎn)潔。
一方面,將CANopen應用于車(chē)載平臺裝置,可使它很方便地掛接到總線(xiàn)上,這樣不僅解決了設備間的互連問(wèn)題,同時(shí)也提高了信息傳輸的可靠性、實(shí)時(shí)性及裝置的標準化、開(kāi)放化程度。另一方面,在國外CANopen的應用已經(jīng)非常廣泛,而在國內有關(guān)CANopen的文章還很少,希望借此文章給從事CAN總線(xiàn)技術(shù)開(kāi)發(fā)的人員提供一些有用的信息,使我國的CAN總線(xiàn)應用早日與國際接軌。
一、CANopen協(xié)議設計的實(shí)質(zhì)和核心內容
CAN 處于OSI網(wǎng)絡(luò )模型中物理層和數據鏈路層,而CANopen是基于CAN的應用層,因為現場(chǎng)總線(xiàn)通常只包括一個(gè)網(wǎng)段,因此不需要第3層(傳輸層)和第4層 (網(wǎng)絡(luò )層),也不需要第5層(會(huì )話(huà)層)、第6層(描述層)的作用。正是因為有了CANopen這樣應用層協(xié)議的存在,從而使CAN總線(xiàn)成為了一個(gè)更加完善的網(wǎng)絡(luò )系統。
1.1 CANopen協(xié)議設計的實(shí)質(zhì)--面向對象
CANopen 協(xié)議在設計的時(shí)候,對總線(xiàn)上傳輸的數據進(jìn)行了分類(lèi),即每一個(gè)傳輸數據都是某一特定類(lèi)的對象,從而實(shí)現了面向對象的程序設計。在CANopen中每一類(lèi)傳輸對象都有其規范化的格式,從而實(shí)現了應用層結構上的統一。這樣無(wú)論從規范化角度,還是從模塊化程序設計角度講,CANopen協(xié)議都是一個(gè)設計比較完善的協(xié)議。
在CANopen 協(xié)議的數據傳輸中共定義了4類(lèi)對象(通訊模式),分別為管理對象(NMT)、服務(wù)數據對象(SDO)、過(guò)程數據對象(PDO)和特殊功能對象。其中NMT 用來(lái)傳遞主節點(diǎn)對整個(gè)網(wǎng)絡(luò )系統的管理信息,SDO用來(lái)傳遞網(wǎng)絡(luò )系統中的配置信息,PDO用來(lái)傳遞過(guò)程數據信息(例如電壓的變化值),特殊功能對象包括同步對象(SYNC)、緊急對象(Emergency)、時(shí)間基準(Time-Stamp)等。各類(lèi)對象傳輸時(shí)的幀格式在參考文獻中有詳細的規定,在這里就不詳細介紹了。在實(shí)際的工程中用戶(hù)只要根據需要,按照類(lèi)的規定把要傳輸的數據映射到相應的對象中就可以了。
1.2 CANopen協(xié)議中的核心內容--對象字典(Object Dictionary)
為了對各類(lèi)對象進(jìn)行規范化和方便的管理,在CANopen協(xié)議中定義了對象字典的概念。它是一個(gè)有序的對象組,其中定義了一個(gè)設備的所有信息,在 CANopen網(wǎng)絡(luò )系統中每一個(gè)設備都要有一個(gè)唯一的對象字典,每個(gè)設備的對象字典具有結構相同、內容不同的特點(diǎn)。通過(guò)對對象字典中的對象定義一個(gè)唯一的 16位主索引和8位子索引,就可以方便地訪(fǎng)問(wèn)對象字典中的對象。CANopen協(xié)議中定義了通用的對象字典結構,其中規定了各種數據在對象字典中的位置區域。在我們建立設備對象字典的時(shí)候,主要工作應集中在定義通訊子協(xié)議區域(1000~1FFF)和制造商特定子協(xié)議區域(2000~5FFF)部分。
在整個(gè)CANopen協(xié)議中對象字典起到了連接DLL模塊(通訊接口)和應用程序的作用。我們要想把一個(gè)應用程序中的數據(如I/O的輸入值)送到CAN總線(xiàn)上,我們首先要確定這個(gè)數據屬于對象字典中的哪一類(lèi)對象(例如I/O口的輸入值應為過(guò)程數據對象),然后用DLL模塊訪(fǎng)問(wèn)對象字典中相應的對象并把其按照相應的幀格式發(fā)送到CAN總線(xiàn)上去,從而完成了數據的傳輸。
2.1 數據通訊系統的組成
在我們的調平系統中,平臺采用4點(diǎn)支撐,由4個(gè)1KW、24V的直流電機和減速器、T型絲杠相連接,以控制平臺中4個(gè)支點(diǎn)的上升或下降。主控制器、4個(gè)電機控制器和USB-to-CAN通過(guò)CAN總線(xiàn)相連,水平傳感器和手操器通過(guò)RS232接口和主控制器相連,其結構如圖1所示。其中主控制、電機控制器和手操器為我們自行開(kāi)發(fā)的嵌入式設備,電機控制器可以實(shí)現準確的電機位置控制,手操器可以提供手動(dòng)調平功能。水平傳感器為Crossbow Technology公司生產(chǎn)的CXTD02型,它可以由RS232口送出精確的平臺X、Y軸角度密位信息;USB-to-CAN設備為德國IXXAT公司生產(chǎn)的USB-to-CAN compact,其中包含了SJA1000 CAN控制器可完成消息的收發(fā),并可以將CAN信號轉換成USB信號傳遞給上位機,上位機通過(guò)運行IXXAT公司的監視軟件(miniMON)可以在線(xiàn)觀(guān)察總線(xiàn)上傳輸的數據。
2.2 系統中CAN硬件接口設計
在主控制器和電機控制器中微處理器采用FUJITSU公司的MB90F543芯片,其本身帶有內嵌CAN控制器,因此只需加一個(gè)CAN總線(xiàn)驅動(dòng)器,就可方便地實(shí)現主控制器和4個(gè)電機控制器之間的通信。本系統中選用了PCA82C250收發(fā)控制器,該芯片提供對總線(xiàn)的差動(dòng)發(fā)送能力和對CAN控制器的差動(dòng)接收能力,PCA82C250是標準的CAN收發(fā)器,實(shí)驗顯示,只要總線(xiàn)的每米電容小于120pf條件下,就滿(mǎn)足CAN總線(xiàn)傳送距離的標準。CAN總線(xiàn)驅動(dòng)電路圖略。為了加強總線(xiàn)的抗干擾能力,總線(xiàn)的通信介質(zhì)采用帶屏蔽線(xiàn)的雙絞線(xiàn)。
2.3 對象字典的建立
在網(wǎng)絡(luò )系統中每一個(gè)設備都要有一個(gè)唯一的對象字典,其中定義了各種對象的屬性(如ID、發(fā)送方式等)。在我們的系統中共有5個(gè)節點(diǎn),它們以主從方式工作(1 個(gè)主節點(diǎn)和4個(gè)從節點(diǎn)),主控制器對應主節點(diǎn),4個(gè)電機控制器對應4個(gè)從節點(diǎn)。為了系統擴展的方便,我們設4個(gè)從節點(diǎn)的節點(diǎn)號分別為10、11、12、 13,在各個(gè)節點(diǎn)對象字典中的對象ID都采用預定義連接集中規定的11位ID,它由4位功能代碼和7位節點(diǎn)號組成。
下面以主節點(diǎn)對象字典的建立為例說(shuō)明對象字典的建立方法。首先要分析主節點(diǎn)在網(wǎng)絡(luò )中的作用,從而確定對象字典中要包含哪一類(lèi)對象及其個(gè)數,然后定義對象的屬性。在我們的系統中主節點(diǎn)要支持從節點(diǎn)的訪(fǎng)問(wèn),因此需要一個(gè)SDO;主節點(diǎn)要向4個(gè)從節點(diǎn)發(fā)送位置信息,因此要有4個(gè)Tx-PDO和4個(gè)Rx-PDO,其中每個(gè)PDO又由Tx(Rx)PDO Parameter和Tx(Rx)-PDO mapping兩部分組成;當系統中發(fā)生緊急情況的時(shí)候主節點(diǎn)要發(fā)送緊急信息,因此要有1個(gè)應急指示緊急對象(Emergency Object);向從節點(diǎn)發(fā)送的位置信息保存在制造商特定子協(xié)議區域(2000~5FFF)中;另外主節點(diǎn)要完成各個(gè)從節點(diǎn)的管理工作,因此還要有NMT 管理模塊。SDO、PDO的屬性設置如表1、2所示,由于4對PDO的屬性除了映射值不用以外,其他屬性基本相同,因此只給出了向(從)節點(diǎn)號為10的從節點(diǎn)發(fā)送(接收)PDO的設置。
表1 | 表2 | |||||||||||||||||||||||
|
|
在表2中傳輸類(lèi)型255表示異步、事件觸發(fā)傳輸,映射參數0x20000110按照從左至右的順序分別表示將對象字典中主索引為2000H,子索引為01H的16位數值(10)映射到PDO中去。也就是說(shuō)將保存在2000H處的位置信息映射到PDO中發(fā)送。
在對象字典建立完成之后要生成EDS(Electronic Data Sheet)來(lái)描述這個(gè)設備的對象字典,主節點(diǎn)的EDS如圖2所示。
2.3 DLL模塊的實(shí)現
MB90F543具有兩個(gè)CAN控制器分別為CAN0和CAN1,我們只用CAN0,這樣CAN1可以在系統擴展時(shí)使用。CAN控制器具有如下的特點(diǎn):
- 符合規范CAN2.0A和CAN2.0B;
- 支持通過(guò)接收遠程幀發(fā)送數據;
- 16個(gè)收、發(fā)緩沖區,每個(gè)緩沖區都具有29比特ID和8字節數據,多級緩沖配置;
- 每個(gè)緩沖區支持標準幀和擴展幀的多種過(guò)濾方式;
- 波特率可從10Kbit/s到1Mbit/s。
在我們系統中使用規范CAN2.0A,波特率為125k/s,并且為每類(lèi)消息分配了一個(gè)獨立的緩沖區,這樣做可以減少中斷程序的處理時(shí)間,從而提高了系統的實(shí)時(shí)性。
![]() | ![]() |
![]() |
DLL模塊是對象字典和CAN控制器之間的通訊接口,它要完成的主要工作是:
- 對CAN控制器進(jìn)行初始化,其中包括波特率設置和CAN寄存器初始化等;
- 對CAN引發(fā)的中斷處理,其中包括:
- 1)在發(fā)送時(shí)通過(guò)訪(fǎng)問(wèn)對象字典將各種對象按照規定的幀格式發(fā)送到總線(xiàn)上;
- 2)在接收的時(shí)候把接收到的對象信息寫(xiě)到對象字典的相應位置中去。
我們用兩個(gè)函數-DLL_InitCAN ()和DLL_Interrupt()來(lái)實(shí)現CAN控制器的初始化和中斷處理功能。
2.4 主控制器的應用程序流程
在系統中各個(gè)從節點(diǎn)被配置成節點(diǎn)監測狀態(tài),主節點(diǎn)通過(guò)檢測4個(gè)從節點(diǎn)發(fā)送的周期性心跳報文(Heartbeat)來(lái)判斷各個(gè)從節點(diǎn)的工作狀態(tài)。
主控制器的應用程序流程為:在系統上電后主控制器首先判斷各個(gè)從控制器是否發(fā)出Boot-Up消息,如果有Boot-up消息則讓各個(gè)從節點(diǎn)進(jìn) Operational狀態(tài)并接著(zhù)判斷是否有心跳報文(Heartbeat)產(chǎn)生以判斷各節點(diǎn)是否成功進(jìn)Operational狀態(tài),否則通過(guò)指示燈報錯,然后采集水平傳感器輸出的X、Y軸密位信息并判斷是否在誤差帶內,接著(zhù)通過(guò)調平策略解算出3個(gè)電機應該上移或下移的位置(3點(diǎn)即可解決一個(gè)平面),并且通過(guò)CAN總線(xiàn)將位置信息傳送給電機控制器,電機控制器在運動(dòng)了相應的位置后向主控制器發(fā)出確認消息,主控制器在接到確認消息后,再次采集水平傳感器輸出的位置信號,如果位置誤差在誤差帶內則數據傳輸停止,否則循環(huán)上述過(guò)程。其流程圖如圖3所示。
3 實(shí)驗結果
整個(gè)平臺在調平過(guò)程中達到了滿(mǎn)意的效果,調平的時(shí)間在2min之內,調平精度能達到3',這從一方面驗證了通訊系統的可靠性。為了更直觀(guān)地觀(guān)察數據傳輸過(guò)程,我們通過(guò)運行監視程序(miniMON)可以在上位機上實(shí)時(shí)地顯示數據傳輸的全過(guò)程,這無(wú)論從系統調試方面還是從系統檢驗方面來(lái)講都是很有意義的。系統運行時(shí)的數據通訊如圖4所示。通過(guò)監視數據的傳輸,我們可以更加確認數據傳輸的可靠性。
4 結束語(yǔ)
車(chē)載設備的網(wǎng)絡(luò )化、標準化是組成車(chē)載監控系統的一個(gè)重要條件,同時(shí)也是車(chē)載設備發(fā)展的一個(gè)重要方向。CANopen協(xié)議作為CAN總線(xiàn)的應用層協(xié)議,在車(chē)輛領(lǐng)域有著(zhù)廣闊的應用前景。本文通過(guò)把車(chē)載平臺做成符合CANopen協(xié)議的標準化裝置,從而增強了設備的可擴展性同時(shí)也提高了數據傳輸的可靠性,可以滿(mǎn)足現代化戰爭中軍用車(chē)載設備的要求。
評論