OPC Technology Application in FATEK FBs-PLC
摘要:OPC技术在工业自动化系统中应用的越来越广泛,论文详述了基于OPC技术介绍了何用Visual Basic编写监控软件在永宏PLC上面的应用。 关键词:OPC FBs-PLC Visual Basic 监控界面 永宏
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, 前言:
个人电脑在工业自动化系统中常作为上位机使用,以实现跟现场设备如PLC数据的处理,实现现场的集中控制。针对于小型的控制系统 ,若采用专业的工控机或者 组态软件,则系统的造价必会很高。随着OPC技术的发展与普及,已成为工业控制的一种通信标准。自动化厂家一般都提供OPC 接口 ,这样就轻而易举的解决了上位机与设备之间的通讯问题。再配合编程语言软件开发图控界面,达到低成本的监控系统。本文将利用永宏电机股份有限公司提供的OPC接口FaconServer.和结合Visual Basic2005编写客户端监控程序,实现上位机与永宏PLC之间的数据处理。
2, OPC介绍
OPC是Object Linking and Embedding(OLE)for Process Control的缩写,基于微软的OLE(现在的Active X)、COM (部件对象模型)和DCOM (分布式部件对象模型)技术。OPC包括一整套接口、属性和方法的标准集,用于过程控制和制造业自动化系统。它是基于Windows操作平台的对象链接和嵌入技术在过程控制方面的应用。OPC实际上是提供了一种机制,通过这种机制,系统能够以服务器/客户端标准方式从服务器获取数据并将其传递给任何客户应用程序。这样,只要生产商开发一套遵循OPC规范的服务器与 数据进行通信,其他任何客户应用程序便能通过服务器访问设备。
OPC服务器通常支持两种类型的访问接口,它们分别为不同的编程语言环境提供访问机制。这两种接口是:自动化接口(Automation interface);自定义接口(Custom interface)。自动化接口通常是为基于脚本编程语言而定义的标准接口,可以使用Visual Basic、Delphi、PowerBuilder等编程语言开发OPC服务器的客户应用。而自定义接口是专门为C++等高级编程语言而制定的标准接口。OPC现已成为工业界系统互联的缺省方案,为工业监控编程带来了便利,用户不用为通讯协议的难题而苦恼。任何一家自动化软件解决方案的提供者,如果它不能全方位地支持OPC,则必将被历史所淘汰。 通常在系统设计中采用OLE自动化标准接口。OLE自动化标准接口,及采用OLE自动化技术进行调用,其技术为上节所述的OLE自动化技术。OLE自动化标准接口定义了以下三层接口,依次呈包含关系:服务器(server)、组(group)和数据项(item)。OPC Server:OPC启动服务器,获得其他对象和服务的起始类,并用于返回OPC Group类对象;OPC Group:存储由若干OPC Item组成的Group信息,并用于返回OPC Item类对象。
3, 永宏FaconServer介绍
FaconServer是永宏电机股份有限公司配合自身的PLC与上位机连接的OPC服务器。通过该OPC可以很便捷的使上位机与PLC连接。
图1 FaconServer界面
FaconServer提供串口、调制解调器和以太网的方式与PLC联机。
同时可以建立多个通讯通道(Channel);另外每个通道下面也要实现挂多个不同站号的PLC(Station)。最后在PLC下面建立对应的数据组(Group),在对应的数据组里面填写要监控的寄存器(如R或D)或者继电器点(如X、Y)。
下面我们简单的介绍一下在FaconServer下建立一个项目的过程。
建立一个项目:通过单击“新建”来建议一个Project项目;默认名称为Project0。名称可以根据情况自行变更。一旦确定后,将不能在做变更。一个文件下面只能建立一个Project。 建立联机装置:在建立好项目后,在下面可以添加联机装置。通过以下3个按钮来操作联机装置:
:添加联机装置;建立一个联机Channel;
:编辑联机装置;修改联机装置的通讯参数、名称等。 :删除联机装置;删除不再需要保留的联机装置;
在添加时,选择联机方式。其中有串口、Modem和以太网的联机方式以及做相关的叙述。添加成功后,联机装置默认为Channel0名称,在后面连续的添加中编号将递增。在一个Project下面,可以添加多个联机方式,只要注意通讯端口不重复占用即可。 添加控制器(PLC)
在建立好联机通道后,接着就是添加控制,控制器通过一下3个按钮来操作:
:添加控制器(PLC);添加PLC;
:编辑控制器(PLC);编辑PLC名称和站号; :删除控制器(PLC);删除不需保留的PLC;
同样,在一个联机通道下可以建立多个控制器,但名称与站号不得重复。
建立PLC下的数据群组
在对应的控制器下面,建立不同的数据群组,以分组的形式,方面监视与控制。操作方式由下说明:
:添加群组;建立数据分组
:编辑群组;修改群组名称、优先级和相关叙述; :删除多余的群组;
建立监控数据
最后就是在对应的监控群组下填写要监控的寄存器或者接点。数据通过下列3个按钮操作:
:添加数据;添加数据内容。可以是寄存器,也可以是单点; :修改数据内容;修改对应的寄存器值; :删除数据内容;删除选择的数据;
通过上面的介绍,可以在FaconServer里面直接对PLC进行数据的操作。但从画面上来说不算太过于美观和便利,下面我们将介绍使用Visual Basic 2005编写监控画面,透过FaconServer来与PLC连接,达到简易的图形监控界面。
4, VB程序编写
函数 说 明 开启先前已储存的项目文件(扩展名为’fcs’)功能与操作窗口的[开启项目]相同. 储存目前规划数据至档案(扩展名为’fcs’), 功能与操作窗口的[储存项目]相同. 执行联机动作,将PLC数据读回PC, 功能与操作窗口的[联机]相同. 中断联机动作, 功能与操作窗口的[脱机]相同. 新增组群, 功能与操作窗口的[新增组群]相同. 编辑组群, 功能与操作窗口的[编辑组群]相同. 删除组群, 功能与操作窗口的[删除组群]相同. 新增项目(新增要自动读取的变量), 功能与操作窗口的[新增项目]相同. 删除项目, 功能与操作窗口的[删除项目]相同. 读取变数值 写入变数值 表格1:FaconServer使用的函数
永宏PLC提供的FaconServer中,Visual Basic中使用的函数如下表所示: OpenProject SavsProject Connect Disconnect AddGroup EditGroup DelectGroup AddItem DelectItem GetItem SetItem 我们以实例的写了来介绍这些函数的使用。
首先,先直在程序当中打开FaconServer,然后建立一个项目:Project0,一个联机装置Channel0,以及一个控制器Station0。并在项目下面建立一个数据组Group0。建立好后将该
项目以“FaconDEMO”名称保存到C盘根目录下:C:\\FaconDEMO.fcs。
1. 开启FaconServer服务器:OpenProject()。
函数格式:变量.Openproject(\"文件路径\")
现在我们就用OpenProject函数来打开“FaconDEMO.fcs”项目。 Dim Fsvr As Object '定义服务器对象变量Fsvr 在From1_Load的声明窗体中进行变量的声明。 范例:VB完整语句如下
Private Sub Form1_Load()
Fsvr = CreateObject(\"FaconSvr.FaconServer\") '建立Fsvr服务器对象变量 Fsvr.Openproject(\"D:\\DEMO.fcs\") '开启项目:FaconDEMO.fcs。 End Sub
将这两句语句放置到From1_load窗体中,即在启动图形界面时,可以自动的启动FaconServer,同时打开FaconDEMO文件。
2. 保存项目:Saveproject。
函数格式:变量.Saveproject(\"文件路径\") 范例:VB完整语句如下
Private Sub SaveBTN_Click()
Fsvr.Saveproject(\"D:\\DEMO.fcs\") '保存修改后的项目 End Sub
在窗体中创建一个“SaveBTN”按钮,通过单击按钮来实现修改后的窗体保存。
3. 连接PLC操作:Connect。
函数格式:变量.Connect()
VB范例:使用“ConnecBtn”按钮来实现离线操作。
Private Sub ConnecBtn_Click()
PictureBox1.Image = FaconS.My.Resources.NET_YG '联系图标指示变化 Fsvr.connect() 'FaconServer执行PLC联机 End Sub
使用“ConnectBtn”按钮,实现FaconServer与PLC的连接。另外通过改变图片物件“ PictureBox1”的图片,从VB界面中直观的了解到当前是联机或者断开状态。 4. 离线操作:Disconnect。
函数格式:变量. Disconnect ()
VB范例:使用“DisconBtn”按钮来实现离线操作。
Private Sub DisconBtn_Click()
PictureBox1.Image = FaconS.My.Resources.ITTAI3D '离线图标指示变化 Fsvr.disconnect() 'FaconServer执行PLC离线操作 End Sub
同时在离线后,更换”PictureBox1”的图片,来表示当前FaconServer与PLC是脱离的状态的。 5. 组群操作:AddGroup、EditGroup、DelectGroup。 1).AddGroup:添加一个群组。 函数格式:变量.AddGroup(\"联机装置[Channel].控制器[Station]\新建组群名称[Group]\优先权[0-高或1-中或2-低], 至能[1] 或抑能[0])
VB范例:通过“AddGp”按钮在通道0 控制起0 下增加Group10数组,优先级为0 ,至能状态。
Private Sub AddGp_Click()
Fsvr.AddGroup(Channel0.Station0, Group10, 0, 1) '增加组群Group10命令 End Sub
2).EditGroup:编辑群组的参数。
函数格式:与AddRoup的一致,只需要将对应以下参数作变更:优先级和至能/抑能状态。 VB范例:
Private Sub EditBt_Click()
Fsvr.EditGroup(\"Channel0.Station0\ '修改Group0的优先级为中级和抑能状态命令
End Sub
3).DelectGroup:删除一个群组。
函数格式:变量.AddGroup(\"联机装置[Channel].控制器[Station]\欲删除组群名称[Group]\") VB范例:使用“DelGBnt”,通过Combobox1控件来确定要删除的群组,同时清除Combobox1中的群组名称。
Private Sub DelGBnt_Click()
Dim DGpmane As String ‘定字符串
DGpmane = ComboBox1.SelectedItem 'COMBOBOX选择欲删除的群组 Fsvr.DeleteGroup(\"Channel0.Station0\ ‘删除DGpmane选择的群组 ComboBox1.Items.Remove(DGpmane) ’ 清除ComboBox1中的群组项目
End Sub
6. 项目操作:AddItem、DelectItem、GetItem、SetItem。
1).AddItem:新增项目(新增要自动读取的变量)。 函数格式:变量.AddItem(\"联机装置[Channel].控制器[Station].群组名[Group]\欲增加的项目名称[R,D,X,Y,M]\") VB范例:
Private Sub Button1_Click()
Dim Aitem As String '声明字符串变量
Aitem = TextBox7.Text '使用Textbox7来实现添加项目的输入 Fsvr.AddItem(\"Channel0.Station0.Group0\ '添加项目命令
ComboBox2.Items.Add(Aitem) '将新增的项目添加到ComboBox2的列表中 End Sub
2).DelectItem:删除项目。 函数格式:变量.DeleteItem(\"联机装置[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\ '添加项目命令 End Sub
3).GetItem:读取变数值 函数格式:变量.DeleteItem(\"联机装置[Channel].控制器[Station].群组名[Group]\欲获取数据的项目名称[R,D,X,Y,M]\")
VB范例:由于数据时即时变化的,所以要使用到Timer控件来不断地获取新数据。下面为
获取M1922和R0的数据例子。
Private Sub Timer1_Tick() Dim M1922Val As Integer
M1922Val = Fsvr.GetItem(\"Channel0.Station0.Group0\ '获取M1922的数值 If M1922Val > 0 Then 'IF语句判断当前状态
PictureBox2.Image = FaconS.My.Resources.Light_1 '当M1922=1时,以图片Light_1.ico显示红色圆表示灯显亮 Else
PictureBox2.Image = FaconS.My.Resources.Light_0 '当M1922=0时,以图片Light_0.ico显示淡红色圆表示灯熄灭 End If
R0Val.Text = Fsvr.GetItem(\"Channel0.Station0.Group0\ '获取R0的数值,用TextBox控件显示 End Sub
4).SetItem:写入变数值 函数格式:变量.DeleteItem(\"联机装置[Channel].控制器[Station].群组名[Group]\欲修改数据的项目名称[R,D,X,Y,M]\",”要写入的数据[整数]”)
VB范例:通过“WrItemBtn” 将“DatTextBox”的数据写入到“RigTextBox”指定的寄存器中去,并用“Label13”来显示提示数据修改的情况。
Private Sub WrItemBtn_Click() Dim Rig As String Dim Dat As Integer
Rig = RigTextBox.Text 'RigTextBox指定要写入数据的寄存器地址 Dat = DatTextBox.Text 'DatTextBox设定要输入的数据
Label13.Text = \"已将\" + RigTextBox.Text + \"数据修改为\" + DatTextBox.Text '使用Label13来提示修改的寄存器为多少数值
Fsvr.setitem(\"channel0.Station0.Group0\ '执行修改数值命令
End Sub
5, 结束语
通过上文,正对每个命令函数做格式的说明以及案例的编写,读者在读完整章节后,很容易的,就能使用Visual Basic来完成图形监控的编写。在简易的监控中,完全可以自行开发监控界面。采用 OPC技术使得整个项目的实施变的简单、灵活,体现了其在工业控制系统中的优越性。
参考文献:
[1] 永宏可编程控制器使用手册I 和使用手册II.台湾永宏电机股份有限公司 [2] FaconServer ActiveX.台湾永宏电机股份有限公司
[3] Vsiual Basic2005入门与提高.清华大学出版社
因篇幅问题不能全部显示,请点此查看更多更全内容