李紹成,馬連祥
(南京林業(yè)大學(xué) 木材工業(yè)學(xué)院,南京 210037)
可編程控制器PLC(Programmable Logic Controller)具有可靠性高、通用性強(qiáng)、編程簡單、體積小、安裝維護(hù)方便等優(yōu)點,在工業(yè)控制中得到了廣泛應(yīng)用[1~3]。
在工業(yè)控制系統(tǒng)中,可能存在不同廠家生產(chǎn)的、多種型號的可編程控制器PLC。為了便于系統(tǒng)集成,一般采用基于OPC(OLE for Process Control)規(guī)范的接口進(jìn)行數(shù)據(jù)交換,為此,需要設(shè)計、開發(fā)面向PLC的OPC服務(wù)器。
面向PLC的OPC服務(wù)器開發(fā)需要完成以下兩個方面工作:一方面,需要根據(jù)PLC的通信協(xié)議實現(xiàn)上位機(jī)服務(wù)器軟件與PLC的數(shù)據(jù)交換;另一方面,需要合理設(shè)計服務(wù)器軟件的架構(gòu)與接口,使之符合OPC技術(shù)規(guī)范。
由于OPC服務(wù)器是基于COM技術(shù)的,這就要求程序設(shè)計人員必須非常熟悉COM技術(shù),而精通COM技術(shù)是有一定難度的,因此,OPC服務(wù)器的源碼級開發(fā)是相當(dāng)復(fù)雜的,一般由專業(yè)的軟件公司進(jìn)行開發(fā)[4,5]。
為了便于OPC技術(shù)的推廣和應(yīng)用,國內(nèi)外許多單位推出了OPC服務(wù)器快速開發(fā)工具包。這種工具包將微軟公司的OLE/COM/DCOM技術(shù)和OPC的技術(shù)細(xì)節(jié)進(jìn)行了隱藏,使用戶開發(fā)工作集中在數(shù)據(jù)采集和處理任務(wù)上,從而簡化了OPC服務(wù)器的開發(fā)。
基于工具包的OPC服務(wù)器開發(fā),主要任務(wù)是熟悉工具包的API接口函數(shù),通過調(diào)用工具包的API接口函數(shù)實現(xiàn)OPC服務(wù)器的功能,為應(yīng)用軟件提供符合OPC規(guī)范的接口。
基于工具包的面向PLC的OPC服務(wù)器開發(fā)的首要任務(wù)是設(shè)計OPC對象與接口、OPC服務(wù)器界面,然后進(jìn)行OPC服務(wù)器與PLC的通信設(shè)計,以實現(xiàn)OPC服務(wù)器與PLC的數(shù)據(jù)交換,具體的軟件架構(gòu)如圖1所示。
圖1 面向PLC的OPC服務(wù)器軟件架構(gòu)
OPC對象與接口是OPC服務(wù)器與客戶端程序進(jìn)行交互的部分。首先應(yīng)進(jìn)行OPC服務(wù)器對象設(shè)計,即定義服務(wù)器名稱ProgID和類標(biāo)識符CLSID。服務(wù)器名稱ProgID可以自由確定;類標(biāo)識符CLSID是一個128字節(jié)的數(shù)據(jù),是用來標(biāo)識一個COM對象的,可用微軟自帶的工具GUIDGEN.EXE快速確定。然后根據(jù)OPC項的管理要求設(shè)計OPC組對象,如果OPC項較少,可以直接利用工具包默認(rèn)的一個OPC組對象。最后確定OPC項對象,一個OPC項可以對應(yīng)于PLC內(nèi)存中的若干寄存器,一般根據(jù)PLC的具體控制要求進(jìn)行設(shè)計,并確定可讀項與可寫項。
OPC服務(wù)器與PLC的通信模塊是面向PLC的OPC服務(wù)器的重要組成部分,OPC可讀項的數(shù)據(jù)就是通過該模塊采集PLC中相應(yīng)寄存器的信息獲得的;OPC可寫項的數(shù)據(jù)就是通過該模塊寫入PLC中相應(yīng)寄存器的。
服務(wù)器程序界面可以為用戶提供友好的交互平臺,便于觀察數(shù)據(jù)項的變化,以及對數(shù)據(jù)項進(jìn)行管理和設(shè)置。
在采用工具包開發(fā)面向PLC的OPC服務(wù)器時,主要是利用工具包提供的API接口函數(shù)進(jìn)行如下的操作:
1)工具包動態(tài)庫初始化
OPC服務(wù)器開始運(yùn)行時,應(yīng)進(jìn)行工具包動態(tài)庫初始化,以及設(shè)置OPC服務(wù)器的最高刷新頻率,這是OPC服務(wù)器得以運(yùn)行的基礎(chǔ)。
2)OPC服務(wù)器信息設(shè)置
主要是設(shè)置服務(wù)器的運(yùn)行狀態(tài)、版本號、廠商信息等。
3)OPC項的創(chuàng)建與刪除
在OPC服務(wù)器開始運(yùn)行時創(chuàng)建OPC項,在OPC服務(wù)器運(yùn)行結(jié)束時刪除OPC項。
4)OPC項數(shù)據(jù)的更新
OPC服務(wù)器需要周期地更新OPC項的值、質(zhì)量和時間戳,即將數(shù)據(jù)存儲區(qū)中的數(shù)據(jù)更新到相應(yīng)的OPC項。當(dāng)客戶端程序請求寫數(shù)據(jù)時,OPC運(yùn)行庫調(diào)用寫回調(diào)函數(shù),并利用服務(wù)器與PLC的通信模塊將數(shù)據(jù)寫入PLC中的相應(yīng)寄存器中;當(dāng)客戶請求讀數(shù)據(jù)時,OPC運(yùn)行庫調(diào)用讀回調(diào)函數(shù),返回相應(yīng)的OPC項的數(shù)據(jù)。
服務(wù)器與PLC的通信模塊是基于PLC的通信接口方式進(jìn)行開發(fā)的。例如串口通信,其是根據(jù)PLC的通信協(xié)議采用串口通信控件或API函數(shù)編程來實現(xiàn)數(shù)據(jù)交換的。
5)回調(diào)函數(shù)注冊
工具包中有三個回調(diào)函數(shù):讀回調(diào)函數(shù)、寫回調(diào)函數(shù)和斷開回函數(shù)。只有注冊了這三個回調(diào)函數(shù)后,OPC服務(wù)器才能和客戶端程序按照OPC技術(shù)規(guī)范進(jìn)行正常通信。
6)OPC服務(wù)器注冊和注銷
OPC服務(wù)器安裝到計算機(jī)后,首先應(yīng)將服務(wù)器名稱ProgID和類標(biāo)識符CLSID等信息進(jìn)行注冊。在OPC服務(wù)器注冊后,OPC客戶端程序才能在本機(jī)或局域網(wǎng)上檢索到該OPC服務(wù)器,從而與該OPC服務(wù)器建立連接與數(shù)據(jù)交換。注銷是將計算機(jī)系統(tǒng)中的OPC服務(wù)器信息清除。
OPC服務(wù)器是一個進(jìn)程外組件,其在運(yùn)行過程中對工具包接口函數(shù)的調(diào)用流程如圖2所示。
圖2 工具包接口函數(shù)調(diào)用流程
Denford公司的FMS(Flexible Manufacturing System)教學(xué)演示系統(tǒng)由一臺數(shù)控車床、一臺數(shù)控銑床、兩臺機(jī)器手和一條傳送帶組成,該系統(tǒng)可以通過數(shù)字I/O接口進(jìn)行控制,各設(shè)備的I/O接口數(shù)如表1所示。
由表1可以看出,該FMS的控制器需要有13個數(shù)字輸入口采集設(shè)備的狀態(tài)信息,需要11個數(shù)字輸出口發(fā)送控制命令。歐姆龍公司生產(chǎn)的CPM1A-30CDR-A-V型PLC有18個數(shù)字輸入口和12數(shù)字輸出口,滿足該FMS控制的接口要求。為了滿足該FMS控制系統(tǒng)快速重構(gòu)的要求,其控制系統(tǒng)必須是基于OPC規(guī)范接口的,即按照圖3所示的體系結(jié)構(gòu)進(jìn)行控制。因此,需要為圖3所示的PLC開發(fā)OPC服務(wù)器。
表1 Denford FMS硬件設(shè)備I/O接口
圖3 基于PLC和OPC的FMS控制系統(tǒng)
由表1和圖3所示的CPM1A-30CDR-A-V型PLC控制對象的具體要求可知,該 OPC服務(wù)器主要與PLC的輸入與輸出口進(jìn)行數(shù)據(jù)交換,因此,在該OPC服務(wù)器中設(shè)計定義了6個OPC項,其中4個OPC數(shù)據(jù)項為可讀項:TagIn0CH、TagIn1CH、TagIn10CH、TagIn11CH,分別用于讀取該P(yáng)LC的輸入端000通道與001通道、輸出端010通道與011通道的數(shù)值,即采集FMS硬件設(shè)備的狀態(tài)信息;另外2個OPC數(shù)據(jù)項為可寫項:TagOut10CH、TagOut11CH,分別用于對該P(yáng)LC的輸出端010通道與011通道寫數(shù)值,即向FMS硬件設(shè)備發(fā)送控制命令。
服務(wù)器與PLC的通信功能模塊是采用串口通信控件MSComm實現(xiàn)的,具體的通信協(xié)議是由CPM1A-PLC手冊中的讀出輸入輸出繼電器內(nèi)容和寫入輸入輸出繼電器區(qū)中的命令格式和響應(yīng)格式確定的。
開發(fā)的OPC服務(wù)器主界面如圖4所示,具有注冊和注銷、OPC項的創(chuàng)建與刪除、OPC項數(shù)據(jù)的更新等功能。在該OPC服務(wù)器安裝、注冊后,利用圖4所示的OPC客戶端軟件進(jìn)行了性能測試,結(jié)果表明該OPC 服務(wù)器符合OPC接口規(guī)范要求,可以在本機(jī)或局域網(wǎng)上進(jìn)行訪問,滿足圖3所示的FMS控制要求。
圖4 CPM1A-30CDR型 PLC的OPC服務(wù)器界面
本文研究了面向PLC的OPC服務(wù)器的快速實現(xiàn)方法,設(shè)計了一用于Denford公司FMS控制的PLC的OPC服務(wù)器,運(yùn)行結(jié)果表明采用本文研究的方法所開發(fā)的OPC服務(wù)器符合OPC技術(shù)規(guī)范要求,具有一定的工程應(yīng)用價值。
[1] 謝慶華. PLC在電力系統(tǒng)操作電源監(jiān)控系統(tǒng)中的應(yīng)用[J].化工自動化及儀表, 2007, 34(5): 77-78.
[2] 宋青. 基于工業(yè)以太網(wǎng)多PLC的污水處理控制系統(tǒng)[J].自動化與儀表, 2011, (6); 28-32.
[3] 楊旭宏, 劉進(jìn)平. 基于PLC的煤礦水倉水位監(jiān)控系統(tǒng)[J].遼寧工程技術(shù)大學(xué)學(xué)報(自然科學(xué)版), 2011, 30(2): 190-193.
[4] 戚中奎, 林果園, 孫統(tǒng)風(fēng). OPC數(shù)據(jù)訪問服務(wù)器的研究與實現(xiàn)[J]. 計算機(jī)工程與設(shè)計, 2011, 32(4): 1517-1520.
[5] 周磊, 劉大成, 周傳福, 等. OPC規(guī)范下數(shù)據(jù)訪問服務(wù)器的設(shè)計與實現(xiàn)[J]. 微計算機(jī)信息, 2007, 23(11): 264-266.