王 碩,李 恩,趙曉光
WANG Shuo,LI En,ZHAO Xiao-guang
(中國科學院 自動化研究所,北京 100190)
20世紀80年代中期,由Bosch公司研發(fā)出的CAN總線,即控制器局域網(wǎng)(Controller Area Network)[1],由于其自身具有典型的總線型結(jié)構(gòu)、穩(wěn)定可靠、實時性、抗干擾性強、傳輸距離遠等特點,在汽車行業(yè)領(lǐng)域,占有著非常重要的主導地位。然而,由于CAN總線本身只定義了ISO/OSI模型中的第一層物理層和第二層數(shù)據(jù)鏈路層,在實際使用中,用戶還需要自己定義應用層的協(xié)議,而由此造成了不同廠商的CAN設備間無法正常通信。為了以CAN 總線為基礎構(gòu)成完整的工業(yè)控制現(xiàn)場總線系統(tǒng),制定相應的應用層協(xié)議,解決設備互連和兼容問題就顯得尤為重要。
CANopen協(xié)議即是這樣的一個CAN應用層協(xié)議。近年來,作為CAN高層協(xié)議的標準之一,CANopen協(xié)議由于其公共、開放、通用且易于開發(fā)的特性,在發(fā)布后不久就獲得了廣泛的承認,在工程機械領(lǐng)域中得到了廣泛應用,在高空作業(yè)車領(lǐng)域亦是如此。一方面,將CANopen應用于高空作業(yè)車控制系統(tǒng),解決了不同廠商生產(chǎn)的傳感器、控制器等模塊間的兼容問題。其次,CANopen提高了通信的標準化,開放化程度,使得通訊的可靠性、實時性進一步增強。再次,由于國外該領(lǐng)域中CANopen使用已經(jīng)相當普遍,國內(nèi)相關(guān)產(chǎn)品研究相對較少,本文希望通過該系統(tǒng)設計,給高空作業(yè)車控制系統(tǒng)的國產(chǎn)化提供些參考。
CANopen協(xié)議于20世紀90年代末,由CiA組織(CAN-in-Automation)在CAL(CAN Application Layer)的基礎上發(fā)展而來,一經(jīng)推出便在歐洲得到了廣泛的認可與應用[1,2]。經(jīng)過對CANopen協(xié)議規(guī)范文本的多次修改,使得CANopen協(xié)議的穩(wěn)定性、實時性、抗干擾性都得到了進一步的提高。并且CiA在各個行業(yè)不斷推出設備子協(xié)議,使CANopen協(xié)議在各個行業(yè)得到更快的發(fā)展與推廣。目前CANopen協(xié)議已經(jīng)在運動控制、車輛工業(yè)、電機驅(qū)動、工程機械、船舶海運等行業(yè)得到廣泛的應用[3]。尤其是在歐洲,CANopen協(xié)議被認為是在基于CAN的工業(yè)系統(tǒng)中占領(lǐng)導地位的標準。正是CANopen協(xié)議的出現(xiàn),實現(xiàn)了應用層結(jié)構(gòu)上的統(tǒng)一,進一步完善了CAN總線的網(wǎng)絡系統(tǒng),使其更加規(guī)范化,更具有競爭力。
1.1 對象字典
對象字典(OD:Object Dictionary),是CANopen協(xié)議中的核心概念,在其他的現(xiàn)場總線如Profibus中也有類似的描述。在CANopen協(xié)議中,它是一個有序的對象組[4],作為設備規(guī)范中的重要組成部分,其包括了對設備屬性參數(shù)和通訊參數(shù)的全部描述。CANopen協(xié)議中定義了對象字典的通用結(jié)構(gòu),其中規(guī)定了各種對象參數(shù)在對象字典中的位置區(qū)域,在建立設備對象字典時,應注意查詢對應的位置關(guān)系及相應子協(xié)議。每個CANopen子節(jié)點都有各自相對應的對象字典,其中的每個對象采用唯一的16位索引值和8位的子索引來尋址。除此之外,對象字典還定義了對象參數(shù)的功能、數(shù)據(jù)類型、相應對象值等,提供給CANopen主節(jié)點訪問。
1.2 CANopen的通訊
根據(jù)CANopen協(xié)議,總線上數(shù)據(jù)傳輸都是通過發(fā)送某一特定類的通信對象完成的,它共定義了4種通信對象:管理報文、服務數(shù)據(jù)對象SDO(Service Data Object)、過程數(shù)據(jù)對象PDO(Process Data Object),以及預定義報文或稱特殊功能對象[5,6]。其中管理報文用來傳遞主節(jié)點對整個網(wǎng)絡系統(tǒng)的管理信息。SDO用來提供對設備對象字典的訪問,其傳送必須由主動訪問對象字典的客戶端啟動,對象字典被訪問的設備即服務端響應。SDO不支持廣播模式,客戶端發(fā)送訪問請求后,需要服務端返回正確的應答,是建立在兩個設備間的一種點對點通訊。由于CAN總線的每幀數(shù)據(jù)最多傳輸8字節(jié),對于多于8字節(jié)的數(shù)據(jù),需要組成一個塊(Block)進行傳輸,在SDO中叫做節(jié)(Segment)。每個設備的缺省設置包含一個SDO,也可以支持多個SDO。PDO則用于傳遞過程實時數(shù)據(jù)信息,每個PDO 對應于CAN總線唯一的標識符,可周期性發(fā)送,無需應答信息并使用所有的八個字節(jié)的數(shù)據(jù)域來傳輸數(shù)據(jù)信息。相比于SDO,PDO只能被一個節(jié)點發(fā)送,但可有多個節(jié)點接收。而特殊功能對象則包括同步對象(SYNC)、緊急對象(Emergency)、時間基準(Time Stamp)等特定對象。
1.3 CANopen設備模型
圖1 CANopen設備模型
如果將遵循CANopen協(xié)議的設備抽象化,可以得到如圖1所示的一個CANopen設備模型:其一端連接CAN總線并貫穿其中,通過CAN總線上傳輸?shù)母魍ㄓ崒ο笸瓿蓴?shù)據(jù)通訊的任務。而每個設備都有唯一的一個對象字典,它是承載各種設備參數(shù)的載體,是連接應用數(shù)據(jù)、參數(shù)配置與總線通訊的橋梁。最后,設備的最終目標,即應用部分接口的末端則連接著相應的設備的I/O接口,通過此部分輸入采集的數(shù)據(jù),輸出控制命令,完成設備的應用目標。
智能高空作業(yè)車經(jīng)過長時間的發(fā)展,在可靠性、安全性、舒適性、操作性等方面都有較大提高,為了防止事故、各國生產(chǎn)的高空作業(yè)車都注意配備完善、可靠的安全裝置,在整車的控制系統(tǒng)方面投入了大量人力物力[5]。文中所設計的控制系統(tǒng)為了實現(xiàn)在不同機型上的軟硬件復制與拼裝,利用了模塊化的思想,對控制系統(tǒng)分模塊設計,使得各模塊具有相對的獨立性。這樣用戶在使用時可根據(jù)具體車型的需求進行控制系統(tǒng)的集成。智能高空作業(yè)車控制系統(tǒng)的系統(tǒng)結(jié)構(gòu)如圖2所示。
圖2 高空作業(yè)車控制系統(tǒng)結(jié)構(gòu)
根據(jù)系統(tǒng)設計要求,系統(tǒng)中控制方式為嵌入式閉環(huán)控制,采用專門為工程機械設計的專用控制器。通訊方面,每個模塊備有兩路CAN通道,作為CANopen協(xié)議的物理層。從圖中可以看出各模塊都包含具有一定控制能力的處理器,其中I/O信號擴展模塊主要負責對傳感器采集來的臂架的幅角、臂長和方位等物理量電信號進行監(jiān)控。而負責采集數(shù)據(jù)的傳感器的輸出信號有總線型信號(CANopen協(xié)議格式)和模擬量信號,總線型信號可直接將它們通過CAN總線送給主控制器模塊;模擬量信號經(jīng)過模數(shù)轉(zhuǎn)換后,亦通過CAN總線送給主控制器。由主控制器模塊負責分析處理,并通知功率擴展模塊和信號擴展模塊,由它們分別輸出相應PWM(脈寬調(diào)制波)信號、數(shù)字量輸出信號,給出相應提示和聲光報警。最終控制相應比例閥、開關(guān)閥做出響應,驅(qū)動整車液壓機械臂的運動,實現(xiàn)自動收車、自動展車、智能避障、防自損等高空作業(yè)車的智能運動。
在電路保護方面,為了防止控制對象端(高空作業(yè)車)采集的信號突變或發(fā)生強干擾,破壞主控模塊內(nèi)部電路,設計時在信號輸入端與控制電路間采用了保險絲和光耦隔離元件等,使得信號采集端具有短接保護、過載保護等功能,并與控制端完全隔離,消除互相間存在的共模干擾。在信號輸出端,為了防止輸出短路和過流過熱,造成機械臂液壓閥被非正常驅(qū)動,甚至現(xiàn)場事故的發(fā)生,電路中使用了Infenion的BTS650P、BTS721L1智能電源開關(guān)。另一方面,電路中預留了相應冗余的I/O端口,并將主控制器與擴展存儲器獨立出來,利用接插件與主控板相連,這樣設計大大方便了控制系統(tǒng)的維修和升級,也降低了相應成本。
3.1 CANopen協(xié)議在系統(tǒng)中的實現(xiàn)
如上所述,在CANopen中每一個設備都有一個相對應的對象字典,用于定義對象屬性,如設備屬性參數(shù)和通訊參數(shù)等。所以,完成對象字典的設計是CANopen應用中的重要一環(huán)。本文為某型號高空作業(yè)車設計了控制系統(tǒng),該系統(tǒng)共有11個節(jié)點,以主從方式工作,1個主節(jié)點和10個從節(jié)點。主控制器模塊對應主節(jié)點,10個從節(jié)點分別由4個長度角度傳感器,2個信號擴展模塊,超聲測距傳感器、總線手柄、顯示模塊、功率擴展模塊各1個組成。
這里我們以高空作業(yè)車控制系統(tǒng)中顯示模塊為例,說明設備對象字典的建立過程。如前所述,CANopen協(xié)議中定義了對象字典的通用結(jié)構(gòu),其中通訊子協(xié)議和制造商子協(xié)議部分是我們主要需要設計的部分,它們代表的索引值區(qū)間分別是0x1000至0x1FFF和0x2000至0x5FFF。對于通訊子協(xié)議部分,除了軟硬件版本號等固定對象參數(shù)外,需要根據(jù)顯示模塊的功能確定所需通訊對象的種類和數(shù)量,并據(jù)此分配相應的對象空間。在該系統(tǒng)中顯示模塊作為從節(jié)點,主要支持主節(jié)點的訪問,配合系統(tǒng)參數(shù)設置,因此需要一個SDO。其次,顯示模塊需要從其他從節(jié)點處獲得相應傳感器數(shù)據(jù)信息用于顯示,并發(fā)送顯示器按鍵信息給主節(jié)點。由于每個PDO最多傳輸8字節(jié)數(shù)據(jù),根據(jù)數(shù)字量信號和總線信號傳輸?shù)男枰?,這里配置了1個發(fā)送PDO和4個接收PDO。具體的對象字典如表1所示。
表1 顯示模塊的對象字典
除了對象字典的設置,在CANopen協(xié)議應用中,其網(wǎng)絡初始化boot-up過程是網(wǎng)絡正常運行的前提,該過程過后,系統(tǒng)方可正常通訊。具體到本文所設計的高空作業(yè)車控制系統(tǒng),首先要將控制模塊主節(jié)點和所有從節(jié)點分別上電,初始化物理層CAN芯片并使各節(jié)點自動從初始化(Initialising)狀態(tài)進入預操作(Pre-Operational)狀態(tài);其次,主節(jié)點根據(jù)電子數(shù)據(jù)文檔文件(EDS:Electronic Data Sheet)中的描述,向從節(jié)點發(fā)送SDO,訪問并修改從節(jié)點的對象字典中的對象設置;最后由主節(jié)點向從節(jié)點發(fā)送NMT 指令,使從節(jié)點進入運行(Operational)狀態(tài),至此主節(jié)點和從節(jié)點即可以通過PDO和SDO的發(fā)送與接收進行正常通訊和數(shù)據(jù)交換了。
3.2 軟件控制流程
軟件設計的主要目的在于通過設置相應參數(shù),在保證正常通訊的同時,響應控制命令并根據(jù)接收到的傳感器的信息,完成指定操作和處理相關(guān)故障并報警。以某型號高空作業(yè)車控制系統(tǒng)的主節(jié)點即主控制模塊的軟件程序為例,如前文所述在節(jié)點上電之后,主節(jié)點確認收到從節(jié)點發(fā)送的Boot-up報文,并在確認從節(jié)點進入預操作狀態(tài)后,向從節(jié)點發(fā)送SDO,訪問并修改從節(jié)點的對象字典,對從節(jié)點進行預設置并使從節(jié)點進入操作狀態(tài)。在這之后主節(jié)點進入主循環(huán)體,當主節(jié)點收到SDO時,對其對象字典參數(shù)進行在線修改。與此同時,通過接收從節(jié)點的心跳報文,監(jiān)控各節(jié)點的通訊狀況。如果發(fā)現(xiàn)通訊故障,則停止高空作業(yè)車控制端的一切輸出,停止高空作業(yè)車的一切機械臂動作,并使用聲光報警通告操作人員,以便對故障原因進行檢查直至故障排除。對于通訊而言主循環(huán)中的另一個重要意義便是實時的獲取各模塊、傳感器監(jiān)測到的高空作業(yè)車的實時狀態(tài),并獲取手柄的控制信息,提供給下面的控制功能代碼段,并通過控制代碼判斷動作指令、提供限位報警,并最終驅(qū)動機械臂運動,實現(xiàn)高空作業(yè)車的智能運動控制。
圖3 高空作業(yè)車主控制模塊軟件流程(通訊部分)
基于CANopen的模塊化控制系統(tǒng)設計在高空作業(yè)車領(lǐng)域具有較好的實用性和應用前景。本文的研究工作正是源于這樣的應用背景,通過對CANopen協(xié)議的分析,并將其應用于高空作業(yè)車控制系統(tǒng)設計中,經(jīng)現(xiàn)場調(diào)試,通訊可靠性、實時性達到控制要求,并解決了兼容性問題,為進一步產(chǎn)業(yè)化生產(chǎn)奠定了基礎。
[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]郇極,楊斌,魏繼光.一種開放式的現(xiàn)場總線協(xié)議CANopen [J].制造業(yè)自動化,2002,24,10.
[5]孟詔.基于CANopen協(xié)議的CAN總線控制系統(tǒng)研究[D].北京:北京工業(yè)大學,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.