作者:李建章 指導:董立華 (北京昆侖縱橫科技有限公司,北京市,010000)
摘要:
本文首先基於CANopen高層協議,分析CANopen設備模型和CANopen應用係統,並描述基於HMI的CANopen係統,最後,通過組態軟件CAN驅動,實現CANopen設備的人機界麵接入。文章以人機界麵為核心,描述HMI係統現場總線設備數據采集模型,分析HMI係統關注的CANopen協議的內容,闡述了符合CANopen通信協議的設備在現場總線上的應用,並給出了具體的應用模型。
關鍵詞:
HMI(人機界麵);HMIBuilder;組態軟件;CANopen。
1. 係統概述
組態軟件建立工業自動化領域的各種標準之上的,詳細架構請見圖1.1。
HMI(Human Machine Interface)係統已經成為工業現場的一類應用核心。軟硬一體,符合工業標準。
通(tong)過(guo)組(zu)態(tai)軟(ruan)件(jian)驅(qu)動(dong)接(jie)口(kou),組(zu)態(tai)軟(ruan)件(jian)采(cai)集(ji)現(xian)場(chang)總(zong)線(xian)設(she)備(bei)的(de)數(shu)據(ju),將(jiang)現(xian)場(chang)數(shu)據(ju)轉(zhuan)給(gei)組(zu)態(tai)軟(ruan)件(jian)實(shi)時(shi)數(shu)據(ju)庫(ku),並(bing)通(tong)過(guo)標(biao)準(zhun)控(kong)件(jian)顯(xian)示(shi)數(shu)據(ju)信(xin)息(xi),通(tong)過(guo)標(biao)準(zhun)存(cun)盤(pan)接(jie)口(kou)完(wan)成(cheng)曆(li)史(shi)存(cun)儲(chu),以(yi)及(ji)其(qi)他(ta)功(gong)能(neng),比(bi)如(ru)報(bao)警(jing)、邏輯、用戶管理等,最後,通過實時數據庫和組態驅動接口,還可以實現總線係統中PLC、智能儀表和其他總線設備的控製。
在係統中,現場總線設備是信息的源頭,連接采集傳感器信號,並參與控製執行單元,比如通過輸入部分,采集溫濕度、高度信號等模擬量采集(AI)和開關量輸入(DI)信號;通過計算和控製部分,實現數據轉換、報警判斷等計算和邏輯控製;最後,經由輸出部分,通過電壓和電流的模擬量輸出(AO)和開關量輸出(DO)執行控製結果。
圖1.2形(xing)象(xiang)的(de)描(miao)述(shu)了(le)現(xian)場(chang)總(zong)線(xian)設(she)備(bei)內(nei)部(bu)構(gou)造(zao)。工(gong)業(ye)自(zi)動(dong)化(hua)領(ling)域(yu)設(she)備(bei)內(nei)部(bu)結(jie)構(gou)有(you)規(gui)律(lv)可(ke)循(xun),並(bing)可(ke)以(yi)標(biao)準(zhun)化(hua),為(wei)現(xian)場(chang)總(zong)線(xian)高(gao)層(ceng)協(xie)議(yi)設(she)備(bei)模(mo)型(xing)的(de)標(biao)準(zhun)化(hua)提(ti)供(gong)了(le)事(shi)實(shi)依(yi)據(ju)和(he)保(bao)障(zhang)。
2. CANopen設備
2.1. CANopen協議
圖2.1
[1] CAN、CANopen標準在OSI網絡模型中的關係框圖
CANopen協議是CiA(CAN-in-Automation)組織定義的標準之一。CANopen協議已得到廣泛的認可,並成為CAN總線在工業自動化領域的主導標準。
基於OSI通訊模型,CAN總線協議僅僅定義了物理層和數據鏈路層標準,而CANopen協議是在CAN2.0A協議基礎上的應用層協議。
通過圖2.1,我們可以清楚地看到CANopen協議和CAN協議的關係。也可以說,CAN協議是固化在CAN控製器芯片中的,比如我們選用飛利浦SJA1000CAN控製器,則CAN標準協議已經在控製器中實例化或固化;CANopen協議是應用層協議,也就是需要我們在軟件編程實現。
所以,CANopen協議也體現了總線設備在應用軟件中的映射關係或設備輪廓描述(Device Profile)。
2.2. CANopen設備模型
現場總線的作用就是將接近執行層麵總線設備的信息發送給總線係統的管理層麵主站係統。CAN協議決定了CAN總線支持多主的通訊方式,使上層係統可以更多種的方式獲取總線設備的信息。基於CAN2.0A協議,CANopen協(xie)議(yi)定(ding)義(yi)了(le)工(gong)業(ye)自(zi)動(dong)化(hua)領(ling)域(yu)的(de)總(zong)線(xian)設(she)備(bei)模(mo)型(xing),明(ming)確(que)了(le)總(zong)線(xian)網(wang)絡(luo)的(de)管(guan)理(li),定(ding)義(yi)了(le)總(zong)線(xian)設(she)備(bei)內(nei)的(de)各(ge)種(zhong)信(xin)息(xi)對(dui)象(xiang),而(er)且(qie)規(gui)定(ding)了(le)設(she)備(bei)設(she)置(zhi)的(de)具(ju)體(ti)方(fang)法(fa)。
根據自動化現場的要求,CANopen設備下麵接入信號I/O,采集現場數據,上部連接CAN總線,向高層傳送設備信息。CANopen協議為總線設備定義了應用程序軟件、對象字典和CAN-bus通訊,如圖2.2說明了三者間的關係。
圖2.2
[1] CANopen設備模型中應用軟件、對象字典和通訊部分的關係圖
Communication Interface(通信接口): 提供CAN總線上收發數據報文的服務。規定了四類CANopen數據報文:管理報文(Administrative message:包括LMT、NMT和DBT服務報文)、SDO(Service Data Object:設備配置相關,優先級較低的報文)、PDO(Process Data Object:8字節數據快速傳送報文)和特殊報文(Predefined messages or Special Function Objects:包括SYNC、Time Stamp等報文)。設備間的通信都是通過交換通信對象完成的。
CANopen Object Directory(對象字典): 對象字典描述設備的各項參數和其網絡性能,以特定的方式描述總線設備包含的報文對象(過程數據對象PDO或配置服務數據對象SDO),從而實現了設備的功能性描述。這些對象通過一個16位的索引和一個附加的8位子索引來訪問。對象字典位於CAN總線設備通信部分和應用部分之間,向應用程序提供接口,應用程序對對象字典進行操作就可以實現CANopen通信。
Application(應用程序): 應用程序部分由用戶編寫或者配置,包括功能部分和通信部分。通信部分通過對對象字典進行操作實現CANopen通信,而功能部分由用戶根據應用要求實現。比如CAN控製器,應用程序部分則為過程控製或數據處理邏輯,需要用戶編寫。
各個廠家提供的CANopen設備都必須遵循協議的標準,我們查找設備廠家提供的資料或技術手冊的時候,都可以找到類似Beckhoff公司的總線設備描述(參見圖2.3)。
圖2.3
[1] Beckhoff公司CANopen設備描述
2.3. CANopen係統應用
CANopen協議應用可以分為下麵2個層麵:
操作應用層麵: 現場操作人員、現場設備檢查人員等關注,關注可控性、易操作性和操作效率。
目標:監測控製,生產操作。 特點:關注CANopen協議的相關內容。
係統設置層麵: 係統集成技術人員、設備維護和改造人員等關注,通過最佳的方案,實現應用係統。
目標:工程實施、係統集成。 特點:關注CANopen協議整體。
從操作應用層麵看,技術操作人員主要是通過已經形成的生產線,依靠CANopenxitongwanchengjidingdeshengchangongzuo,yejiushitongguocaijidexinhaodeneirongzhanshihefenxijieguo,guanzhudeshitongguoshebeiwanchengdeshengchancaozuo。yejiushi,caozuorenyuanguanzhutongguozhengquedecaozuofangfa,shunliwanchengshengchanrenwu。zhegecengmiandeyonghushirenjijiemianxitongdezuizhongshiyongzhe。gongyerenjijiemianxitongdeshejibixukaolvzhegecengmianyingyongdexuqiu。
如圖2.4所示,現場總線係統中,人機界麵部分往往是體現操作應用層麵。
從係統設置層麵看,技術人員要對現場設備進行裝配、設(she)置(zhi),甚(shen)至(zhi)編(bian)程(cheng)。技(ji)術(shu)人(ren)員(yuan)可(ke)以(yi)根(gen)據(ju)設(she)備(bei)的(de)說(shuo)明(ming)文(wen)檔(dang),依(yi)據(ju)現(xian)場(chang)工(gong)程(cheng)的(de)需(xu)求(qiu),進(jin)行(xing)裝(zhuang)配(pei)和(he)設(she)置(zhi)。一(yi)般(ban)來(lai)說(shuo),每(mei)種(zhong)設(she)備(bei)都(dou)有(you)測(ce)試(shi)或(huo)者(zhe)配(pei)置(zhi)軟(ruan)件(jian),尤(you)其(qi)邏(luo)輯(ji)控(kong)製(zhi)設(she)備(bei),都(dou)配(pei)置(zhi)編(bian)程(cheng)軟(ruan)件(jian),比(bi)如(ru)PLC,CANopen設備也是如此!首shou先xian,這zhe些xie軟ruan件jian都dou已yi經jing非fei常chang成cheng熟shu,然ran後hou,編bian程cheng通tong訊xun往wang往wang有you很hen多duo不bu開kai放fang的de技ji術shu,所suo以yi,我wo們men必bi須xu借jie助zhu於yu設she備bei廠chang商shang提ti供gong的de軟ruan件jian。這zhe個ge層ceng麵mian的de技ji術shu人ren員yuan工gong作zuo,往wang往wang是shi針zhen對dui確que定ding的deI/O部分,依照明確的工藝需求,進行設備組態、係統集成等工作,關注係統集成部分,也就是根據操作應用層麵的具體需求進行係統集成。
如圖2.4所示,現場總線係統中,編碼調試設備和軟件往往體現係統設置層麵。
對於人機界麵的組態,我們主要是考慮操作應用層麵的需求,也就是關注I/O狀態、控製有關的參數設置、運行結果的記錄等。這些為基於HMI的現場總線控製平台的協議通訊模式的實現提供了依據。
HMI組態關注的數據對象主要是過程數據對象(PDO)用於在CANopen節點間傳送過程數據,如I/O模塊的I/O狀態的讀取和設定、模擬量采集和模擬量輸出等等。
Node節點-->HMI平台(TxPDO:發送過程數據對象)
Node節點<--HMI平台(RxPDO:接收過程數據對象)
係統配置關注的數據對象主要是服務數據對象(SDO:Server Data Object)服務用於讀寫節點的對象字典(Object Dictionary)用來在設備之間傳輸大的低優先級數據,實現信息的下載/上傳、請求/應答、分段/加速傳送等操作,用來配置CANopen網絡上的設備。
其他的數據對象,比如管理報文、預定義報文、特殊報文,係統配置時,一般會使用。而根據控製工藝,在操作應用層麵,較少使用這些數據對象。
2.4. CANopen標識符和數據對象
為了減少簡單網絡的組態工作量,CANopen定義了強製性的缺省標識符(CAN-ID)分配表。這些標誌符在預操作狀態下可用,通過動態分配還可修改他們。CANopen設備必須向它所支持的通訊對象的提供相應的標識符。
缺省ID分配表是基於11位CAN-ID,包含一個4位的功能碼部分和一個7位的節點ID(Node-ID)部分。如圖4所示。
圖2.5
[1] PDO數據對象11位ID的預定義格式
Node-ID:對應CANopen設備,由係統集成商定義,例如通過設備上的撥碼開關設置。Node-ID範圍是1~127(0不允許被使用)。
Function Code:確定CAN幀的類型,比如:PDO 和SDO:對應CANopen設備的寄存器。在CANopen設備中,常用的PDO為0x180+Node-ID。其中0x180就是指Functon Code。SDO 是用來在設備之間傳輸大的低優先級數據的服務數據對象,典型的功能是配置CANopen網絡上的設備。
比如,PDO 用來傳輸8字節或更少數據,沒有其它協議預設定(意味著數據內容已預先定義)。 比如:某傾角傳感器上傳的為7個字符,因此它有8個PDO數據需要傳到現場總線上。標識符的格式為TPDO=0X180+NODE_ID,因此發送的PDO可以表示為表3.1的描述。
表3.1 CANopen設備的PDO
3. 組態軟件通訊
3.1. PC-based的CAN總線接入
組態軟件與硬件設備組成的CAN總線係統,詳細組成請見圖3.1。
圖3.1 CAN總線係統
3.2. 基於HMI的CANopen係統描述
1)、簡單係統:HMI + CANopen模塊。
人機界麵產品可以直接連接CAN從站模塊,如圖3.2所示。CAN從站模塊主要是I/O模塊,可以采集模擬量I/O數據或者控製數字量I/O,並通過總線方式擴展。比如,帶CAN接口的HMI設備HMITECH TPC-CAN,直接連接芬蘭Axiomatic單軸和雙軸傾角傳感器。
人機界麵產品也可以直接連接CAN主站模塊,如圖3.3所示。CAN主站模塊可以是現場總線通訊的可編程控製器,可以擴展直接I/O模塊,也可以連接控製總線擴展模塊。比如,HMITECH TPC-CAN連接EPEC 2020控製模塊。
2)、複雜係統:HMI係統+CANopen站模塊+診斷和配置節點。
HMI主要完成CANopen係統監視和存儲、分析功能。人機界麵的優勢是友好的人機交互。所以,同人機交互相關的CAN係統信息界麵顯示、總線數據存儲、數據的初步分析等是CAN係統中人機界麵所關注的重點。
CAN主站控製器注重實時性,HMI係統注重友好顯示和數據存儲。雖然,CAN主站控製器的邏輯也可以部分轉移到HMI係統,但是,我們還是建議客戶根據控製工藝的要求,慎重考慮,合理的配置係統。
4. 組態軟件CAN驅動
4.1. 組態軟件CAN驅動特定
圖4.1 組態軟件CAN驅動
組態軟件的CAN驅動程序,如圖4.1所示,是人機界麵和組態軟件的接口,其功能和特點是:
CAN總線數據傳遞給組態軟件的接口: 驅動要借助係統的設備驅動接口,讀取CAN總線數據,並通過組態軟件的標準形式,傳遞給組態軟件的實時數據庫。
可以通過多種形式保證數據發送和接收成功: 1)、驅動內部,判斷CAN控製器發送錯誤信息; 2)、通過寫入設備寄存器,然後,讀取判斷寄存器寫是否成功。
關注CANopen協議操作應用層麵: 驅動程序中,並不需要整合CANopen整個協議棧,支持CAN2.0協議就足夠。然後,CANopen協議部分通過組態邏輯解決。
可以通過多種形式保障數據的完整性和實時性: 實(shi)時(shi)性(xing)就(jiu)是(shi)最(zui)新(xin)發(fa)送(song)總(zong)線(xian)數(shu)據(ju),能(neng)夠(gou)在(zai)規(gui)定(ding)的(de)延(yan)時(shi)內(nei),進(jin)入(ru)組(zu)態(tai)軟(ruan)件(jian)的(de)實(shi)時(shi)數(shu)據(ju)庫(ku)。完(wan)整(zheng)性(xing)就(jiu)是(shi)能(neng)夠(gou)將(jiang)所(suo)有(you)的(de)數(shu)據(ju)報(bao)文(wen)抓(zhua)取(qu)到(dao)組(zu)態(tai)軟(ruan)件(jian),並(bing)進(jin)行(xing)完(wan)整(zheng)的(de)數(shu)據(ju)處(chu)理(li)和(he)存(cun)儲(chu)。根(gen)據(ju)控(kong)製(zhi)工(gong)藝(yi)的(de)要(yao)求(qiu),我(wo)們(men)可(ke)以(yi)設(she)置(zhi)總(zong)線(xian)數(shu)據(ju)上(shang)發(fa)的(de)頻(pin)率(lv),通(tong)過(guo)HMI嵌入的CAN控製器設置屏蔽減少非目標數據,也可以通過組態軟件對CAN控製器和驅動緩衝區的處理數據收發性能。
4.2. HMIBuilder軟件CAN驅動映射關係
4.2.1. HMIBuilder組態軟件
HMIBuilder組態軟件是北京昆侖縱橫科技發展有限公司(Http://www.hmibuilder.com)推出的分布式組態軟件。現場總線是HMIBuilder軟件關注的重點之一。
4.2.2. HMIBuilder設備站參數對應PCI1680U的一個Port口
針對研華PCI-1680U板卡,在設備站參數設置中,其端口、設備號可以選擇(見圖4.2),波特率可以設定,比如Port1,設備號為0,波特率:250K。這些對應Advantech Device Magnager中的HardwareSetting(見圖4.3)。其協議類型和遠程幀方式對應CanMEx.exe測試程序中對CAN卡的進一步設置(詳見圖4.4),其中CanMEx.exe在安裝研華Demo後目錄中,如C:\Program Files\Advantech\CAN\CAN Examples\Examples\VC\CanMEx)。
圖4.2 站參數選擇
圖4.3 HardwareSetting
圖4.4 CanMEx
4.2.3. HMIBuilder模擬量CANopen幀的數據域
在圖4.5中,其中Message內容為數據域的ASCII碼形式解碼。在HMIBuilder中,PCI1680U對應的點參數的設置方法如圖4.5。其中,ID可以CANopen設備的PDO。如果要讀PDO數據域的第一個Byte數據。那麼設置如下:416:0:U8:R。也就是416表示設備ID,0表示偏移量,U8-表示8位無符號整形。也就是說,起始偏移為數據域按照字節的偏移,取值為0到7。如果按照F32數據類型,起始偏移取值為0和1。
圖4.5 點參數的設置
注意:本驅動的解碼方法包括8位無符號數據、8位帶符號整數、16位無符號整數、帶符號整數、16位BCD整數、32位無符號整數、32位帶符號整數、32位BCD整數、32位浮點數。
5.應用實例
下麵,我們針對芬蘭Axiomatic公司MVINC-CO-x-range型號傾角傳感器,實現CANopen模塊的人機界麵接入。
1、物理連接
準備首先正確接線,連接研華的PCI-1680U板卡;然後用研華的隨機測試軟件進行測試。如果測試通訊完成後,再進行下一步,連接帶CAN通訊的下一級設備,在這裏我們測試Axiomatic公司MVINC-CO-x-range型號傾角傳感器。
2、傾角傳感器分析
tongguoyueduchuanganqidejishushuomingwendang,womendemubiaoshitongguozutairuanjiankeyikongzhiqingjiaochuanganqideqidonghetingzhi,tongshicaijichuanganqideqingjiaoxinxi。mokuaideqidonghetingzhikeyitongguoNMT指令實現。模塊的傾角信息通過TPDO1數據對象周期上傳。我們也知道通過SDO,可以配置對象字典,通過層設置服務(LSS:Layer setting service)可以設置模塊的Node-ID和波特率等,但是,這些不是本文的目標,也就是,這些不是操作應用層麵關注的,而是係統設置層麵關注的。
3、HMIBuilder站參數組態
設置一個站,選擇驅動程序。如下:
圖5.1 站參數設置
配置協議,參數設置如下:
用PCI-1680U板卡的第一個端口接收數據,所以在設備中選擇Port1,設備號選擇第一個設備,波特率選擇250k(和傳感器波特率相同),屏蔽碼為255。
圖5.2 通信設置
4、傾角傳感器的NMT對象組態
表5.1
[3] 網絡管理對象(NMT)數據報文格式
CAN-ID如果為0X00,表示總線上所有節點都執行相關命令操作。
命令分類為:
表5.2
[3] CAN模塊命令
在HMIBuilder數據組態中,我們設置啟動CAN模塊2個模擬量參數如圖,要求ID都為0,偏移地址連續,而其分別為0和1。
圖5.3 模擬量參數設置
注意:
地址為0,偏移量為0
圖5.4 地址無偏移
地址為0,偏移量為1.
圖5.5 地址偏移一位
5、傾角傳感器TPDO1對象組態
通過傾角傳感器相關技術文檔,我們可以察看設備定義的數據對象字典,確定數據報文的數據域的內容。比如TPDO1,對於MVINC-CO-2-180模塊,CAN數據報文發送7個字節數據,數據的定義為:
Sub1為緯度角(Latitude angle),16Bits;
Sub2為經度角(Longitude angle),16Bits;
Sub3為溫度(temperature),8Bits;
Sub4為輔助輸入(Auxiliary Input),16Bits;
表5.3
[3] MVINC-CO-2-180模塊的TPDO1對象的數據字典內容
傾角傳感器上傳數據的格式:
表5.4 TPDO1對象的數據報文
如果我們讀取CAN模塊7個模擬量參數,需要在組態軟件中做如下設置:
圖5.6 模擬量參數設置
地址設置如下:
圖5.7 采集上來的數據
圖5.7 地址設置 偏移0.對應D0:416:0:U8:R
圖5.8地址設置 偏移1對應D1:416:1:U8:R
注意:
讀上的數據為7位,ID不變。設置偏移為0…6
6、HMIBuilder組態完成
配置啟動畫麵
圖5.9 啟動畫麵
運行情況:
圖5.10 運行結
果
6.結束語
通過HMIBuilder組態軟件的CAN總線通信設置,實現了對傾角傳感器數據的采集。進一步,我們可以看到:HMI係統中,我們主要關注CANopen協議的數據對象PDO部分,同時,其他數據對象也可以根據現場工藝的要求在組態軟件中實現。
7.參考文獻
[1] CANopenn:high-level protocol for CAN-bus , H.Boterenbrood, NIKHEF, Amsterdam, March 20,2000
[2] 《HMIBuilder功能手冊》 北京昆侖縱橫科技發展科技有限公司
[3] MVINC-CO-X_user_manual_2_08 ,Author:JKA,Modified:25.07.2007 14:28