摘要:本文首先基于CANopen高層協(xié)議,分析CANopen設備模型和CANopen應用系統(tǒng),并描述基于HMI的CANopen系統(tǒng),最后,通過組態(tài)軟件CAN驅(qū)動,實現(xiàn)CANopen設備的人機界面接入。文章以人機界面為核心,描述HMI系統(tǒng)現(xiàn)場總線設備數(shù)據(jù)采集模型,分析HMI系統(tǒng)關注的CANopen協(xié)議的內(nèi)容,闡述了符合CANopen通信協(xié)議的設備在現(xiàn)場總線上的應用,并給出了具體的應用模型。
關鍵詞:HMI(人機界面);HMIBuilder;組態(tài)軟件;CANopen。
1. 系統(tǒng)概述
組態(tài)軟件建立工業(yè)自動化領域的各種標準之上的,詳細架構(gòu)請見圖1.1。
HMI(Human Machine Interface)系統(tǒng)已經(jīng)成為工業(yè)現(xiàn)場的一類應用核心。軟硬一體,符合工業(yè)標準。
通過組態(tài)軟件驅(qū)動接口,組態(tài)軟件采集現(xiàn)場總線設備的數(shù)據(jù),將現(xiàn)場數(shù)據(jù)轉(zhuǎn)給組態(tài)軟件實時數(shù)據(jù)庫,并通過標準控件顯示數(shù)據(jù)信息,通過標準存盤接口完成歷史存儲,以及其他功能,比如報警、邏輯、用戶管理等,最后,通過實時數(shù)據(jù)庫和組態(tài)驅(qū)動接口,還可以實現(xiàn)總線系統(tǒng)中PLC、智能儀表和其他總線設備的控制。
在系統(tǒng)中,現(xiàn)場總線設備是信息的源頭,連接采集傳感器信號,并參與控制執(zhí)行單元,比如通過輸入部分,采集溫濕度、高度信號等模擬量采集(AI)和開關量輸入(DI)信號;通過計算和控制部分,實現(xiàn)數(shù)據(jù)轉(zhuǎn)換、報警判斷等計算和邏輯控制;最后,經(jīng)由輸出部分,通過電壓和電流的模擬量輸出(AO)和開關量輸出(DO)執(zhí)行控制結(jié)果。
圖1.2形象的描述了現(xiàn)場總線設備內(nèi)部構(gòu)造。工業(yè)自動化領域設備內(nèi)部結(jié)構(gòu)有規(guī)律可循,并可以標準化,為現(xiàn)場總線高層協(xié)議設備模型的標準化提供了事實依據(jù)和保障。
2. CANopen設備
2.1. CANopen協(xié)議
圖2.1[1] CAN、CANopen標準在OSI網(wǎng)絡模型中的關系框圖
CANopen協(xié)議是CiA(CAN-in-Automation)組織定義的標準之一。CANopen協(xié)議已得到廣泛的認可,并成為CAN總線在工業(yè)自動化領域的主導標準。
基于OSI通訊模型,CAN總線協(xié)議僅僅定義了物理層和數(shù)據(jù)鏈路層標準,而CANopen協(xié)議是在CAN2.0A協(xié)議基礎上的應用層協(xié)議。
通過圖2.1,我們可以清楚地看到CANopen協(xié)議和CAN協(xié)議的關系。也可以說,CAN協(xié)議是固化在CAN控制器芯片中的,比如我們選用飛利浦SJA1000CAN控制器,則CAN標準協(xié)議已經(jīng)在控制器中實例化或固化;CANopen協(xié)議是應用層協(xié)議,也就是需要我們在軟件編程實現(xiàn)。
所以,CANopen協(xié)議也體現(xiàn)了總線設備在應用軟件中的映射關系或設備輪廓描述(Device Profile)。
2.2. CANopen設備模型
現(xiàn)場總線的作用就是將接近執(zhí)行層面總線設備的信息發(fā)送給總線系統(tǒng)的管理層面主站系統(tǒng)。CAN協(xié)議決定了CAN總線支持多主的通訊方式,使上層系統(tǒng)可以更多種的方式獲取總線設備的信息?;贑AN2.0A協(xié)議,CANopen協(xié)議定義了工業(yè)自動化領域的總線設備模型,明確了總線網(wǎng)絡的管理,定義了總線設備內(nèi)的各種信息對象,而且規(guī)定了設備設置的具體方法。
根據(jù)自動化現(xiàn)場的要求,CANopen設備下面接入信號I/O,采集現(xiàn)場數(shù)據(jù),上部連接CAN總線,向高層傳送設備信息。CANopen協(xié)議為總線設備定義了應用程序軟件、對象字典和CAN-bus通訊,如圖2.2說明了三者間的關系。
圖2.2 [1] CANopen設備模型中應用軟件、對象字典和通訊部分的關系圖
" Communication Interface(通信接口):
提供CAN總線上收發(fā)數(shù)據(jù)報文的服務。規(guī)定了四類CANopen數(shù)據(jù)報文:管理報文(Administrative message:包括LMT、NMT和DBT服務報文)、SDO(Service Data Object:設備配置相關,優(yōu)先級較低的報文)、PDO(Process Data Object:8字節(jié)數(shù)據(jù)快速傳送報文)和特殊報文(Predefined messages or Special Function Objects:包括SYNC、Time Stamp等報文)。設備間的通信都是通過交換通信對象完成的。
" CANopen Object Directory(對象字典):
對象字典描述設備的各項參數(shù)和其網(wǎng)絡性能,以特定的方式描述總線設備包含的報文對象(過程數(shù)據(jù)對象PDO或配置服務數(shù)據(jù)對象SDO),從而實現(xiàn)了設備的功能性描述。這些對象通過一個16位的索引和一個附加的8位子索引來訪問。對象字典位于CAN總線設備通信部分和應用部分之間,向應用程序提供接口,應用程序?qū)ο笞值溥M行操作就可以實現(xiàn)CANopen通信。
" Application(應用程序):
應用程序部分由用戶編寫或者配置,包括功能部分和通信部分。通信部分通過對對象字典進行操作實現(xiàn)CANopen通信,而功能部分由用戶根據(jù)應用要求實現(xiàn)。比如CAN控制器,應用程序部分則為過程控制或數(shù)據(jù)處理邏輯,需要用戶編寫。
各個廠家提供的CANopen設備都必須遵循協(xié)議的標準,我們查找設備廠家提供的資料或技術手冊的時候,都可以找到類似Beckhoff公司的總線設備描述(參見圖2.3)。
圖2.3 Beckhoff公司CANopen設備描述
2.3. CANopen系統(tǒng)應用
CANopen協(xié)議應用可以分為下面2個層面:
" 操作應用層面:現(xiàn)場操作人員、現(xiàn)場設備檢查人員等關注,關注可控性、易操作性和操作效率。
目標:監(jiān)測控制,生產(chǎn)操作。 特點:關注CANopen協(xié)議的相關內(nèi)容。
" 系統(tǒng)設置層面:系統(tǒng)集成技術人員、設備維護和改造人員等關注,通過最佳的方案,實現(xiàn)應用系統(tǒng)。
目標:工程實施、系統(tǒng)集成。 特點:關注CA
Nopen協(xié)議整體。
從操作應用層面看,技術操作人員主要是通過已經(jīng)形成的生產(chǎn)線,依靠CANopen系統(tǒng)完成既定的生產(chǎn)工作,也就是通過采集的信號的內(nèi)容展示和分析結(jié)果,關注的是通過設備完成的生產(chǎn)操作。也就是,操作人員關注通過正確的操作方法,順利完成生產(chǎn)任務。這個層面的用戶是人機界面系統(tǒng)的最終使用者。工業(yè)人機界面系統(tǒng)的設計必須考慮這個層面應用的需求。
如圖2.4所示,現(xiàn)場總線系統(tǒng)中,人機界面部分往往是體現(xiàn)操作應用層面。
從系統(tǒng)設置層面看,技術人員要對現(xiàn)場設備進行裝配、設置,甚至編程。技術人員可以根據(jù)設備的說明文檔,依據(jù)現(xiàn)場工程的需求,進行裝配和設置。一般來說,每種設備都有測試或者配置軟件,尤其邏輯控制設備,都配置編程軟件,比如PLC,CANopen設備也是如此!首先,這些軟件都已經(jīng)非常成熟,然后,編程通訊往往有很多不開放的技術,所以,我們必須借助于設備廠商提供的軟件。這個層面的技術人員工作,往往是針對確定的I/O部分,依照明確的工藝需求,進行設備組態(tài)、系統(tǒng)集成等工作,關注系統(tǒng)集成部分,也就是根據(jù)操作應用層面的具體需求進行系統(tǒng)集成。
如圖2.4所示,現(xiàn)場總線系統(tǒng)中,編碼調(diào)試設備和軟件往往體現(xiàn)系統(tǒng)設置層面。
對于人機界面的組態(tài),我們主要是考慮操作應用層面的需求,也就是關注I/O狀態(tài)、控制有關的參數(shù)設置、運行結(jié)果的記錄等。這些為基于HMI的現(xiàn)場總線控制平臺的協(xié)議通訊模式的實現(xiàn)提供了依據(jù)。
HMI組態(tài)關注的數(shù)據(jù)對象主要是過程數(shù)據(jù)對象(PDO)用于在CANopen節(jié)點間傳送過程數(shù)據(jù),如I/O模塊的I/O狀態(tài)的讀取和設定、模擬量采集和模擬量輸出等等。
Node節(jié)點——>HMI平臺 (TxPDO:發(fā)送過程數(shù)據(jù)對象)
Node節(jié)點<——HMI平臺 (RxPDO:接收過程數(shù)據(jù)對象)
系統(tǒng)配置關注的數(shù)據(jù)對象主要是服務數(shù)據(jù)對象(SDO:Server Data Object)服務用于讀寫節(jié)點的對象字典(Object Dictionary)用來在設備之間傳輸大的低優(yōu)先級數(shù)據(jù),實現(xiàn)信息的下載/上傳、請求/應答、分段/加速傳送等操作,用來配置CANopen網(wǎng)絡上的設備。
其他的數(shù)據(jù)對象,比如管理報文、預定義報文、特殊報文,系統(tǒng)配置時,一般會使用。而根據(jù)控制工藝,在操作應用層面,較少使用這些數(shù)據(jù)對象。
2.4. CANopen標識符和數(shù)據(jù)對象
為了減少簡單網(wǎng)絡的組態(tài)工作量,CANopen定義了強制性的缺省標識符(CAN-ID)分配表。這些標志符在預操作狀態(tài)下可用,通過動態(tài)分配還可修改他們。CANopen設備必須向它所支持的通訊對象的提供相應的標識符。
缺省ID分配表是基于11位CAN-ID,包含一個4位的功能碼部分和一個7位的節(jié)點ID(Node-ID)部分。如圖4所示。
圖2.5 [1] PDO數(shù)據(jù)對象11位ID的預定義格式
Node-ID:對應CANopen設備,由系統(tǒng)集成商定義,例如通過設備上的撥碼開關設置。Node-ID范圍是1~127(0不允許被使用)。
Function Code:確定CAN幀的類型,比如:PDO 和SDO:對應CANopen設備的寄存器。在CANopen設備中,常用的PDO為0x180+Node-ID。其中0x180就是指Functon Code。SDO 是用來在設備之間傳輸大的低優(yōu)先級數(shù)據(jù)的服務數(shù)據(jù)對象,典型的功能是配置CANopen網(wǎng)絡上的設備。
比如,PDO 用來傳輸8字節(jié)或更少數(shù)據(jù),沒有其它協(xié)議預設定(意味著數(shù)據(jù)內(nèi)容已預先定義)。 比如:某傾角傳感器上傳的為7個字符,因此它有8個PDO數(shù)據(jù)需要傳到現(xiàn)場總線上。標識符的格式為TPDO=0X180+NODE_ID,因此發(fā)送的PDO可以表示為表3.1的描述。
表3.1 CANopen設備的PDO
3. 組態(tài)軟件通訊
3.1. PC-based的CAN總線接入
組態(tài)軟件與硬件設備組成的CAN總線系統(tǒng),詳細組成請見圖3.1。
圖3.1 CAN總線系統(tǒng)
3.2. 基于HMI的CANopen系統(tǒng)描述
1)、簡單系統(tǒng):HMI + CANopen模塊。
人機界面產(chǎn)品可以直接連接CAN從站模塊,如圖3.2所示。CAN從站模塊主要是I/O模塊,可以采集模擬量I/O數(shù)據(jù)或者控制數(shù)字量I/O,并通過總線方式擴展。比如,帶CAN接口的HMI設備HMITECH TPC-CAN,直接連接芬蘭Axiomatic單軸和雙軸傾角傳感器。
人機界面產(chǎn)品也可以直接連接CAN主站模塊,如圖3.3所示。CAN主站模塊可以是現(xiàn)場總線通訊的可編程控制器,可以擴展直接I/O模塊,也可以連接控制總線擴展模塊。比如,HMITECH TPC-CAN連接EPEC 20
20控制模塊。
2)、復雜系統(tǒng):HMI系統(tǒng)+CANopen站模塊+診斷和配置節(jié)點。
HMI主要完成CANopen系統(tǒng)監(jiān)視和存儲、分析功能。人機界面的優(yōu)勢是友好的人機交互。所以,同人機交互相關的CAN系統(tǒng)信息界面顯示、總線數(shù)據(jù)存儲、數(shù)據(jù)的初步分析等是CAN系統(tǒng)中人機界面所關注的重點。
CAN主站控制器注重實時性,HMI系統(tǒng)注重友好顯示和數(shù)據(jù)存儲。雖然,CAN主站控制器的邏輯也可以部分轉(zhuǎn)移到HMI系統(tǒng),但是,我們還是建議客戶根據(jù)控制工藝的要求,慎重考慮,合理的配置系統(tǒng)。
4. 組態(tài)軟件CAN驅(qū)動
4.1. 組態(tài)軟件CAN驅(qū)動特定
圖4.1 組態(tài)軟件CAN驅(qū)動
組態(tài)軟件的CAN驅(qū)動程序,如圖4.1所示,是人機界面和組態(tài)軟件的接口,其功能和特點是:
·CAN總線數(shù)據(jù)傳遞給組態(tài)軟件的接口:
驅(qū)動要借助系統(tǒng)的設備驅(qū)動接口,讀取CAN總線數(shù)據(jù),并通過組態(tài)軟件的標準形式,傳遞給組態(tài)軟件的實時數(shù)據(jù)庫。
·可以通過多種形式保證數(shù)據(jù)發(fā)送和接收成功:
1)、驅(qū)動內(nèi)部,判斷CAN控制器發(fā)送錯誤信息;
2)、通過寫入設備寄存器,然后,讀取判斷寄存器寫是否成功。
·關注CANopen協(xié)議操作應用層面:
驅(qū)動程序中,并不需要整合CANopen整個協(xié)議棧,支持CAN2.0協(xié)議就足夠。然后,CANopen協(xié)議部分通過組態(tài)邏輯解決。
· 可以通過多種形式保障數(shù)據(jù)的完整性和實時性:
實時性就是最新發(fā)送總線數(shù)據(jù),能夠在規(guī)定的延時內(nèi),進入組態(tài)軟件的實時數(shù)據(jù)庫。完整性就是能夠?qū)⑺械臄?shù)據(jù)報文抓取到組態(tài)軟件,并進行完整的數(shù)據(jù)處理和存儲。根據(jù)控制工藝的要求,我們可以設置總線數(shù)據(jù)上發(fā)的頻率,通過HMI嵌入的CAN控制器設置屏蔽減少非目標數(shù)據(jù),也可以通過組態(tài)軟件對CAN控制器和驅(qū)動緩沖區(qū)的處理數(shù)據(jù)收發(fā)性能。
4.2. HMIBuilder軟件CAN驅(qū)動映射關系
4.2.1. HMIBuilder組態(tài)軟件
HMIBuilder組態(tài)軟件是北京昆侖縱橫科技發(fā)展有限公司推出的分布式組態(tài)軟件。現(xiàn)場總線是HMIBuilder軟件關注的重點之一。
4.2.2. HMIBuilder設備站參數(shù)對應PCI1680U的一個Port口
針對研華PCI-1680U板卡,在設備站參數(shù)設置中,其端口、設備號可以選擇(見圖4.2),波特率可以設定,比如Port1,設備號為0,波特率:250K。這些對應Advantech Device Magnager中的HardwareSetting(見圖4.3)。其協(xié)議類型和遠程幀方式對應CanMEx.exe測試程序中對CAN卡的進一步設置(詳見圖4.4),其中CanMEx.exe在安裝研華Demo后目錄中,如C:\Program Files\Advantech\CAN\CAN Examples\Examples\VC\CanMEx)。
圖4.2 站參數(shù)選擇
圖4.3 HardwareSetting
圖4.4 CanMEx
4.2.3. HMIBuilder模擬量CANopen幀的數(shù)據(jù)域
在圖4.5中,其中Message內(nèi)容為數(shù)據(jù)域的ASCII碼形式解碼。在HMIBuilder中,PCI1680U對應的點參數(shù)的設置方法如圖4.5。其中,ID可以CANopen設備的PDO。如果要讀PDO數(shù)據(jù)域的第一個Byte數(shù)據(jù)。那么設置如下:416:0:U8:R。也就是416表示設備ID,0表示偏移量,U8-表示8位無符號整形。也就是說,起始偏移為數(shù)據(jù)域按照字節(jié)的偏移,取值為0到7。如果按照F32數(shù)據(jù)類型,起始偏移取值為0和1。
圖4.5 點參數(shù)的設置
注意:本驅(qū)動的解碼方法包括8位無符號數(shù)據(jù)、8位帶符號整數(shù)、16位無符號整數(shù)、帶符號整數(shù)、16位BCD整數(shù)、32位無符號整數(shù)、32位帶符號整數(shù)、32位BCD整數(shù)、32位浮點數(shù)。
5. 應用實例
下面,我們針對芬蘭Axiomatic公司MVINC-CO-x-range型號傾角傳感器,實現(xiàn)CANopen模塊的人機界面接入。
1、 物理連接
準備首先正確接線,連接研華的PCI-1680U板卡;然后用研華的隨機測試軟件進行測試。如果測試通訊完成后,再進行下一步,連接帶CAN通訊的下一級設備,在這里我們測試Axiomatic公司MVINC-CO-x-range型號傾角傳感器。
2、 傾角傳感器分析
通過閱讀傳感器的技術說明文檔,我們的目標是通過組態(tài)軟件可以控制傾角傳感器的啟動和停止,同時采集傳感器的傾角信息。模塊的啟動和停止可以通過NMT指令實現(xiàn)。模塊的傾角信息通
過TPDO1數(shù)據(jù)對象周期上傳。我們也知道通過SDO,可以配置對象字典,通過層設置服務(LSS:Layer setting service)可以設置模塊的Node-ID和波特率等,但是,這些不是本文的目標,也就是,這些不是操作應用層面關注的,而是系統(tǒng)設置層面關注的。
3、 HMIBuilder站參數(shù)組態(tài)
設置一個站,選擇驅(qū)動程序。如下:
圖5.1 站參數(shù)設置
配置協(xié)議,參數(shù)設置如下:
用PCI-1680U板卡的第一個端口接收數(shù)據(jù),所以在設備中選擇Port1,設備號選擇第一個設備,波特率選擇250k(和傳感器波特率相同),屏蔽碼為255。
圖5.2 通信設置
4、 傾角傳感器的NMT對象組態(tài)
表5.1 [3] 網(wǎng)絡管理對象(NMT)數(shù)據(jù)報文格式
CAN-ID如果為0X00,表示總線上所有節(jié)點都執(zhí)行相關命令操作。
命令分類為:
表5.2 [3] CAN模塊命令
在HMIBuilder數(shù)據(jù)組態(tài)中,我們設置啟動CAN模塊2個模擬量參數(shù)如圖,要求ID都為0,偏移地址連續(xù),而其分別為0和1。
圖5.3 模擬量參數(shù)設置
注意:
地址為0,偏移量為0
圖5.4 地址無偏移
地址為0,偏移量為1.
圖5.5 地址偏移一位
5、 傾角傳感器TPDO1對象組態(tài)
通過傾角傳感器相關技術文檔,我們可以察看設備定義的數(shù)據(jù)對象字典,確定數(shù)據(jù)報文的數(shù)據(jù)域的內(nèi)容。比如TPDO1,對于MVINC-CO-2-180模塊,CAN數(shù)據(jù)報文發(fā)送7個字節(jié)數(shù)據(jù),數(shù)據(jù)的定義為:
Sub1為緯度角(Latitude angle),16Bits;
Sub2為經(jīng)度角(Longitude angle),16Bits;
Sub3為溫度(temperature),8Bits;
Sub4為輔助輸入(Auxiliary Input),16Bits;
表5.3 [3]MVINC-CO-2-180模塊的TPDO1對象的數(shù)據(jù)字典內(nèi)容
傾角傳感器上傳數(shù)據(jù)的格式:
表5.4 TPDO1對象的數(shù)據(jù)報文
如果我們讀取CAN模塊7個模擬量參數(shù),需要在組態(tài)軟件中做如下設置:
圖5.6 模擬量參數(shù)設置
地址設置如下:
圖5.7 采集上來的數(shù)據(jù)
圖5.7 地址設置 偏移0.對應D0:416:0:U8:R
圖5.8地址設置 偏移1對應D1:416:1:U8:R
注意:
讀上的數(shù)據(jù)為7位,ID不變。設置偏移為0…6
6、 HMIBuilder組態(tài)完成
配置啟動畫面
圖5.9 啟動畫面
運行情況:
圖5.10 運行結(jié)果
6. 結(jié)束語
通過HMIBuilder組態(tài)軟件的CAN總線通信設置,實現(xiàn)了對傾角傳感器數(shù)據(jù)的采集。進一步,我們可以看到:HMI系統(tǒng)中,我們主要關注CANopen協(xié)議的數(shù)據(jù)對象PDO部分,同時,其他數(shù)據(jù)對象也可以根據(jù)現(xiàn)場工藝的要求在組態(tài)軟件中實現(xiàn)。
7. 參考文獻
[1] CANopenn:high-level protocol for CAN-bus, H.Boterenbrood, NIKHEF, Amsterdam, March 20,2000
[2] 《HMIBuilder功能手冊》 北京昆侖縱橫科技發(fā)展科技有限公司
[3] MVINC-CO-X_user_manual_2_08,Author:JKA,Modified:25.07.2007 14:28