最简单地访问OPC服务器方法_第1页
最简单地访问OPC服务器方法_第2页
最简单地访问OPC服务器方法_第3页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、WORD格式最简单的访问 OPC 效劳器在网上搜了很多关于 VB.NET 编写客户端访问 OPC 效劳器的资料,同时也根据 KEPWARE 提供的案例源代码,同时进展研究,最后花了一个星期的时间进展研究,才粗略有了一点头绪,现共享出来,希望后来的初学者有所帮助。一要建一个 OPC 效劳器1安装 OPC 效劳器软件, KEPware 是大家比较常用的,我使用的是 Kepware OPC V4.54。如图,添加 CHANNEL, 添加 TAG.把 Plc 的点位添加进去,我建了 6 个变量 item。具体添加的方法需要自行去学习。我添加的三菱 Q 系列的 PLC,PLC 采用以太网通讯的方式,在局

2、部网就可以访问了。2设置 DCOM, 这个步骤很重要,具体的设置方法,网上很多资料,按步骤设置就可以。我原来按照组态王提供的方法,总是不成功,后来上了微软,按微软提供的方法设置肯定可以成功。完成了以上两步,你的电脑就变成OPC 效劳器了。二访问效劳器1.利用组态软件访问OPC 效劳器。如果用组态王访问,那就太简单了,左边列表,选 opc 效劳器,点击添加效劳器,就会弹出一个窗口,把本机的 OPC 效劳器列成清单。在清单里面就可以发现 KEPSERVER 的名称:KEPware.KEPserverEx.V4,选择,然后按确定,就完成了添加效劳器。专业资料整理WORD格式在组态王的数据词典,新建变

3、量, I/O 变量,连接设备选择 OPC 效劳器,存放器可以看到 KEPserver 的变量 item,建立之后,就可以利用组网王,开发监控应用,组态软件的使用在此就不赘述了,总之,利用组态软件访问 OPC 是最简单的。2.用 VB.NET 开发客户端访问访问 opc 效劳器,必须使用OPC 基金会提供的 OPCdaauto.dll。学习过程,最好下载说明书,OPC_20_Automation_Interface,网上可以下载。专业资料整理WORD格式1) 注册 OPCdaauto.dll。这个动态连接库文件可以网上下载。拷贝到 C:WINDOWSSYSTEM32 目录, 翻开运行输入框,输入

4、: regsvr32 C:WINDOWSSYSTEM32OPCDAAUTO.DLL如果是 64 位 windows,那么拷贝在syswow64 。输入:syswow64 OPCDAAUTO.DLL 。2) VS2021 ,新建一个工程。在工程 -点击“添加引用,使用浏览,在 COM ,可以找到 opc da automation 的选项,点击确认,及完成添加。添加成功,那么资源管理器,应用,可以看到OPCautomation的工程。专业资料整理WORD格式3编写程序的过程最简单的一个案例,如以下图,实现搜索效劳器,连接效劳器后,获取ITEM 的实时值。A) 查找效劳器OPC 效劳器。如果填写另

5、一台点击“查找效劳器按钮,地址不填,那么列出本机的效劳器地址,那么列出另一台电脑的效劳器清单如何知道计算机名?看网络邻居,至少你应该知道那台电脑装了OPC 效劳器。专业资料整理WORD格式Public Class Form1专业资料整理WORD格式Inherits System.Windows.Forms.FormDim WithEvents AnOPCServer As OPCAutomation. OPCServer 用于搜索效劳器 ,连接效劳器 Dim WithEvents ConnectedGroup As OPCAutomation. OPCGroup 对应后面添加组和项Privat

6、e Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.LoadEnd Sub以下程序:搜索 OPC效劳器,显示在列表框上面Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CONNET.Click Try专业资料整理WORD格式AnOPCServer = New OPCAutomation.OPCServerListBox1.Items.Clear()Dim AllOPCServ

7、ers As ObjectAllOPCServers = AnOPCServer.GetOPCServers(TextBox1.Text) 以括号用文本框输入,确定OPC效劳器的路径,空白专业资料整理WORD格式表示搜索本机,如果搜索内部网其他电脑,那么写电脑的名称,例如:电脑名称专业资料整理WORD格式Dim i As ShortFor i = LBound(AllOPCServers) To UBound(AllOPCServers)ListBox1.Items.Add(AllOPCServers(i)Next iCatch ex As ExceptionMessageBox.Show(L

8、ist OPC servers failed with exception: + ex.Message, SimpleOPCInterface Exception ,MessageBoxButtons.OK)用于显示执行结果,如果失败,那么可以显示失败的原因。End TryEnd SubB) 连接效劳器、添加项和组代码如下:Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click以下程序连接效劳器连接TryAnOPCServer.Connect(ListBox1.Text, TextB

9、ox1.Text)第一个是参数是 opc效劳器名称,第二个是电脑名称。直接填写也可以,例如: AnOPCServer.Connect( “ KEPware.KEPserverEx.V4 ,“newPI )Catch ex As ExceptionMessageBox.Show(OPC server 连接失败: + ex.Message, OPCSample, MessageBoxButtons.OK)End Try专业资料整理WORD格式以下程序添加group和 item专业资料整理WORD格式TryAnOPCServer.OPCGroups.DefaultGroupIsActive = Tr

10、ue使其活动,照抄就行。AnOPCServer.OPCGroups.DefaultGroupDeadband = 0照抄就行。ConnectedGroup = AnOPCServer.OPCGroups.Add(GROUP1 )添加 GROUP,名称自己随便填。ConnectedGroup.UpdateRate = 100 更新速率,我实验过,值越小,获取ITEM 值越灵敏。ConnectedGroup.IsSubscribed =True采用订阅的方式,后面用DATACHANGE 的事件获取 item值,与此对应。ConnectedGroup.OPCItems.AddItem(CHANNEL

11、2.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)专业

12、资料整理WORD格式ADDITEM和ADDITEMS,两种命令的格式不同,这里仅用最简单的additem命令,用最土的方法添加了6个ITEM ,专业资料整理WORD格式两个参数,第一个是 item名称,必须和 KEPSERVER 建立的 ITEM 完全一致,第二个参数是 CLIENTHANDLES, 句柄。 6个ITEM, 我给的是 1-6,随便数字都可以,不重复即可。这个跟后面获取值有直接关系!Catch ex As ExceptionMessageBox.Show(添加组和项失败: + ex.Message, OPCSample, MessageBoxButtons.OK)End TryE

13、nd SubC)获取前面提到的 订阅的方式,是OPC效劳器主动的方式,把有变化的ITEM ,发送给客户端。需要使用 DataChange的事件来获取 item值,OPC_20_Automation_Interface58页。假设两个 OPC效劳器有 2个item发生改变 绿灯,产量 ,那么会返回 2个 ITEMS, 返回的, 其中 ITEMVALUES 是返回的 ITEM 实际值, ClientHandles是返回的句柄值,句柄值和添加 ITEM 时定义的句柄对应。前面添加的 CHANNEL2.DEVICE2. 产量 ,我定义的 ClientHandles是6。如果数值发生变化,那么效劳器返回

14、的的值也是6。实际返回值:NumItems=2专业资料整理WORD格式ClientHandles(1)= 1 ,ITEMVALUES ClientHandles(2)= 6 ,ITEMVALUES1=true2= 65ItemValues1=trueItemValues2=65专业资料整理WORD格式因为返回的是数组,那么需要定义一个字符串的数组去承受ITEM值。专业资料整理WORD格式添加事件的方法:源代码如下:Private Sub ConnectedGroup_DataChange(TransactionID As Integer, NumItems As Integer, ByRef

15、ClientHandles As Array, ByRef ItemValues As Array, ByRef Qualities As Array , ByRef TimeStamps As Array) Handles ConnectedGroup.DataChange专业资料整理WORD格式Dim val(10) As String用于接收 ITEM 值Dim I As Integer用于循环Dim k As Integer用于循环的方式给 TEXTBOX赋值,如果是textbox2-TEXTBOX7,有规律。就可以实现专业资料整理WORD格式For I = 1 To NumItemsk = 1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论