基于虛擬儀器的CANopen協(xié)議監(jiān)控面板設(shè)計(jì)
摘要:針對(duì)工業(yè)現(xiàn)場(chǎng)分布式總線網(wǎng)絡(luò)的在線監(jiān)控問(wèn)題,提出將具有可視化編程環(huán)境的虛擬儀器軟件與現(xiàn)場(chǎng)總線高層通信協(xié)議CANopen相結(jié)合,開(kāi)發(fā)出具有智能化、高效化的同步實(shí)時(shí)監(jiān)控界面。在分析CANopen協(xié)議標(biāo)識(shí)符的基礎(chǔ)上,使用虛擬儀器對(duì)CANopen數(shù)據(jù)報(bào)文進(jìn)行打包與解析,并使用VISA接口通過(guò)自行設(shè)計(jì)的RS 232-CAN協(xié)議轉(zhuǎn)換器完成數(shù)據(jù)收發(fā),最終完成監(jiān)控面板的開(kāi)發(fā),為現(xiàn)場(chǎng)總線與虛擬儀器技術(shù)相融合的發(fā)展趨勢(shì)起到了一定推動(dòng)作用。
關(guān)鍵詞:CANopen協(xié)議;虛擬儀器;現(xiàn)場(chǎng)總線;VISA接口
虛擬儀器是電子測(cè)量技術(shù)與計(jì)算機(jī)技術(shù)深層次結(jié)合的產(chǎn)物,通過(guò)軟、硬件的結(jié)合來(lái)實(shí)現(xiàn)傳統(tǒng)儀器的各種功能,大大突破了傳統(tǒng)儀器在數(shù)據(jù)處理、顯示、傳送、存儲(chǔ)等方面的限制,使用戶可以方便地對(duì)儀器進(jìn)行維護(hù)、擴(kuò)展和升級(jí)。用戶通過(guò)友好的圖形界面來(lái)操作虛擬儀器的面板就如同操作真實(shí)儀器一樣方便。CAN協(xié)議只定義了物理層和數(shù)據(jù)鏈路層,本身并不完整,有些復(fù)雜的應(yīng)用問(wèn)題需要一個(gè)更高層次的協(xié)議——應(yīng)用層協(xié)議來(lái)實(shí)現(xiàn)。CANopen協(xié)議就是將CAN網(wǎng)絡(luò)中通信數(shù)據(jù)的組建和傳輸進(jìn)行標(biāo)準(zhǔn)化,并給用戶很大的自由度,允許用戶隨時(shí)添加自己所需要的新功能。
本文將虛擬儀器技術(shù)應(yīng)用于CANopen協(xié)議開(kāi)發(fā),有利于實(shí)現(xiàn)分布式工業(yè)現(xiàn)場(chǎng)的實(shí)時(shí)監(jiān)控、數(shù)據(jù)采集,改善現(xiàn)場(chǎng)總線網(wǎng)絡(luò)通信系統(tǒng)的運(yùn)行效率,提高實(shí)時(shí)性和信息處理能力。
1 CANopen協(xié)議概述
CANopen協(xié)議是由CiA協(xié)會(huì)針對(duì)CAN協(xié)議的不完整性而定義出來(lái)的一個(gè)更高層次的協(xié)議——應(yīng)用層協(xié)議。不同CANopen設(shè)備間的通信都是通過(guò)交換通信對(duì)象完成的。
1.1 通信對(duì)象
通過(guò)CAN網(wǎng)絡(luò)傳輸?shù)腃ANopen通信對(duì)象可以通過(guò)服務(wù)和協(xié)議來(lái)描述。分類為:實(shí)時(shí)數(shù)據(jù)通過(guò)過(guò)程數(shù)據(jù)對(duì)象(PDO)協(xié)議傳輸;服務(wù)數(shù)據(jù)對(duì)象(SDO)協(xié)議用來(lái)對(duì)對(duì)象字典進(jìn)行讀寫操作;特殊功能對(duì)象協(xié)議提供了特定應(yīng)用,網(wǎng)絡(luò)同步,時(shí)間戳和緊急報(bào)文傳輸;網(wǎng)絡(luò)管理(NMT)協(xié)議提供了網(wǎng)絡(luò)初始化,錯(cuò)誤控制和設(shè)備狀態(tài)控制服務(wù);層設(shè)置服務(wù)(LSS)協(xié)議用來(lái)配置CAN總線通信參數(shù)和設(shè)備參數(shù)。
1.2 CANopen預(yù)定義連接集
為了減少簡(jiǎn)單網(wǎng)絡(luò)的組態(tài)工作量,CANopen定義了強(qiáng)制性的缺省標(biāo)識(shí)符(CAN-ID)分配表。這些標(biāo)識(shí)符在預(yù)操作狀態(tài)下可用,通過(guò)動(dòng)態(tài)分配還可修改他們。CANopen設(shè)備必須向它所支持的通信對(duì)象提供相應(yīng)的標(biāo)識(shí)符。缺省ID分配表是基于11位的CAN-ID,包含一個(gè)4位的功能碼(Function Code)部分和一個(gè)7位的節(jié)點(diǎn)ID(Node-ID)部分。
Node-ID由系統(tǒng)集成商定義,范圍是1~127(0不允許使用)。預(yù)定義的連接集定義了4個(gè)接收PDO(Receive-PDO),4個(gè)發(fā)送PDO(Transmit-PDO),1個(gè)SDO(占用2個(gè)CAN-ID),1個(gè)緊急對(duì)象和1個(gè)節(jié)點(diǎn)錯(cuò)誤控制ID。也支持不需確認(rèn)的NMT-Module-Control服務(wù),SYNC和Time Stamp對(duì)象的廣播。標(biāo)識(shí)符的默認(rèn)值如表1,表2所示。
2 CANopen監(jiān)控面板工控現(xiàn)場(chǎng)應(yīng)用框架
采用虛擬儀器軟件LabVIEW進(jìn)行CANopen協(xié)議監(jiān)控面板的開(kāi)發(fā),完成CANopen數(shù)據(jù)的接收與發(fā)送,實(shí)現(xiàn)分布式工控現(xiàn)場(chǎng)總線網(wǎng)絡(luò)的數(shù)據(jù)監(jiān)測(cè)。LabVIEW是NI公司開(kāi)發(fā)的虛擬儀器應(yīng)用程序編程環(huán)境,是一種圖形化編程語(yǔ)言,特別適合開(kāi)發(fā)測(cè)控應(yīng)用軟件,其具有所有通用編程環(huán)境的標(biāo)準(zhǔn),如數(shù)據(jù)結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和事件處理。其內(nèi)置各種專業(yè)工具軟件包可滿足工程應(yīng)用開(kāi)發(fā)。應(yīng)用示意見(jiàn)圖1,通過(guò)RS 232-CAN協(xié)議轉(zhuǎn)換器實(shí)時(shí)監(jiān)測(cè)現(xiàn)場(chǎng)總線上各節(jié)點(diǎn)的數(shù)據(jù),完成控制任務(wù)。
3 RS 232-CAN協(xié)議轉(zhuǎn)換器
虛擬儀器LabVIEW軟件及PC機(jī)內(nèi)部沒(méi)有專門的CAN接口只有RS 232串行接口,因此使用單片機(jī)等微控制器設(shè)計(jì)RS 232-CAN轉(zhuǎn)換器,實(shí)現(xiàn)PC機(jī)接入現(xiàn)場(chǎng)總線網(wǎng)絡(luò),完成數(shù)據(jù)監(jiān)聽(tīng)。在PC機(jī)上可用LabVIEW環(huán)境下的NI-VISA實(shí)現(xiàn)串口通信。圖2為RS 232-CAN協(xié)議轉(zhuǎn)換器硬件原理圖,選用內(nèi)嵌CAN總線控制器的Microchip公司PIC18F258單片機(jī)為核心處理芯片。
ADuM1100高速數(shù)字隔離器支持100 Mb/s數(shù)據(jù)傳輸速率并且可以采用3.0~5.5 V單電源供電,以一種新的更有效的傳輸數(shù)據(jù)的方法替代傳統(tǒng)的光耦合器,從而保護(hù)了高電壓和低電壓電氣環(huán)境之間的接口。MCP2551是一種可容錯(cuò)的高速CAN收發(fā)器,可作為CAN協(xié)議控制器和系統(tǒng)物理總線的接口。MAX232用于完成RS 232與TLL/CMOS的電平轉(zhuǎn)換。RS 232接口用于連接PC機(jī)。當(dāng)單片機(jī)內(nèi)部CAN總線控制器收到CAN總線上的信號(hào)后通過(guò)USART接口傳給PC機(jī)的RS 232接口,同樣PC機(jī)把數(shù)據(jù)通過(guò)RS 232接口發(fā)給單片機(jī),再發(fā)送到CAN總線上。單片機(jī)負(fù)責(zé)實(shí)現(xiàn)通信協(xié)議的轉(zhuǎn)換,轉(zhuǎn)換RS 232串口通信數(shù)據(jù)與CAN通信數(shù)據(jù)。
4 虛擬儀器上位機(jī)監(jiān)控面板開(kāi)發(fā)
LabVIEW程序開(kāi)發(fā)主要包括三方面內(nèi)容:CANopen監(jiān)控面板主程序、數(shù)據(jù)發(fā)送模塊和數(shù)據(jù)接收模塊。其中,數(shù)據(jù)接收和發(fā)送模塊作為子VI供監(jiān)控面板主程序調(diào)用。
4.1 CANopen主控面板程序設(shè)計(jì)
主控面板的設(shè)計(jì)主要包括:CANopen報(bào)文的組建及打包發(fā)送,以及CANopen報(bào)文的接收顯示。
4.1.1 CANopen報(bào)文打包
根據(jù)CANopen協(xié)議標(biāo)識(shí)符分配表及主從節(jié)點(diǎn)設(shè)置定義了各報(bào)文的ID號(hào),如圖3所示,通過(guò)LabVIEW分支結(jié)構(gòu)實(shí)現(xiàn)報(bào)文類型的選擇,并按照CANopen協(xié)議數(shù)據(jù)幀格式要求定義了發(fā)送的數(shù)據(jù)內(nèi)容,包括高低8位ID、數(shù)據(jù)長(zhǎng)度、遠(yuǎn)程幀標(biāo)志以及8 B數(shù)據(jù),通過(guò)捆綁送入CANWrite.vi子模塊發(fā)送到VISA接口。
4.1.2 CANopen報(bào)文解析
CANopen報(bào)文的解析是實(shí)現(xiàn)CANopen協(xié)議監(jiān)控面板的重點(diǎn),實(shí)現(xiàn)過(guò)程為:將從VISA接口接收的數(shù)據(jù)按照CANopen報(bào)文格式進(jìn)行組建;判斷接收的報(bào)文是遠(yuǎn)程幀還是數(shù)據(jù)幀;將接收的數(shù)據(jù)幀累積;對(duì)累積的數(shù)據(jù)幀依次進(jìn)行格式轉(zhuǎn)換,完成數(shù)據(jù)顯示(見(jiàn)圖4)。
4.2 數(shù)據(jù)發(fā)送/接收模塊程序設(shè)計(jì)
數(shù)據(jù)發(fā)送模塊CANwrite.vi使用VISA Write節(jié)點(diǎn)予以實(shí)現(xiàn),并將該發(fā)送模塊作為子VI調(diào)用。在LabVIEW平臺(tái)控制的串行通信過(guò)程中,數(shù)據(jù)格式是以字符串的格式組成的,字符串中的每個(gè)字符實(shí)際上對(duì)應(yīng)大家熟悉的ASCII字符,即計(jì)算機(jī)能夠識(shí)別的數(shù)據(jù)代碼是ASCII代碼,所以在傳送到串口發(fā)送數(shù)據(jù)之前要經(jīng)過(guò)代碼轉(zhuǎn)換,這就意味著以十進(jìn)制、二進(jìn)制、十六進(jìn)制表示的數(shù)據(jù)必須轉(zhuǎn)化為ASCII字符串才能進(jìn)行傳送和接
收。數(shù)據(jù)發(fā)送模塊如圖5所示,其中,以0xAA作為握手信號(hào)
數(shù)據(jù)接收模塊CANRead.vi使用VISA Read節(jié)點(diǎn)讀取數(shù)據(jù),如圖6所示,從緩沖器接收到的數(shù)據(jù)是ASCII字符串,經(jīng)過(guò)ASCII字符串轉(zhuǎn)換為十六進(jìn)制字節(jié)數(shù)組的模塊處理后,最終得到正確的數(shù)據(jù)。
4.3 監(jiān)控面板
使用虛擬儀器LabVIEW開(kāi)發(fā)的監(jiān)控面板如圖7所示??梢钥吹剑髠?cè)為數(shù)據(jù)發(fā)送部分,首先設(shè)置NodeID,選擇主從節(jié)點(diǎn)類型,根據(jù)用戶需要選擇待發(fā)送的報(bào)文類型,并設(shè)置幀類型(數(shù)據(jù)幀/遠(yuǎn)程幀)以及具體的發(fā)送數(shù)據(jù)。右側(cè)為數(shù)據(jù)接收部分,顯示從CAN總線上監(jiān)聽(tīng)到的CANopen報(bào)文。
5 結(jié)語(yǔ)
本文將虛擬儀器技術(shù)與現(xiàn)場(chǎng)總線高層通信協(xié)議CANopen相結(jié)合,實(shí)現(xiàn)了現(xiàn)場(chǎng)總線上位機(jī)監(jiān)控面板的開(kāi)發(fā),為分布式網(wǎng)絡(luò)控制系統(tǒng)提供了高效、全面的監(jiān)控環(huán)境,不僅解決了工業(yè)現(xiàn)場(chǎng)不同設(shè)備同步監(jiān)控的問(wèn)題,而且提供了較強(qiáng)的在線可控性。同時(shí),利用LabVIEW提供的各類專業(yè)工具軟件包,可以進(jìn)一步對(duì)工業(yè)數(shù)據(jù)進(jìn)行處理,完成波形顯示、信號(hào)濾波和頻譜分析等功能。
評(píng)論