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