周曉燕葉小剛宮濤
(1.第七一五研究所,杭州,310012;2.杭州瑞利測(cè)控技術(shù)有限公司,杭州,310012)
虛擬IO控制模塊的研制
周曉燕1葉小剛2宮濤2
(1.第七一五研究所,杭州,310012;2.杭州瑞利測(cè)控技術(shù)有限公司,杭州,310012)
提出了模塊化的虛擬IO控制模塊,較好的解決了目標(biāo)的非標(biāo)化、多樣化的問題。從硬件、軟件兩方面分別描述了虛擬IO控制模塊的實(shí)現(xiàn)。
虛擬IO;模塊化;測(cè)控
隨著軟件技術(shù)在工業(yè)自動(dòng)化中扮演越來越重要的作用,硬件層面上的通用化愈來愈成為系統(tǒng)設(shè)計(jì)過程中的必然要求。在一套以在線檢測(cè)為主的設(shè)備中,與檢測(cè)目標(biāo)系統(tǒng)進(jìn)行IO數(shù)據(jù)交換必不可少。傳統(tǒng)的檢測(cè)設(shè)備是遵循工業(yè)標(biāo)準(zhǔn)提供有限并且固定的IO口與目標(biāo)系統(tǒng)交互。但隨著目標(biāo)系統(tǒng)的非標(biāo)化、多樣化的不斷出現(xiàn),很多工程應(yīng)用已無標(biāo)準(zhǔn)可循,而新標(biāo)準(zhǔn)產(chǎn)生的速度也越來越跟不上技術(shù)和應(yīng)用的發(fā)展,虛擬IO模塊的出現(xiàn)能夠較好的解決這類問題。
在測(cè)控設(shè)備的開發(fā)過程中,經(jīng)常需要設(shè)計(jì)各種IO接口板以適應(yīng)從其他設(shè)備獲取運(yùn)行狀態(tài)位或者控制其他設(shè)備的啟停,并且也常用IO口來輸出本機(jī)的各種狀態(tài)指示位。一般的解決方式是設(shè)計(jì)專門的IO顯控模塊或者利用PLC外設(shè),但前者的開發(fā)周期長(zhǎng)而后者的費(fèi)用較高,且破壞系統(tǒng)的完整性。虛擬IO模塊以模塊化設(shè)計(jì)為起點(diǎn),建立起以通用型IO硬件為各類設(shè)備同種功能部件的基礎(chǔ),通過系統(tǒng)級(jí)軟件的配置來實(shí)現(xiàn)以同種IO硬件達(dá)到不同的需求。圖1表征了虛擬IO模塊在測(cè)控系統(tǒng)中的典型作用。
圖1 系統(tǒng)中的虛擬IO模塊
根據(jù)虛擬IO模塊的定義,虛擬IO模塊的組成如圖2所示。主要由虛擬IO硬件層和虛擬IO軟件層組成,工作原理如下:虛擬IO硬件層以MCU為核心,MCU負(fù)責(zé)與宿主設(shè)備(IO模塊構(gòu)成該設(shè)備的一部分)通訊,與其他目標(biāo)設(shè)備通訊并根據(jù)宿主設(shè)備軟件層的配置和命令控制外設(shè)IO接口板;虛擬IO軟件層以應(yīng)用軟件調(diào)用XML配置文件來定義虛擬IO硬件層的實(shí)際各IO口輸入輸出配置,并根據(jù)應(yīng)用軟件運(yùn)行時(shí)的通訊命令從虛擬IO硬件層取得IO狀態(tài)或驅(qū)動(dòng)IO輸出。虛擬IO軟件層通過DLL(微軟動(dòng)態(tài)鏈接庫(kù))或VISA(Labview底層驅(qū)動(dòng)模式)驅(qū)動(dòng)形式與虛擬IO硬件層交換數(shù)據(jù),從而根據(jù)各種應(yīng)用的需要由上層軟件來定義IO的配置模式,這是“虛擬”二字的內(nèi)涵[1]。
圖2 虛擬IO模塊的組成
同一測(cè)控設(shè)備在針對(duì)不同種應(yīng)用時(shí)有不同種IO的輸入輸出,此時(shí)無需對(duì)硬件進(jìn)行修改,只要根據(jù)不同應(yīng)用設(shè)置IO的不同XML配置參數(shù),通過調(diào)用XML配置文件即可實(shí)現(xiàn)目標(biāo)要求的操作,因此實(shí)現(xiàn)了同一IO硬件層的不同種需求的IO定義。下面從硬件和軟件兩方面來描述虛擬IO模塊的實(shí)現(xiàn)途徑。
2.1 硬件設(shè)計(jì)
虛擬IO模塊允許用戶自定義IO端口,因此該模塊需具備兩個(gè)特征:第一、存在與宿主設(shè)備的通訊接口;第二、可以方便的對(duì)IO端口進(jìn)行定義。圖3是一種典型的虛擬IO模塊的硬件結(jié)構(gòu):選擇合適的MCU并設(shè)計(jì)其最小系統(tǒng)作為模塊的基礎(chǔ),為適應(yīng)與宿主設(shè)備的通訊,以通訊距離和通訊數(shù)據(jù)量為主要衡量指標(biāo),一般采用標(biāo)準(zhǔn)串口(隔離型的RS232)作為IO模塊和宿主設(shè)備的通訊方式;以MCU的IO管腳為基礎(chǔ),擴(kuò)展出多路以三極管、晶體管、晶閘繼電器等外設(shè)控制接口。通常的應(yīng)用中,宿主設(shè)備還需要進(jìn)行遠(yuǎn)距離通訊,常用的為RS485。為防止IO模塊和宿主設(shè)備、其他外設(shè)設(shè)備存在較多相互干擾,一般選取隔離型的通訊元件。
圖3 虛擬IO模塊典型硬件結(jié)構(gòu)
2.2 軟件設(shè)計(jì)
虛擬IO模塊的軟件包括兩個(gè)部分:MCU核心板的硬件層的軟件和宿主設(shè)備上的應(yīng)用程序?qū)μ摂MIO模塊的調(diào)用部分程序。
2.2.1 虛擬IO硬件層的軟件設(shè)計(jì)
圖4給出了一種典型的IO模塊硬件MCU程序流程圖。在模塊上電后,程序需要先對(duì)模塊進(jìn)行初始化,如進(jìn)行看門狗啟用、定時(shí)器參數(shù)、通訊參數(shù)設(shè)置等方面的工作。設(shè)置完畢后,MCU進(jìn)行自檢,完成自檢項(xiàng)目即進(jìn)入與宿主設(shè)備的通訊,通訊的協(xié)議可自由定義。IO模塊的硬件工作在無限循環(huán)之內(nèi),根據(jù)中斷時(shí)間設(shè)置與宿主設(shè)備進(jìn)行通訊,通訊的超時(shí)設(shè)置和看門狗抗干擾超時(shí)設(shè)置是必要的。該無限循環(huán)的過程可以不斷的重新定義IO的輸入輸出配置,并完成IO端口狀態(tài)信息的交換。
圖4 虛擬IO模塊硬件MCU程序典型流程圖
2.2.2 虛擬IO軟件層的軟件設(shè)計(jì)
虛擬IO模塊的通用化離不開宿主設(shè)備端應(yīng)用軟件層的專門化,與虛擬IO模塊調(diào)用相關(guān)的應(yīng)用軟件層的典型流程圖如圖5所示。從圖4中可以看到,虛擬IO模塊的硬件部分程序是一個(gè)無限循環(huán),即其對(duì)宿主設(shè)備的通訊是可以實(shí)時(shí)發(fā)生的,因此,在虛擬IO模塊的宿主設(shè)備端的軟件層可以按需調(diào)用IO模塊的資源,這就決定了同一IO模塊可以被宿主設(shè)備的不同應(yīng)用程序分時(shí)調(diào)用,不同的應(yīng)用程序在對(duì)IO模塊調(diào)用時(shí),只需要調(diào)用相應(yīng)的XML文件即可根據(jù)專有設(shè)置進(jìn)行自定義通訊的IO操控。
圖5 虛擬IO模塊軟件層的典型調(diào)用流程圖
根據(jù)圖3中虛擬IO模塊的硬件典型結(jié)構(gòu),從MCU在線調(diào)試的便利性、自帶看門狗的抗干擾性以及IO的豐富性等出發(fā),結(jié)合工業(yè)產(chǎn)品的需要,選擇Freescale的MC9S08AC8作為虛擬IO模塊的MCU核心。該MCU具有內(nèi)置時(shí)鐘,具備2個(gè)異步SCI,同時(shí)多達(dá)33個(gè)可配置成讀寫的IO口,因此適合用來作為虛擬IO模塊的硬件核心。從通訊角度看,虛擬IO模塊需要同宿主設(shè)備進(jìn)行RS232通訊,和目標(biāo)測(cè)控設(shè)備進(jìn)行遠(yuǎn)程的RS485數(shù)據(jù)通訊,而這些基本通訊需要特別注意引起相互之間的電源和信號(hào)干擾,因此采用隔離型的通訊芯片不失為合適的選擇。AD公司推出的ADM2587E和ADM3251E采用其公司特有的芯片級(jí)變壓器iCouple磁隔離技術(shù),能夠同時(shí)用于隔離邏輯信號(hào)和集成式DC-DC轉(zhuǎn)換器,因此該類器件可提供整體隔離解決方案;選擇這兩款芯片分別實(shí)現(xiàn)虛擬IO模塊的RS232和RS485功能,可以有效的實(shí)現(xiàn)與外部模塊的信號(hào)和電氣隔離。
利用MC9S08AC8[2]、ADM2587E[3]、ADM3251E[4]構(gòu)成基本的虛擬IO模塊,除去MC9S08AC8的33個(gè)IO管腳中因?yàn)楣苣_復(fù)用的關(guān)系被通訊接口占用外,該虛擬IO模塊在硬件結(jié)構(gòu)上保留了28個(gè)獨(dú)立的IO口,這對(duì)于大部分的工業(yè)應(yīng)用而言,其IO資源都是及其豐富的。
在基于機(jī)器視覺的經(jīng)編疵點(diǎn)檢測(cè)儀[5]和基于機(jī)器視覺的整經(jīng)斷紗檢測(cè)儀以及激光斷紗檢測(cè)儀的開發(fā)中,采用前文所述虛擬IO模塊作為上述三類測(cè)控儀器對(duì)經(jīng)編機(jī)、整經(jīng)機(jī)、噴水織機(jī)等的狀態(tài)拾取、報(bào)警、啟停等控制的接口板,宿主設(shè)備只要方便的調(diào)用相應(yīng)的XML文件即可實(shí)現(xiàn)不同的控制。目前,該類虛擬IO模塊已經(jīng)在幾百臺(tái)目標(biāo)機(jī)的控制中得到了成功的應(yīng)用。
通過虛擬IO技術(shù),可以實(shí)現(xiàn)產(chǎn)品設(shè)計(jì)的模塊化和通用化,這是開發(fā)產(chǎn)品時(shí)由從原來專注于技術(shù)的產(chǎn)品開發(fā)方式轉(zhuǎn)移到專注于需求的產(chǎn)品開發(fā)方式的轉(zhuǎn)變基礎(chǔ)。通過靈活易升級(jí)的軟件模式來達(dá)到不同需求方案的實(shí)現(xiàn),脫離硬件層面的繁復(fù)設(shè)計(jì),是產(chǎn)品設(shè)計(jì)中IO層虛擬化的意義所在。
[1] NATIONAL INSTRUMENTS. 軟件在虛擬儀器技術(shù)中的角色[M]. 2012.
[2] FREESCALE. MC9S08AC8數(shù)據(jù)手冊(cè):技術(shù)數(shù)據(jù)[M]. 2008.
[3] ANALOG DEVICES. ADM2587E Datasheet[M]. 2009.
[4]ANALOG DEVICES. ADM3251E Datasheet[M]. 2008-2010.
[5] 葉小剛, 李江濤, 施彤云, 等. 基于基于機(jī)器視覺的經(jīng)編檢測(cè)系統(tǒng)的研制[C].中國(guó)儀器儀表學(xué)術(shù)、產(chǎn)業(yè)大會(huì), 2010.