最简单的访问OPC服务器方法

  • 格式:doc
  • 大小:1.03 MB
  • 文档页数:7

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最简单的访问OPC服务器

在网上搜了很多关于编写客户端访问OPC服务器的资料,同时也根据KEPWARE提供的案例源代码,同时进行研究,最后花了一个星期的时间进行研究,才粗略有了一点头绪,现共享出来,希望后来的初学者有所帮助。

一.要建一个OPC服务器

1)安装OPC服务器软件,KEPware是大家比较常用的,我使用的是Kepware OPC V4.54。

如图,添加CHANNEL,添加TAG.把Plc的点位添加进去,我建了6个变量(item)。具体添加的方法需要自行去学习。我添加的三菱Q系列的PLC,PLC采用以太网通讯的方式,在局部网就可以访问了。

2)设置DCOM,这个步骤很重要,具体的设置方法,网上很多资料,按步骤设置就可以。我原来按照组态王提供的方法,总是不成功,后来上了微软网站,按微软提供的方法设置肯定可以成功。

完成了以上两步,你的电脑就变成OPC服务器了。

二.访问服务器

1.利用组态软件访问OPC服务器。

如果用组态王访问,那就太简单了,左边列表,选opc服务器,点击添加服务器,就会弹出一个窗口,把本机的OPC服务器列成清单。在清单里面就可以发现KEPSERVER的名称:KEPware.KEPserverEx.V4,选择,然后按确定,就完成了添加服务器。

在组态王的数据词典,新建变量,I/O变量,连接设备选择OPC服务器,寄存器可以看到KEPserver的变量(item),建立之后,就可以利用组网王,开发监控应用,组态软件的使用在此就不赘述了,总之,利用组态软件访问OPC是最简单的。

2.用开发客户端访问

访问opc服务器,必须使用OPC基金会提供的OPCdaauto.dll。学习过程,最好下载说明书,《OPC_20_Automation_Interface》,网上可以下载。

1)注册OPCdaauto.dll。这个动态连接库文件可以网上下载。拷贝到C:\WINDOWS\SYSTEM32

目录,打开运行输入框,输入:regsvr32 C:\WINDOWS\SYSTEM32\OPCDAAUTO.DLL 如果是64位windows,则拷贝在C:\WINDOWS\ syswow64。输入:regsvr32 C:\WINDOWS\ syswow64\OPCDAAUTO.DLL。

2)VS2015,新建一个项目。在项目---点击“添加引用”,使用浏览,在COM,可以找到opc da

automation的选项,点击确认,及完成添加。

添加成功,则资源管理器,应用,可以看到OPCautomation的项目。

3)编写程序的过程

最简单的一个案例,如下图,实现搜索服务器,连接服务器后,获取ITEM的实时值。

A)查找服务器

点击“查找服务器”按钮,地址不填,则列出本机的OPC服务器。如果填写另一台服务器地址,则列出另一台电脑的服务器清单

如何知道计算机名?看网络邻居,至少你应该知道那台电脑装了OPC服务器。

Public Class Form1

Inherits System.Windows.Forms.Form

Dim WithEvents AnOPCServer As OPCAutomation.OPCServer'用于搜索服务器,连接服务器

Dim WithEvents ConnectedGroup As OPCAutomation.OPCGroup'对应后面添加组和项

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

End Sub

'以下程序:搜索OPC服务器,显示在列表框上面

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CONNET.Click Try

AnOPCServer = New OPCAutomation.OPCServer

ListBox1.Items.Clear()

Dim AllOPCServers As Object

AllOPCServers = AnOPCServer.GetOPCServers(TextBox1.Text) '以括号用文本框输入,确定OPC服务器的路径,空白表示搜索本机,如果搜索内部网其他电脑,则写电脑的名称,例如:\\电脑名称

Dim i As Short

For i = LBound(AllOPCServers) To UBound(AllOPCServers)

ListBox1.Items.Add(AllOPCServers(i))

Next i

Catch ex As Exception

MessageBox.Show("List OPC servers failed with exception: "+ ex.Message, "SimpleOPCInterface Exception", MessageBoxButtons.OK) '用于显示执行结果,如果失败,则可以显示失败的原因。

End Try

End Sub

B)连接服务器、添加项和组

代码如下:

Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click

'以下程序连接服务器连接

Try

AnOPCServer.Connect(ListBox1.Text, TextBox1.Text) '第一个是参数是opc服务器名称,第二个是电脑名称。直接填写也可以,例如:AnOPCServer.Connect(“KEPware.KEPserverEx.V4”,“\\newPI”)

Catch ex As Exception

MessageBox.Show("OPC server 连接失败 : " + ex.Message, "OPCSample", MessageBoxButtons.OK) End Try

'以下程序添加group和item

Try

AnOPCServer.OPCGroups.DefaultGroupIsActive = True '使其活动,照抄就行。

AnOPCServer.OPCGroups.DefaultGroupDeadband = 0 '照抄就行。

ConnectedGroup = AnOPCServer.OPCGroups.Add("GROUP1") '添加GROUP,名称自己随便填。

ConnectedGroup.UpdateRate = 100 '更新速率,我实验过,值越小,获取ITEM值越灵敏。

ConnectedGroup.IsSubscribed = True'采用订阅的方式,后面用DATACHANGE的事件获取item值,与此对应。

ConnectedGroup.OPCItems.AddItem("CHANNEL2.DEVICE1.绿灯", 1)

ConnectedGroup.OPCItems.AddItem("CHANNEL2.DEVICE1.产量", 2)

ConnectedGroup.OPCItems.AddItem("CHANNEL2.DEVICE1.黄灯", 3)

ConnectedGroup.OPCItems.AddItem("CHANNEL2.DEVICE1.省电", 4)

ConnectedGroup.OPCItems.AddItem("CHANNEL2.DEVICE1.产量1", 5)

ConnectedGroup.OPCItems.AddItem("CHANNEL2.DEVICE2.产量", 6)

'ADDITEM和ADDITEMS,两种命令的格式不同,这里仅用最简单的additem命令,用最土的办法添加了6个ITEM,两个