楊 杰,趙海敏,王永杰,張 輝(合肥工業(yè)大學(xué) 儀器科學(xué)與光電工程學(xué)院,合肥 230009)
基于力控組態(tài)軟件的以太網(wǎng)驅(qū)動(dòng)程序的開發(fā)
楊杰,趙海敏,王永杰,張輝
(合肥工業(yè)大學(xué)儀器科學(xué)與光電工程學(xué)院,合肥230009)
本文利用力控組態(tài)軟件提供的I/O驅(qū)動(dòng)程序接口(FIOS),成功開發(fā)了基于TCP/IP協(xié)議的以太網(wǎng)驅(qū)動(dòng)程序。該程序通過聯(lián)網(wǎng)的方式實(shí)現(xiàn)了對(duì)生產(chǎn)過程的實(shí)時(shí)監(jiān)控。文章首先簡要介紹了驅(qū)動(dòng)程序接口開發(fā)包,在此基礎(chǔ)上敘述了以太網(wǎng)底層驅(qū)動(dòng)程序的編程思想,然后詳細(xì)介紹了以太網(wǎng)底層驅(qū)動(dòng)程序開發(fā)的整個(gè)過程,最后通過中繼器與上位機(jī)通訊調(diào)試,驗(yàn)證了所開發(fā)軟件的正確性。
TCP/IP;以太網(wǎng);組態(tài)軟件;驅(qū)動(dòng)程序
隨著工業(yè)自動(dòng)化程度越來越高,組態(tài)軟件以其友好的人機(jī)界面,開放的數(shù)據(jù)接口,靈活的開發(fā)方式,可靠的數(shù)據(jù)處理在生產(chǎn)過程中表現(xiàn)出較強(qiáng)的優(yōu)越性。它通過設(shè)備驅(qū)動(dòng)程序與I/O設(shè)備進(jìn)行數(shù)據(jù)交換并將操作命令下達(dá)給設(shè)備。組態(tài)軟件中包含了大量的設(shè)備的驅(qū)動(dòng)程序,能夠滿足工業(yè)上的大多數(shù)生產(chǎn)需要。但是對(duì)于一些特殊的I/O設(shè)備,就需要利用組態(tài)軟件提供的底層驅(qū)動(dòng)開發(fā)包(FIOSSDK),自行開發(fā)底層驅(qū)動(dòng)程序。
本文在組態(tài)環(huán)境下用VC++編寫了基于TCP/IP協(xié)議的以太網(wǎng)驅(qū)動(dòng)程序,用于將中繼器采集到的測量數(shù)據(jù)傳送給上位機(jī),進(jìn)行數(shù)據(jù)的處理,通過聯(lián)網(wǎng)的方式實(shí)現(xiàn)對(duì)生產(chǎn)過程的實(shí)時(shí)監(jiān)控。本文重點(diǎn)介紹以太網(wǎng)驅(qū)動(dòng)程序的開發(fā)過程。
I/O驅(qū)動(dòng)程序接口(FIOS)用于實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)庫與I/O設(shè)備交互通訊的功能。一方面,它把從I/O設(shè)備采集到的過程實(shí)時(shí)數(shù)據(jù)放給實(shí)時(shí)數(shù)據(jù)庫DB(DataBase,DB),另一方面,從DB發(fā)出的數(shù)據(jù)也通過FIOS發(fā)送給I/O設(shè)備,在此過程中完成通信協(xié)議的解析,數(shù)據(jù)格式的轉(zhuǎn)換等。FIOSSDK主要由設(shè)備組態(tài)接口(Iodevui)、數(shù)據(jù)連接組態(tài)接口(Ioitemui)、編程接口(Ioapi)和I/O服務(wù)器程序(Ioserver)四部分組成,力控組態(tài)軟件開始運(yùn)行時(shí),其內(nèi)部的I/O服務(wù)器程序Ioserver按照一定的層級(jí)進(jìn)行循環(huán)掃描調(diào)度,形成數(shù)據(jù)采集和下置的命令串,如圖1所示。
2.1編程思想
套接字(Sockets)是通信端點(diǎn)的一種抽象,是支持TCP/IP協(xié)議網(wǎng)絡(luò)通信的基本操作單元,它提供了一種發(fā)送和接受數(shù)據(jù)的機(jī)制。在開發(fā)服務(wù)端/客戶端應(yīng)用程序時(shí),可以利用Sockets實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)包的交換,以完成應(yīng)用程序之間的通信??蛻舳?服務(wù)器模型工作時(shí)要求有一套為客戶機(jī)和服務(wù)器所共識(shí)的慣例來保證服務(wù)能夠被提供(或被接受),這一套慣例包含一套協(xié)議,它必須在通信的兩端都被實(shí)現(xiàn),在本文中指的是TCP/IP協(xié)議。
在本設(shè)計(jì)中,力控組態(tài)軟件充當(dāng)?shù)氖强蛻舳说慕巧?,利用套接字編程的時(shí)序流程一般如圖2-1所示。
其中由FIOSSDK提供的Ioserver封裝了大部分開發(fā)人員不必關(guān)心的技術(shù)細(xì)節(jié),開發(fā)人員可根據(jù)項(xiàng)目中自定義的通信協(xié)議,實(shí)現(xiàn)數(shù)據(jù)的采集和下置,如圖2-2所示。
2.2設(shè)備組態(tài)接口(Iodevcfg)的開發(fā)
在使用力控組態(tài)時(shí),一般都要涉及I/O設(shè)備的定義過程。I/O描述文件的名稱為Iodesc.txt,文件內(nèi)容規(guī)定的格式如下(其中<CR>表示回車換行):
類別;廠商或I/O設(shè)備描述;IOID<CR>
子類型1;類型號(hào);缺省通信方式;提供設(shè)備地址<CR>
子類型2;類型號(hào);缺省通信方式;提供設(shè)備地址<CR>
??????
在本論文中I/O描述文件定義為:“TCP/IP通訊;合肥工業(yè)大學(xué)儀器學(xué)院;XX項(xiàng)目以太網(wǎng)應(yīng)用;1;2;0”表示設(shè)備類型編號(hào)為1,TCP/ IP網(wǎng)絡(luò)通信,不設(shè)置設(shè)備地址。
2.3數(shù)據(jù)連接組態(tài)接口(Ioitemmui)的開發(fā)
數(shù)據(jù)連接過程對(duì)于不同的I/O設(shè)備,其形式和內(nèi)容可能完全不同,因此必須針對(duì)不同的I/O設(shè)備,設(shè)計(jì)相應(yīng)的數(shù)據(jù)連接形式,保存各種參數(shù)信息,一般情況下力控提供的界面選項(xiàng)已經(jīng)足夠使用。
2.4I/O監(jiān)控接口(Ioapi)的開發(fā)
Ioapi提供了一組API函數(shù)和一些C++類庫。這組API函數(shù)規(guī)定了名稱、參數(shù)及返回值,函數(shù)內(nèi)容由程序員根據(jù)具備的I/O設(shè)備編程實(shí)現(xiàn)。C++類庫則為程序員提供各種獲取力控I/O組態(tài)信息、參數(shù)設(shè)置信息、與數(shù)據(jù)庫DB進(jìn)行數(shù)據(jù)交換等數(shù)據(jù)處理的方法。
數(shù)據(jù)的通信格式如下(共91個(gè)字節(jié)):
表1 通信協(xié)議
數(shù)據(jù)列表如下:
表2 數(shù)據(jù)列表包含的內(nèi)容
如下圖3-1所示為在中繼器,利用力控組態(tài)軟件設(shè)計(jì)的數(shù)據(jù)管理系統(tǒng),其測量的數(shù)據(jù)利以太網(wǎng)的形式傳輸?shù)缴衔粰C(jī)。
從數(shù)據(jù)管理中心獲得的調(diào)試結(jié)果,如下圖3-2所示
經(jīng)過中繼器與上位機(jī)的聯(lián)調(diào),證明了該驅(qū)動(dòng)程序可以成功實(shí)現(xiàn)基于TCP/IP協(xié)議的以太網(wǎng)通信,完成數(shù)據(jù)的收發(fā),實(shí)時(shí)監(jiān)測I/O設(shè)備采集到的測量數(shù)值。
數(shù)據(jù)傳輸?shù)倪^程中采用基于TCP/IP協(xié)議的以太網(wǎng)無線傳輸,相比于傳統(tǒng)的RS485,Modbus總線形式,避免了布線,同時(shí)TCP/IP傳輸協(xié)議保證了數(shù)據(jù)傳輸?shù)母咝浴?/p>
本文以力控為例,實(shí)現(xiàn)了組態(tài)軟件下TCP/IP協(xié)議的以太網(wǎng)驅(qū)動(dòng)程序的開發(fā),實(shí)現(xiàn)以聯(lián)網(wǎng)方式對(duì)工業(yè)生產(chǎn)進(jìn)行實(shí)時(shí)控制的功能,提高了企業(yè)的生產(chǎn)效率。該驅(qū)動(dòng)程序已成功應(yīng)用于某企業(yè)的生產(chǎn)之中,在運(yùn)行的半年的時(shí)間內(nèi)很好的完成了數(shù)據(jù)的傳輸功能要求,體現(xiàn)了較好的穩(wěn)定性。該文提供的基于組態(tài)軟件的以太網(wǎng)的驅(qū)動(dòng)程序的開發(fā)流程,可為企業(yè)聯(lián)網(wǎng)生產(chǎn)提供一定的參考價(jià)值。
[1]王生鐵,張計(jì)科,張立波,何林森.《力控組態(tài)環(huán)境下數(shù)據(jù)采集卡驅(qū)動(dòng)程序的開發(fā)》[J].內(nèi)蒙古工業(yè)大學(xué)學(xué)報(bào),2003,22(01):57-62.
[2]Michael J.Donahoo,Kenneth L.Calvert著.陳宗斌等譯.《TCP/ IPSockets編程》[M].北京:清華大學(xué)出版社,2009(11):8-28.
[3]艾紅.多點(diǎn)溫度監(jiān)測系統(tǒng)與組態(tài)軟件的數(shù)據(jù)通信[J].自動(dòng)化儀表,2014,35(10):37-41.
[4]吳力煒,葉念渝.力控組態(tài)軟件下的設(shè)備驅(qū)動(dòng)程序的開發(fā)[J].PLC&FA,2006(07):75-78.
[5]張建海,李勇華,劉家勇.基于VB實(shí)現(xiàn)的組態(tài)王與儀表之間的TCP/IP通信研究[J].2013,1(01):38-41.
[6]馬萬里,王平,諶震文.基于以太網(wǎng)工廠自動(dòng)化標(biāo)準(zhǔn)的組態(tài)軟件設(shè)計(jì)與開發(fā)[J].計(jì)算機(jī)集成制造系統(tǒng),2005,11(10):1357-1361.