厦门海正自动科技有限公司2007年成立于厦门经济区,本公司主要销售各种电子、电气产品及配件.是台湾FATEK永宏PLC可编程控制器在大陆的一级代理商及销售深圳威纶通各种威纶触摸屏.
    永宏PLC
值得您信賴的品牌
 业务电話:  0592-5337726
            0592-5337728
 联系传真:  0592-5337738
   陈先生:  13328315236
   邓小姐:  13860161134
 技术热线:  0592-5337731
 在线SKYPE: HZ-SALES726
 QQ技术群:  30812609
   点击这里给我发消息  点击这里给我发消息        点此与我即刻洽谈
海正首页 >> 工程案例 >> OPC技术在永宏PLC上的应用

OPC技术在永宏PLC上的应用

作者:海正科技 | 2021-12-9

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程序编写

    永宏PLC提供的FaconServer中,Visual Basic中使用的函数如下表所示:

表格1:FaconServer使用的函数

   我们以实例的写了来介绍这些函数的使用。

   首先,先直在程序当中打开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", 1, 0)‘修改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) ‘删除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", Aitem)‘添加项目命令
        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", DelItem) ‘添加项目命令
    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")  ‘获取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")   ‘获取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", Rig, Dat) ‘执行修改数值命令

    End Sub


5,结束语

    通过上文,正对每个命令函数做格式的说明以及案例的编写,读者在读完整章节后,很容易的,就能使用Visual Basic来完成图形监控的编写。在简易的监控中,完全可以自行开发监控界面。采用 OPC技术使得整个项目的实施变的简单、灵活,体现了其在工业控制系统中的优越性。

网站首页    公司简介    海正动态    产品中心    工程案例    技术论坛    资料下载    联系方式    给我们留言
2006-2013 永宏PLC經銷商-廈門海正自動化科技有限公司 閩ICP備16023001号-1
聯系電話:0592-5337726 5337727 5337728 傳真:0592-5337738 技術服務:0592-5337731
聯系地址:福建省廈門市火炬高新区火炬路7-11号(光业东楼)四楼401室 郵編:361000

闽公网安备 35020302001512号