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