鄭 野,劉以建
(上海海事大學(xué),上海200135)
隨著世界航運(yùn)業(yè)的快速發(fā)展,對航運(yùn)人才的需求量急劇增加。各種海船船員必須通過輪機(jī)模擬器的訓(xùn)練,獲得中華人民共和國海船船員適任證書才能上崗工作。2009年頒布了新的《中華人民共和國海船船員適任評估大綱和規(guī)范》,新大綱中對750 kW及以上船舶二/三管輪“船舶電站操作”項(xiàng)目的評估內(nèi)容提出了新的要求。如何提高船員適任評估培訓(xùn)教學(xué)的質(zhì)量,進(jìn)而提高船員的航海適任能力,是航海院校及船員培訓(xùn)機(jī)構(gòu)應(yīng)關(guān)注和思考的問題。船舶電站實(shí)訓(xùn)系統(tǒng)是按照新大綱的要求設(shè)計(jì)的。該系統(tǒng)是一種半實(shí)物仿真裝置,通過實(shí)物設(shè)備和計(jì)算機(jī)仿真技術(shù),模擬船舶電站在正常情況和常見故障狀態(tài)下的運(yùn)行,使學(xué)生能夠通過實(shí)際操作、故障排除等方面的訓(xùn)練,加強(qiáng)對船舶電站及其自動(dòng)化裝置的認(rèn)識。在船舶電站實(shí)訓(xùn)系統(tǒng)中,上位計(jì)算機(jī)實(shí)現(xiàn)船舶電力系統(tǒng)的計(jì)算機(jī)仿真,生成船舶電力系統(tǒng)運(yùn)行的狀態(tài)、參數(shù)數(shù)據(jù);通過網(wǎng)絡(luò)與操作屏控制器進(jìn)行數(shù)據(jù)交換。例如:由上位機(jī)模擬的發(fā)電機(jī)所運(yùn)行的數(shù)據(jù)顯示到硬件表頭上;硬件中繼電器、開關(guān)狀態(tài)顯示到上位機(jī)界面中。本文介紹的OPC通訊方式具有通用性強(qiáng)的特點(diǎn),使得不同廠商的硬件設(shè)備、軟件之間能夠互相連接、通訊和操作,使工業(yè)控制系統(tǒng)具有極強(qiáng)的開放性和互操作性。
船舶電站實(shí)訓(xùn)系統(tǒng)采用了兩層通訊網(wǎng)絡(luò)結(jié)構(gòu)。操作屏控制器采用西門子S7-300PLC ET200S,各操作屏配置ET200S遠(yuǎn)程模塊,組成Profibus DP現(xiàn)場級控制網(wǎng)絡(luò)。上位機(jī)與觸摸屏與ET200S主機(jī)之間都是采用以太網(wǎng)通訊方式,如圖1所示。ET200S主機(jī)模塊自帶集成交換機(jī),含3個(gè)網(wǎng)絡(luò)端口,一號端口用于連接上位機(jī),二號端口用于連接觸摸屏。觸摸屏安裝在發(fā)電機(jī)控制屏上,用于數(shù)據(jù)顯示及故障狀態(tài)報(bào)警等。
ET200S主機(jī)模塊上組態(tài)一個(gè)DP主站,ET200S主機(jī)與從機(jī)之間通過RS485連接構(gòu)成PROFIBUS網(wǎng)絡(luò)。網(wǎng)絡(luò)的構(gòu)建需要在編程軟件中進(jìn)行硬件組態(tài),組態(tài)方法:首先組態(tài) ET200S主機(jī)即IM151-8 PN/DP CPU,按照通訊網(wǎng)絡(luò)依次組態(tài)輸入輸出模塊,然后在DP插槽處引出PROFIBUS網(wǎng)絡(luò)組態(tài)兩個(gè)ET200S從機(jī),如圖2所示。組態(tài)好后PC機(jī)不僅可以讀取ET200S主機(jī)的數(shù)據(jù),也可以讀取到ET200S從機(jī)的數(shù)據(jù)。
圖1 船舶電站實(shí)訓(xùn)系統(tǒng)通訊網(wǎng)絡(luò)圖
圖2 STEP7中DP主從站的硬件組態(tài)
圖3 Station Configuration Editor配置窗口
PC機(jī)與ET200S主從機(jī)之間進(jìn)行數(shù)據(jù)交換的以太網(wǎng)通訊是通過OPC實(shí)現(xiàn)的。首先要安裝Simatic.Net軟件并且按照西門子公司提供的《通過ETHETNET建立OPC服務(wù)器與S7 PLC的S7連接》中的步驟將上位機(jī)設(shè)置好。通過OPC Scout工具進(jìn)行OPC Server和ET200S主從機(jī)的數(shù)據(jù)通訊測試,Station Configuration Editor中的狀態(tài)如圖3所示,即證明可以將ET200S主從機(jī)的數(shù)據(jù)讀取到OPC服務(wù)器中。船舶電站實(shí)訓(xùn)系統(tǒng)的上位機(jī)仿真和監(jiān)控軟件由VB6.0語言編寫。VB6.0通過OPC服務(wù)器與PLC進(jìn)行數(shù)據(jù)交換。
OPC的數(shù)據(jù)訪問方法主要有同步訪問和異步訪問兩種。同步訪問:讀寫指定OPC標(biāo)簽對應(yīng)的過程數(shù)據(jù),應(yīng)用程序一直等待到讀寫完成為止。異步訪問:讀寫指定OPC應(yīng)用程序發(fā)出讀寫要求后立即返回,讀寫完成時(shí)發(fā)生讀寫完成事件,OPC應(yīng)用程序被調(diào)出。兩種方法各有優(yōu)缺點(diǎn)。船舶電站實(shí)訓(xùn)系統(tǒng)中OPC的數(shù)據(jù)訪問使用異步訪問方式。
同步訪問方式的優(yōu)點(diǎn):處理程序比較簡單,開發(fā)容易;只要分布式COM啟動(dòng)權(quán)限和訪問權(quán)限就可以運(yùn)行,設(shè)置比較簡單。同步訪問方式也存在自身的不足,因?yàn)樵谠L問完成之前應(yīng)用程序必須一直在等待,尤其大量數(shù)據(jù)的訪問或直接對設(shè)備的訪問,對訪問性能的影響很大[1,2]。圖4為同步訪問流程圖,下面根據(jù)流程圖介紹VB6.0與OPC服務(wù)器實(shí)現(xiàn)數(shù)據(jù)交換的編程方法。
圖4 同步訪問流程圖
(1)定義全局變量
Option Explicit
Option Base 1‘?dāng)?shù)組的索引從1開始
Dim MyOPCServer As OPCServer‘定義 OPC服務(wù)器
Dim MyGroups As OPCGroups‘定義 OPC組集合
Dim WithEvents MyGroup As OPCGroup‘定義可引發(fā)事件的OPC組
Dim MyItems As OPCItems‘定義 OPC標(biāo)簽
Dim MyItemServerHandles(2)As Long‘標(biāo)簽指針
(2)建立OPC服務(wù)器
Private Sub cmdconnect_Click()
Set MyOPCServer = New OPCServer ‘建 立OPC服務(wù)器
MyOPCServer.Connect(“OPC.SimaticNET”,”192.168.0.2”)‘連接OPC服務(wù)器
Set MyGroups = MyOPCServer.OPCGroups‘建立一個(gè)OPC組集合
Set MyGroup = MyGroups.Add(“TestGrp”)‘添加OPC組
End Sub
(3)添加 OPC標(biāo)簽
Private Sub cmdAddItem_Click()
Dim ItemObj As OPCItem
Dim ItemIDs(2)As String
Dim ItemClientHandles(2)As Long
Dim Errors()As Long
ItemIDs(1)= "S7:[S7 Connection_1]IB0,1"‘ET200S中對應(yīng)輸入寄存器IB0
ItemIDs(2)= "S7:[S7 Connection_1]QB1,1"‘ET200S中對應(yīng)輸出寄存器QB1
Call MyItems.AddItems(2 ,ItemIDs,Item-ClientHandles,MyItemServerHandles,Errors)
next
End Sub
(4)同步讀命令
用戶在窗體上建立一個(gè)Timer控件即可實(shí)現(xiàn)數(shù)據(jù)同步采集。
Private Sub cmdReadSync_Click()Dim Errors()As Long
Dim Values()As Variant Dim Qualities As Variant
Dim TimeStamps As Variant
Call MyGroup.SyncRead(OPCDevice,2,My-ItemServerHandles,Values,Errors,Qualities,TimeStamps)
End Sub
文中僅以2個(gè)變量為例,實(shí)際使用時(shí)可以做相應(yīng)修改。通過以上步驟即可實(shí)現(xiàn)同步訪問[3]。
異步訪問的優(yōu)點(diǎn):在訪問完成之前應(yīng)用程序不必等待,可以并行處理,相對于同步訪問方式性能有很大提高,能夠避免多客戶大數(shù)據(jù)請求的阻塞,并可以最大限度地節(jié)省CPU和網(wǎng)絡(luò)資源?;趯@點(diǎn)考慮,船舶電站實(shí)訓(xùn)系統(tǒng)采用了異步訪問方式,但是異步訪問方式也存在不足。值得一提的問題是,由于異步訪問時(shí)不管是否連接PLC都對OPC服務(wù)器進(jìn)行讀寫。需要設(shè)置專門的檢查程序,只有在連接狀態(tài)時(shí)才對OPC服務(wù)器進(jìn)行讀寫。檢查程序基本原理為:讀取斷電保持型寄存器的值,如果讀取到的數(shù)據(jù)為空,證明處于未連接狀態(tài),此時(shí)將不對OPC服務(wù)器進(jìn)行讀寫從而避免虛假數(shù)據(jù)。圖5為異步訪問的流程圖,圖中用虛線框標(biāo)注了判斷程序部分。MW0String中存儲讀取到的寄存器的值,通過對此變量的判斷確定是否處于連接狀態(tài)。PLCLinked為PLC連接標(biāo)志,連接狀態(tài)時(shí)為True,非連接狀態(tài)時(shí)為False。
圖5 異步訪問流程圖
異步訪問的程序編寫方法與同步訪問相同的部分不再介紹,只介紹增加的處理數(shù)據(jù)部分,即為讀取完成時(shí)發(fā)生的事件。
AsyncReadComplete
說明:在異步讀?。ˋsyncRead)完成時(shí)發(fā)生的事件。
文 法:AsyncReadComplete(TransactionID As Long,NumItems As Long ,ClientHandles()As Long,Values()As Variant,Qualities()As Long,TimeStamps()As Date,Errors()As Long)
TransactionID由OPC應(yīng)用程序發(fā)行的事務(wù)標(biāo)識符。
NumItems讀取OPC標(biāo)簽的數(shù)目。
ClientHandles讀取OPC標(biāo)簽的客戶句柄的數(shù)組。
Values返回讀取的數(shù)值的數(shù)組。
Qualities讀取質(zhì)量標(biāo)志的數(shù)組。
TimeStamps讀取采樣時(shí)間的數(shù)組[4-6]。
在讀取完成事件中進(jìn)行數(shù)據(jù)處理。
基于OPC的以太網(wǎng)通訊方式具有連接簡單、數(shù)據(jù)通訊穩(wěn)定可靠、可讀寫PLC中所有的存儲區(qū)域的特點(diǎn),省去了通訊的底層運(yùn)行和許多繁瑣的處理過程,極大提高了控制系統(tǒng)的操作性和適應(yīng)性,廣泛應(yīng)用于工控領(lǐng)域[7]。但由于OPC訪問需要中間軟件,通訊速度有待進(jìn)一步提高,只能應(yīng)用于通訊速度要求不高的系統(tǒng)。船舶電站實(shí)訓(xùn)系統(tǒng)的數(shù)據(jù)通訊采用異步訪問方式經(jīng)長期運(yùn)行穩(wěn)定可靠。
[1] 日本OPC協(xié)會,鄭 立,譯.OPC應(yīng)用程序入門[M].北京:OPC中國促進(jìn)會,2001.
[2] 王緒彪,張 望,江丹玲.基于VB的OPC客戶端軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].自動(dòng)化與儀器儀表,2011,2:46-49.
[3] 劉 莉.用VB編寫OPC客廣端程序的方法[J].工業(yè)控制計(jì)算機(jī),2005,18(5):5-6.
[4] 范新強(qiáng).OPC技術(shù)及其集成方案設(shè)計(jì)分析[J].自動(dòng)化與儀器儀表,2011,1:45-48.
[5] 曹長華.基于OPC技術(shù)的石化企業(yè)自動(dòng)化包裝系統(tǒng)設(shè)計(jì)研究[J].自動(dòng)化與儀器儀表,2011,2:131-133.
[6] 謝冰若.用 Visual Basic實(shí)現(xiàn) OPC客戶端關(guān)鍵技術(shù)[J].決策管理,2006,7:49-50.
[7] 興建春,王 平.工業(yè)控制軟件互操作標(biāo)準(zhǔn)OPC綜述[J].工業(yè)控制計(jì)算機(jī),2000,(1):29-31.