




免费预览已结束,剩余2页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精选文档 最简单的访问OPC服务器 在网上搜了很多关于VB.NET编写客户端访问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.用VB.NET开发客户端访问 访问opc服务器,必须使用OPC基金会提供的OPCdaauto.dll。 学习过程,最好下载说明书,OPC_20_Automation_Interface,网上可以下载。1) 注册OPCdaauto.dll。 这个动态连接库文件可以网上下载。拷贝到C:WINDOWSSYSTEM32目录, 打开运行输入框,输入:regsvr32 C:WINDOWSSYSTEM32OPCDAAUTO.DLL如果是64位windows,则拷贝在C:WINDOWS syswow64。输入: regsvr32 C:WINDOWS syswow64OPCDAAUTO.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 SubB) 连接服务器、添加项和组 代码如下: 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,两个参数,第一个是item名称,必须和KEPSERVER建立的ITEM完全一致,第二个参数是CLIENTHANDLES,句柄。6个ITEM,我给的是1-6,随便数字都可以,不重复即可。这个跟后面获取值有直接关系! Catch ex As Exception MessageBox.Show(添加组和项失败 : + ex.Message, OPCSample, MessageBoxButtons.OK) End Try End SubC)获取 前面提到的订阅的方式, 是OPC服务器主动的方式,把有变化的ITEM,发送给客户端。 需要使用DataChange的事件来获取item值,OPC_20_Automation_Interface58页。 假设两个OPC服务器有2个item发生改变(绿灯,产量),那么会返回2个ITEMS, 返回的, 其中ITEMVALUES是返回的ITEM实际值,ClientHandles是返回的句柄值,句柄值和添加ITEM时定义的句柄对应。前面添加的CHANNEL2.DEVICE2.产量,我定义的ClientHandles是6。如果数值发生变化,那么服务器返回的的值也是6。 实际返回值: NumItems=2ClientHandles(1)= 1,ITEMVALUES(1)=true ItemValues(1)=trueClientHandles(2)= 6,ITEMVALUES(2)= 65 ItemValues(2)=65 因为返回的是数组,那么需要定义一个字符串的数组去接受ITEM值。 添加事件的方法: 源代码如下: Private Sub ConnectedGroup_DataChange(TransactionID As Integer, NumItems As Integer, ByRef ClientHandles As Array, ByRef ItemValues As Array, ByRef Qualities As Array, ByRef TimeStamps As Array) Handles ConnectedGroup.DataChange Dim val(10) As String 用于接收ITEM值 Dim I As Integer 用于循环 Dim k As Integer 用于循环的方式给TEXTBOX赋值,如果是textbox2-TEXTBOX7,有规律。就可以实现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 分布式光伏发电并网系统容量规划方案
- 城区错接混接改造及雨污水管网项目建设工程方案
- 重难点解析人教版八年级上册物理物态变化《升华和凝华》专题训练试题(含解析)
- Wnt-C59-Standard-生命科学试剂-MCE
- 达标测试人教版八年级上册物理物态变化《熔化和凝固》专题练习试卷(含答案详解版)
- 基于分子催化剂-半导体复合体系的芳烃光催化氟烷基化反应研究
- 基于SWMM-MIKE 21耦合模型对河道滞留区的治理优化
- 建筑结构优化设计与实施方案
- 公路路基加固技术方案
- 难点详解人教版八年级上册物理物态变化《温度》专题练习练习题(含答案详解)
- 2025年中国替代蛋白新式发酵行业市场分析及投资价值评估前景预测报告
- 2025-2026学年江苏省徐州市八年级(上)第一次月考数学试卷(含答案)
- 2025至2030中国航空制造业行业发展现状及细分市场及有效策略与实施路径评估报告
- (2025年)社区工作者考试真题库附答案
- 流延膜设备安全操作培训课件
- 专题1:匀变速直线运动的重要结论+课件-2025-2026学年高一上学期物理人教(2019)必修第一册
- 医学基础期末试题及答案
- 2025年放射诊疗培训试题及答案
- 2025年平安网格测试题库及答案
- 重症胰腺炎课件教学
- 3.2营造清朗空间教学设计 2025-2026学年统编版道德与法治八年级上册
评论
0/150
提交评论