摘要:OPC技術(shù)在工業(yè)自動化系統(tǒng)中應(yīng)用的越來越廣泛,論文詳述了基于OPC技術(shù)介紹了何用Visual Basic編寫監(jiān)控軟件在永宏P(guān)LC上面的應(yīng)用。
關(guān)鍵詞:OPC FBs-PLC Visual Basic 監(jiān)控界面 永宏
Abstract::OPC technology applications in industrial control systems more and more extensive. Here, we are introduce How to use the Visual Basic Language write the Graphics Monitoring Interface basic on OPC which applications in FATEK PLC
Key Words:OPC FBs-PLC Visual Basic Graphics Monitoring Interface FATEK
1,前言:
個人電腦在工業(yè)自動化系統(tǒng)中常作為上位機使用,以實現(xiàn)跟現(xiàn)場設(shè)備如PLC數(shù)據(jù)的處理,實現(xiàn)現(xiàn)場的集中控制。針對于小型的控制系統(tǒng) ,若采用專業(yè)的工控機或者 組態(tài)軟件,則系統(tǒng)的造價必會很高。隨著OPC技術(shù)的發(fā)展與普及,已成為工業(yè)控制的一種通信標(biāo)準(zhǔn)。自動化廠家一般都提供OPC 接口 ,這樣就輕而易舉的解決了上位機與設(shè)備之間的通訊問題。再配合編程語言軟件開發(fā)圖控界面,達(dá)到低成本的監(jiān)控系統(tǒng)。本文將利用永宏電機股份有限公司提供的OPC接口FaconServer.和結(jié)合Visual Basic2005編寫客戶端監(jiān)控程序,實現(xiàn)上位機與永宏P(guān)LC之間的數(shù)據(jù)處理。
2,OPC介紹
OPC是Object Linking and Embedding(OLE)for Process Control的縮寫,基于微軟的OLE(現(xiàn)在的Active X)、COM (部件對象模型)和DCOM (分布式部件對象模型)技術(shù)。OPC包括一整套接口、屬性和方法的標(biāo)準(zhǔn)集,用于過程控制和制造業(yè)自動化系統(tǒng)。它是基于Windows操作平臺的對象鏈接和嵌入技術(shù)在過程控制方面的應(yīng)用。OPC實際上是提供了一種機制,通過這種機制,系統(tǒng)能夠以服務(wù)器/客戶端標(biāo)準(zhǔn)方式從服務(wù)器獲取數(shù)據(jù)并將其傳遞給任何客戶應(yīng)用程序。這樣,只要生產(chǎn)商開發(fā)一套遵循OPC規(guī)范的服務(wù)器與 數(shù)據(jù)進行通信,其他任何客戶應(yīng)用程序便能通過服務(wù)器訪問設(shè)備。
OPC服務(wù)器通常支持兩種類型的訪問接口,它們分別為不同的編程語言環(huán)境提供訪問機制。這兩種接口是:自動化接口(Automation interface);自定義接口(Custom interface)。自動化接口通常是為基于腳本編程語言而定義的標(biāo)準(zhǔn)接口,可以使用Visual Basic、Delphi、PowerBuilder等編程語言開發(fā)OPC服務(wù)器的客戶應(yīng)用。而自定義接口是專門為C++等高級編程語言而制定的標(biāo)準(zhǔn)接口。OPC現(xiàn)已成為工業(yè)界系統(tǒng)互聯(lián)的缺省方案,為工業(yè)監(jiān)控編程帶來了便利,用戶不用為通訊協(xié)議的難題而苦惱。任何一家自動化軟件解決方案的提供者,如果它不能全方位地支持OPC,則必將被歷史所淘汰。
通常在系統(tǒng)設(shè)計中采用OLE自動化標(biāo)準(zhǔn)接口。OLE自動化標(biāo)準(zhǔn)接口,及采用OLE自動化技術(shù)進行調(diào)用,其技術(shù)為上節(jié)所述的OLE自動化技術(shù)。OLE自動化標(biāo)準(zhǔn)接口定義了以下三層接口,依次呈包含關(guān)系:服務(wù)器(server)、組(group)和數(shù)據(jù)項(item)。OPC Server:OPC啟動服務(wù)器,獲得其他對象和服務(wù)的起始類,并用于返回OPC Group類對象;OPC Group:存儲由若干OPC Item組成的Group信息,并用于返回OPC Item類對象。
3,永宏FaconServer介紹
FaconServer是永宏電機股份有限公司配合自身的PLC與上位機連接的OPC服務(wù)器。通過該OPC可以很便捷的使上位機與PLC連接。
[align=center]
圖1 FaconServer界面[/align]
FaconServer提供串口、調(diào)制解調(diào)器和以太網(wǎng)的方式與PLC聯(lián)機。
同時可以建立多個通訊通道(Channel);另外每個通道下面也要實現(xiàn)掛多個不同站號的PLC(Station)。最后在PLC下面建立對應(yīng)的數(shù)據(jù)組(Group),在對應(yīng)的數(shù)據(jù)組里面填寫要監(jiān)控的寄存器(如R或D)或者繼電器點(如X、Y)。
下面我們簡單的介紹一下在FaconServer下建立一個項目的過程。
建立一個項目:通過單擊“新建”來建議一個Project項目;默認(rèn)名稱為Project0。名稱可以根據(jù)情況自行變更。一旦確定后,將不能在做變更。一個文件下面只能建立一個Project。
建立聯(lián)機裝置:在建立好項目后,在下面可以添加聯(lián)機裝置。通過以下3個按鈕來操作聯(lián)機裝置:
:添加聯(lián)機裝置;建立一個聯(lián)機Channel;
:編輯聯(lián)機裝置;修改聯(lián)機裝置的通訊參數(shù)、名稱等。
:刪除聯(lián)機裝置;刪除不再需要保留的聯(lián)機裝置;
在添加時,選擇聯(lián)機方式。其中有串口、Modem和以太網(wǎng)的聯(lián)機方式以及做相關(guān)的敘述。添加成功后,聯(lián)機裝置默認(rèn)為Channel0名稱,在后面連續(xù)的添加中編號將遞增。在一個Project下面,可以添加多個聯(lián)機方式,只要注意通訊端口不重復(fù)占用即可。
添加控制器(PLC)
在建立好聯(lián)機通道后,接著就是添加控制,控制器通過一下3個按鈕來操作:
:添加控制器(PLC);添加PLC;
:編輯控制器(PLC);編輯PLC名稱和站號;
:刪除控制器(PLC);刪除不需保留的PLC;
同樣,在一個聯(lián)機通道下可以建立多個控制器,但名稱與站號不得重復(fù)。
建立PLC下的數(shù)據(jù)群組
在對應(yīng)的控制器下面,建立不同的數(shù)據(jù)群組,以分組的形式,方面監(jiān)視與控制。操作方式由下說明:
建立監(jiān)控數(shù)據(jù)
最后就是在對應(yīng)的監(jiān)控群組下填寫要監(jiān)控的寄存器或者接點。數(shù)據(jù)通過下列3個按鈕操作:
通過上面的介紹,可以在FaconServer里面直接對PLC進行數(shù)據(jù)的操作。但從畫面上來說不算太過于美觀和便利,下面我們將介紹使用Visual Basic 2005編寫監(jiān)控畫面,透過FaconServer來與PLC連接,達(dá)到簡易的圖形監(jiān)控界面。
4,VB程序編寫
永宏P(guān)LC提供的FaconServer中,Visual Basic中使用的函數(shù)如下表所示:
[align=center]表格1:FaconServer使用的函數(shù)
[/align]
我們以實例的寫了來介紹這些函數(shù)的使用。
首先,先直在程序當(dāng)中打開FaconServer,然后建立一個項目:Project0,一個聯(lián)機裝置Channel0,以及一個控制器Station0。并在項目下面建立一個數(shù)據(jù)組Group0。建立好后將該項目以“FaconDEMO”名稱保存到C盤根目錄下:C:\FaconDEMO.fcs。
1. 開啟FaconServer服務(wù)器:OpenProject()。
函數(shù)格式:變量.Openproject("文件路徑")
現(xiàn)在我們就用OpenProject函數(shù)來打開“FaconDEMO.fcs”項目。
Dim Fsvr As Object ‘定義服務(wù)器對象變量Fsvr
在From1_Load的聲明窗體中進行變量的聲明。
范例:VB完整語句如下
Private Sub Form1_Load()
Fsvr = CreateObject("FaconSvr.FaconServer") ‘建立Fsvr服務(wù)器對象變量
Fsvr.Openproject("D:\DEMO.fcs")‘開啟項目:FaconDEMO.fcs。
End Sub
將這兩句語句放置到From1_load窗體中,即在啟動圖形界面時,可以自動的啟動FaconServer,同時打開FaconDEMO文件。
2. 保存項目:Saveproject。
函數(shù)格式:變量.Saveproject("文件路徑")
范例:VB完整語句如下
Private Sub SaveBTN_Click()
Fsvr.Saveproject("D:\DEMO.fcs") ‘保存修改后的項目
End Sub
在窗體中創(chuàng)建一個“SaveBTN”按鈕,通過單擊按鈕來實現(xiàn)修改后的窗體保存。
3. 連接PLC操作:Connect。
函數(shù)格式:變量.Connect()
VB范例:使用“ConnecBtn”按鈕來實現(xiàn)離線操作。
Private Sub ConnecBtn_Click()
PictureBox1.Image = FaconS.My.Resources.NET_YG ‘聯(lián)系圖標(biāo)指示變化
Fsvr.connect()‘FaconServer執(zhí)行PLC聯(lián)機
End Sub
使用“ConnectBtn”按鈕,實現(xiàn)FaconServer與PLC的連接。另外通過改變圖片物件“ PictureBox1”的圖片,從VB界面中直觀的了解到當(dāng)前是聯(lián)機或者斷開狀態(tài)。
4. 離線操作:Disconnect。
函數(shù)格式:變量. Disconnect ()
VB范例:使用“DisconBtn”按鈕來實現(xiàn)離線操作。
Private Sub DisconBtn_Click()
PictureBox1.Image = FaconS.My.Resources.ITTAI3D ‘離線圖標(biāo)指示變化
Fsvr.disconnect() ‘FaconServer執(zhí)行PLC離線操作
End Sub
同時在離線后,更換”PictureBox1”的圖片,來表示當(dāng)前FaconServer與PLC是脫離的狀態(tài)的。
5. 組群操作:AddGroup、EditGroup、DelectGroup。
1).AddGroup:添加一個群組。
函數(shù)格式:變量.AddGroup("聯(lián)機裝置[Channel].控制器[Station]", "新建組群名稱[Group]",優(yōu)先權(quán)[0-高或1-中或2-低], 至能[1] 或抑能[0])
VB范例:通過“AddGp”按鈕在通道0 控制起0 下增加Group10數(shù)組,優(yōu)先級為0 ,至能狀態(tài)。
Private Sub AddGp_Click()
Fsvr.AddGroup(Channel0.Station0, Group10, 0, 1) ‘增加組群Group10命令
End Sub
2).EditGroup:編輯群組的參數(shù)。
函數(shù)格式:與AddRoup的一致,只需要將對應(yīng)以下參數(shù)作變更:優(yōu)先級和至能/抑能狀態(tài)。
VB范例:
Private Sub EditBt_Click()
Fsvr.EditGroup("Channel0.Station0", "Group0", 1, 0)‘修改Group0的優(yōu)先級為中級和抑能狀態(tài)命令
End Sub
3).DelectGroup:刪除一個群組。
函數(shù)格式:變量.AddGroup("聯(lián)機裝置[Channel].控制器[Station]", "欲刪除組群名稱[Group]")
VB范例:使用“DelGBnt”,通過Combobox1控件來確定要刪除的群組,同時清除Combobox1中的群組名稱。
Private Sub DelGBnt_Click()
Dim DGpmane As String ‘定字符串
DGpmane = ComboBox1.SelectedItem ‘COMBOBOX選擇欲刪除的群組
Fsvr.DeleteGroup("Channel0.Station0", DGpmane) ‘刪除DGpmane選擇的群組
ComboBox1.Items.Remove(DGpmane)’ 清除ComboBox1中的群組項目
End Sub
6. 項目操作:AddItem、DelectItem、GetItem、SetItem。
1).AddItem:新增項目(新增要自動讀取的變量)。
函數(shù)格式:變量.AddItem("聯(lián)機裝置[Channel].控制器[Station].群組名[Group]", "欲增加的項目名稱[R,D,X,Y,M]")
VB范例:
Private Sub Button1_Click()
Dim Aitem As String ‘聲明字符串變量
Aitem = TextBox7.Text ‘使用Textbox7來實現(xiàn)添加項目的輸入
Fsvr.AddItem("Channel0.Station0.Group0", Aitem)‘添加項目命令
ComboBox2.Items.Add(Aitem) ‘將新增的項目添加到ComboBox2的列表中
End Sub
2).DelectItem:刪除項目。
函數(shù)格式:變量.DeleteItem("聯(lián)機裝置[Channel].控制器[Station].群組名[Group]", "欲刪除的項目名稱[R,D,X,Y,M]")
VB范例:
Private Sub DelItemBtn_Click()
Dim DelItem As String
DelItem = ComboBox2.SelectedItem ‘Combobox2選擇欲刪除的項目
Label8.Text = "已刪除" + DelItem ‘顯示刪除的項目
ComboBox2.Items.Remove(DelItem) ‘將刪除的項目從Combobox2中移除
Fsvr.DeleteItem("Channel0.Station0.Group0", DelItem) ‘添加項目命令
End Sub
3).GetItem:讀取變數(shù)值
函數(shù)格式:變量.DeleteItem("聯(lián)機裝置[Channel].控制器[Station].群組名[Group]", "欲獲取數(shù)據(jù)的項目名稱[R,D,X,Y,M]")
VB范例:由于數(shù)據(jù)時即時變化的,所以要使用到Timer控件來不斷地獲取新數(shù)據(jù)。下面為獲取M1922和R0的數(shù)據(jù)例子。
Private Sub Timer1_Tick()
Dim M1922Val As Integer
M1922Val = Fsvr.GetItem("Channel0.Station0.Group0", "M1922") ‘獲取M1922的數(shù)值
If M1922Val > 0 Then ‘IF語句判斷當(dāng)前狀態(tài)
PictureBox2.Image = FaconS.My.Resources.Light_1 ‘當(dāng)M1922=1時,以圖片Light_1.ico顯示紅色圓表示燈顯亮
Else
PictureBox2.Image = FaconS.My.Resources.Light_0 ‘當(dāng)M1922=0時,以圖片Light_0.ico顯示淡紅色圓表示燈熄滅
End If
R0Val.Text = Fsvr.GetItem("Channel0.Station0.Group0", "R0") ‘獲取R0的數(shù)值,用TextBox控件顯示
End Sub
4).SetItem:寫入變數(shù)值
函數(shù)格式:變量.DeleteItem("聯(lián)機裝置[Channel].控制器[Station].群組名[Group]", "欲修改數(shù)據(jù)的項目名稱[R,D,X,Y,M]",”要寫入的數(shù)據(jù)[整數(shù)]”)
VB范例:通過“WrItemBtn” 將“DatTextBox”的數(shù)據(jù)寫入到“RigTextBox”指定的寄存器中去,并用“Label13”來顯示提示數(shù)據(jù)修改的情況。
Private Sub WrItemBtn_Click()
Dim Rig As String
Dim Dat As Integer
Rig = RigTextBox.Text ‘RigTextBox指定要寫入數(shù)據(jù)的寄存器地址
Dat = DatTextBox.Text ‘DatTextBox設(shè)定要輸入的數(shù)據(jù)
Label13.Text = "已將" + RigTextBox.Text + "數(shù)據(jù)修改為" + DatTextBox.Text ‘使用Label13來提示修改的寄存器為多少數(shù)值
Fsvr.setitem("channel0.Station0.Group0", Rig, Dat) ‘執(zhí)行修改數(shù)值命令
End Sub
5,結(jié)束語
通過上文,正對每個命令函數(shù)做格式的說明以及案例的編寫,讀者在讀完整章節(jié)后,很容易的,就能使用Visual Basic來完成圖形監(jiān)控的編寫。在簡易的監(jiān)控中,完全可以自行開發(fā)監(jiān)控界面。采用 OPC技術(shù)使得整個項目的實施變的簡單、靈活,體現(xiàn)了其在工業(yè)控制系統(tǒng)中的優(yōu)越性。
參考文獻(xiàn):
[1] 永宏可編程控制器使用手冊I 和使用手冊II.臺灣永宏電機股份有限公司
[2] FaconServer ActiveX.臺灣永宏電機股份有限公司
[3] Vsiual Basic2005入門與提高.清華大學(xué)出版社
作者簡介:
孫恒孝(1980- ),畢業(yè)于合肥工業(yè)大學(xué)自動化系
主要從事PLC行業(yè)的技術(shù)支持與行業(yè)應(yīng)用工作
聯(lián)系方式:范堤商貿(mào)(上海)有限公司
021-66315471