王 碩,李 恩,趙曉光
WANG Shuo,LI En,ZHAO Xiao-guang
(中國科學院 自動化研究所,北京 100190)
20世紀80年代中期,由Bosch公司研發出的CAN總線,即控制器局域網(Controller Area Network)[1],由于其自身具有典型的總線型結構、穩定可靠、實時性、抗干擾性強、傳輸距離遠等特點,在汽車行業領域,占有著非常重要的主導地位。然而,由于CAN總線本身只定義了ISO/OSI模型中的第一層物理層和第二層數據鏈路層,在實際使用中,用戶還需要自己定義應用層的協議,而由此造成了不同廠商的CAN設備間無法正常通信。為了以CAN 總線為基礎構成完整的工業控制現場總線系統,制定相應的應用層協議,解決設備互連和兼容問題就顯得尤為重要。
CANopen協議即是這樣的一個CAN應用層協議。近年來,作為CAN高層協議的標準之一,CANopen協議由于其公共、開放、通用且易于開發的特性,在發布后不久就獲得了廣泛的承認,在工程機械領域中得到了廣泛應用,在高空作業車領域亦是如此。一方面,將CANopen應用于高空作業車控制系統,解決了不同廠商生產的傳感器、控制器等模塊間的兼容問題。其次,CANopen提高了通信的標準化,開放化程度,使得通訊的可靠性、實時性進一步增強。再次,由于國外該領域中CANopen使用已經相當普遍,國內相關產品研究相對較少,本文希望通過該系統設計,給高空作業車控制系統的國產化提供些參考。
CANopen協議于20世紀90年代末,由CiA組織(CAN-in-Automation)在CAL(CAN Application Layer)的基礎上發展而來,一經推出便在歐洲得到了廣泛的認可與應用[1,2]。經過對CANopen協議規范文本的多次修改,使得CANopen協議的穩定性、實時性、抗干擾性都得到了進一步的提高。并且CiA在各個行業不斷推出設備子協議,使CANopen協議在各個行業得到更快的發展與推廣。目前CANopen協議已經在運動控制、車輛工業、電機驅動、工程機械、船舶海運等行業得到廣泛的應用[3]。尤其是在歐洲,CANopen協議被認為是在基于CAN的工業系統中占領導地位的標準。正是CANopen協議的出現,實現了應用層結構上的統一,進一步完善了CAN總線的網絡系統,使其更加規范化,更具有競爭力。
1.1 對象字典
對象字典(OD:Object Dictionary),是CANopen協議中的核心概念,在其他的現場總線如Profibus中也有類似的描述。在CANopen協議中,它是一個有序的對象組[4],作為設備規范中的重要組成部分,其包括了對設備屬性參數和通訊參數的全部描述。CANopen協議中定義了對象字典的通用結構,其中規定了各種對象參數在對象字典中的位置區域,在建立設備對象字典時,應注意查詢對應的位置關系及相應子協議。每個CANopen子節點都有各自相對應的對象字典,其中的每個對象采用唯一的16位索引值和8位的子索引來尋址。除此之外,對象字典還定義了對象參數的功能、數據類型、相應對象值等,提供給CANopen主節點訪問。
1.2 CANopen的通訊
根據CANopen協議,總線上數據傳輸都是通過發送某一特定類的通信對象完成的,它共定義了4種通信對象:管理報文、服務數據對象SDO(Service Data Object)、過程數據對象PDO(Process Data Object),以及預定義報文或稱特殊功能對象[5,6]。其中管理報文用來傳遞主節點對整個網絡系統的管理信息。SDO用來提供對設備對象字典的訪問,其傳送必須由主動訪問對象字典的客戶端啟動,對象字典被訪問的設備即服務端響應。SDO不支持廣播模式,客戶端發送訪問請求后,需要服務端返回正確的應答,是建立在兩個設備間的一種點對點通訊。由于CAN總線的每幀數據最多傳輸8字節,對于多于8字節的數據,需要組成一個塊(Block)進行傳輸,在SDO中叫做節(Segment)。每個設備的缺省設置包含一個SDO,也可以支持多個SDO。PDO則用于傳遞過程實時數據信息,每個PDO 對應于CAN總線唯一的標識符,可周期性發送,無需應答信息并使用所有的八個字節的數據域來傳輸數據信息。相比于SDO,PDO只能被一個節點發送,但可有多個節點接收。而特殊功能對象則包括同步對象(SYNC)、緊急對象(Emergency)、時間基準(Time Stamp)等特定對象。
1.3 CANopen設備模型

圖1 CANopen設備模型
如果將遵循CANopen協議的設備抽象化,可以得到如圖1所示的一個CANopen設備模型:其一端連接CAN總線并貫穿其中,通過CAN總線上傳輸的各通訊對象完成數據通訊的任務。而每個設備都有唯一的一個對象字典,它是承載各種設備參數的載體,是連接應用數據、參數配置與總線通訊的橋梁。最后,設備的最終目標,即應用部分接口的末端則連接著相應的設備的I/O接口,通過此部分輸入采集的數據,輸出控制命令,完成設備的應用目標。
智能高空作業車經過長時間的發展,在可靠性、安全性、舒適性、操作性等方面都有較大提高,為了防止事故、各國生產的高空作業車都注意配備完善、可靠的安全裝置,在整車的控制系統方面投入了大量人力物力[5]。文中所設計的控制系統為了實現在不同機型上的軟硬件復制與拼裝,利用了模塊化的思想,對控制系統分模塊設計,使得各模塊具有相對的獨立性。這樣用戶在使用時可根據具體車型的需求進行控制系統的集成。智能高空作業車控制系統的系統結構如圖2所示。

圖2 高空作業車控制系統結構
根據系統設計要求,系統中控制方式為嵌入式閉環控制,采用專門為工程機械設計的專用控制器。通訊方面,每個模塊備有兩路CAN通道,作為CANopen協議的物理層。從圖中可以看出各模塊都包含具有一定控制能力的處理器,其中I/O信號擴展模塊主要負責對傳感器采集來的臂架的幅角、臂長和方位等物理量電信號進行監控。而負責采集數據的傳感器的輸出信號有總線型信號(CANopen協議格式)和模擬量信號,總線型信號可直接將它們通過CAN總線送給主控制器模塊;模擬量信號經過模數轉換后,亦通過CAN總線送給主控制器。由主控制器模塊負責分析處理,并通知功率擴展模塊和信號擴展模塊,由它們分別輸出相應PWM(脈寬調制波)信號、數字量輸出信號,給出相應提示和聲光報警。最終控制相應比例閥、開關閥做出響應,驅動整車液壓機械臂的運動,實現自動收車、自動展車、智能避障、防自損等高空作業車的智能運動。
在電路保護方面,為了防止控制對象端(高空作業車)采集的信號突變或發生強干擾,破壞主控模塊內部電路,設計時在信號輸入端與控制電路間采用了保險絲和光耦隔離元件等,使得信號采集端具有短接保護、過載保護等功能,并與控制端完全隔離,消除互相間存在的共模干擾。在信號輸出端,為了防止輸出短路和過流過熱,造成機械臂液壓閥被非正常驅動,甚至現場事故的發生,電路中使用了Infenion的BTS650P、BTS721L1智能電源開關。另一方面,電路中預留了相應冗余的I/O端口,并將主控制器與擴展存儲器獨立出來,利用接插件與主控板相連,這樣設計大大方便了控制系統的維修和升級,也降低了相應成本。
3.1 CANopen協議在系統中的實現
如上所述,在CANopen中每一個設備都有一個相對應的對象字典,用于定義對象屬性,如設備屬性參數和通訊參數等。所以,完成對象字典的設計是CANopen應用中的重要一環。本文為某型號高空作業車設計了控制系統,該系統共有11個節點,以主從方式工作,1個主節點和10個從節點。主控制器模塊對應主節點,10個從節點分別由4個長度角度傳感器,2個信號擴展模塊,超聲測距傳感器、總線手柄、顯示模塊、功率擴展模塊各1個組成。
這里我們以高空作業車控制系統中顯示模塊為例,說明設備對象字典的建立過程。如前所述,CANopen協議中定義了對象字典的通用結構,其中通訊子協議和制造商子協議部分是我們主要需要設計的部分,它們代表的索引值區間分別是0x1000至0x1FFF和0x2000至0x5FFF。對于通訊子協議部分,除了軟硬件版本號等固定對象參數外,需要根據顯示模塊的功能確定所需通訊對象的種類和數量,并據此分配相應的對象空間。在該系統中顯示模塊作為從節點,主要支持主節點的訪問,配合系統參數設置,因此需要一個SDO。其次,顯示模塊需要從其他從節點處獲得相應傳感器數據信息用于顯示,并發送顯示器按鍵信息給主節點。由于每個PDO最多傳輸8字節數據,根據數字量信號和總線信號傳輸的需要,這里配置了1個發送PDO和4個接收PDO。具體的對象字典如表1所示。

表1 顯示模塊的對象字典
除了對象字典的設置,在CANopen協議應用中,其網絡初始化boot-up過程是網絡正常運行的前提,該過程過后,系統方可正常通訊。具體到本文所設計的高空作業車控制系統,首先要將控制模塊主節點和所有從節點分別上電,初始化物理層CAN芯片并使各節點自動從初始化(Initialising)狀態進入預操作(Pre-Operational)狀態;其次,主節點根據電子數據文檔文件(EDS:Electronic Data Sheet)中的描述,向從節點發送SDO,訪問并修改從節點的對象字典中的對象設置;最后由主節點向從節點發送NMT 指令,使從節點進入運行(Operational)狀態,至此主節點和從節點即可以通過PDO和SDO的發送與接收進行正常通訊和數據交換了。
3.2 軟件控制流程
軟件設計的主要目的在于通過設置相應參數,在保證正常通訊的同時,響應控制命令并根據接收到的傳感器的信息,完成指定操作和處理相關故障并報警。以某型號高空作業車控制系統的主節點即主控制模塊的軟件程序為例,如前文所述在節點上電之后,主節點確認收到從節點發送的Boot-up報文,并在確認從節點進入預操作狀態后,向從節點發送SDO,訪問并修改從節點的對象字典,對從節點進行預設置并使從節點進入操作狀態。在這之后主節點進入主循環體,當主節點收到SDO時,對其對象字典參數進行在線修改。與此同時,通過接收從節點的心跳報文,監控各節點的通訊狀況。如果發現通訊故障,則停止高空作業車控制端的一切輸出,停止高空作業車的一切機械臂動作,并使用聲光報警通告操作人員,以便對故障原因進行檢查直至故障排除。對于通訊而言主循環中的另一個重要意義便是實時的獲取各模塊、傳感器監測到的高空作業車的實時狀態,并獲取手柄的控制信息,提供給下面的控制功能代碼段,并通過控制代碼判斷動作指令、提供限位報警,并最終驅動機械臂運動,實現高空作業車的智能運動控制。

圖3 高空作業車主控制模塊軟件流程(通訊部分)
基于CANopen的模塊化控制系統設計在高空作業車領域具有較好的實用性和應用前景。本文的研究工作正是源于這樣的應用背景,通過對CANopen協議的分析,并將其應用于高空作業車控制系統設計中,經現場調試,通訊可靠性、實時性達到控制要求,并解決了兼容性問題,為進一步產業化生產奠定了基礎。
[1]Mahammed Farsi,Karl Ratcliff.CANopen:The Open Communications Solution[C].ISIE'1997.
[2]Mahammed Farsi,Karl Ratcliff.Controlling with CANopen [J].Industry Control Networks,1998.
[3]Gh.,V.Horga,M.,M.Albu,G.Chiriac.Implementingthe CANopen Protocol for the Distributed Control of a Hybrid Electric Vehicle[J].ELECTROMOTION 2009.
[4]郇極,楊斌,魏繼光.一種開放式的現場總線協議CANopen [J].制造業自動化,2002,24,10.
[5]孟詔.基于CANopen協議的CAN總線控制系統研究[D].北京:北京工業大學,2008.
[6]M.Farsi,K.Ratcliff,Manuel Barbosa,An introduction to CAN-open[J].Computer &Control Engineering Journal,August 1999,161-168.
[7]CANopen Communication Profile for Industry System Based on CAL,CiA Draft Standard 301 October,1996.