VB开发OPC客户端程序的步骤与实现.
手把手教您用VB编一个OPC客户端程序33页PPT

序
21、没有人陪你走一辈子,所以你要 适应孤 独,没 有人会 帮你一 辈子, 所以你 要奋斗 一生。 22、当眼泪流尽的时候,留下的应该 是坚强 。 23、要改变命运,首先改变自己。
24、勇气很有理由被当作人类德性之 首,因 为这种 德性保 证了所 有其余 的德性 。--温 斯顿. 丘吉尔 。 25、梯子的梯阶从来不是用来搁脚的 ,它只 是让人 们的脚 放上一 段时间 ,以便 让别一 只脚能不会再掉进坑里。——黑格尔 32、希望的灯一旦熄灭,生活刹那间变成了一片黑暗。——普列姆昌德 33、希望是人生的乳母。——科策布 34、形成天才的决定因素应该是勤奋。——郭沫若 35、学到很多东西的诀窍,就是一下子不要学很多。——洛克
vb与欧姆龙OPC服务器编程实例(读取PLC100个内存的vb源代码)

Option ExplicitOption Base 1 ' All OPC Automation Arrays start with 1Dim MyOPCServer As OPCServer ' OPCServer ObjectDim MyGroups As OPCGroups ' OPCGroups Collection ObjectDim WithEvents MyGroup As OPCGroup ' OPCGroup ObjectDim MyItems As OPCItems ' OPCItems Collection ObjectDim MyItemServerHandles() As Long ' Server Handles for ItemsDim MyTID As Long ' Transaction ID for asynchronous calls Private Sub Command1_Click()Dim Errors() As LongCall MyItems.Remove(100, MyItemServerHandles, Errors)MyGroups.RemoveAllSet MyGroup = NothingSet MyGroups = NothingMyOPCServer.DisconnectSet MyOPCServer = NothingEnd SubPrivate Sub Command2_Click()PFAsyncWriteCommandEnd SubPrivate Sub Command3_Click()Form_LoadEnd SubPrivate Sub Form_Load()MyTID = 1Set MyOPCServer = New OPCServerCall MyOPCServer.Connect("OMRON.OPC.2")Set MyGroups = MyOPCServer.OPCGroupsMyGroups.DefaultGroupUpdateRate = 500MyGroups.DefaultGroupIsActive = TrueSet MyGroup = MyGroups.Add("Group1")MyGroup.IsSubscribed = TrueMyGroup.IsActive = TrueMyGroup.UpdateRate = 500Dim ErrorFlag As BooleanDim ItemObj As OPCItemDim ItemIDs(100) As StringDim ItemClientHandles(100) As LongDim Errors() As LongErrorFlag = FalseSet MyItems = MyGroup.OPCItemsDim m As IntegerFor m = 0 To 3Text1(m).ForeColor = vbRedText1(m).FontSize = 15Text2(m).ForeColor = vbRedText2(m).FontSize = 15NextFor m = 4 To 99Text1(m).ForeColor = vbBlueText1(m).FontSize = 15NextFor m = 1 To 100ItemIDs(m) = "Device.Group1.Tag" & CStr(m)ItemClientHandles(m) = mNextCall MyItems.AddItems(100, ItemIDs, ItemClientHandles, MyItemServerHandles, Errors)End SubPrivate Sub MyGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)On Error GoTo ErrorHandler '订阅方式回馈信息存储Dim i As LongFor i = 1 To NumItemsIf ClientHandles(i) > 0 And ClientHandles(i) < 101 ThenIf Qualities(i) = 192 Thendata1(ClientHandles(i)) = ItemValues(i)Else' MsgBox GetQualityText(Qualities(i))End IfElseMsgBox "DataChange Item " + Str$(i) + " has invalid Client Handle ", vbCriticalEnd IfNextExit SubErrorHandler:MsgBox Err.Description + Chr(13) + "OnDataChange", vbCritical, "ERROR"End SubPrivate Sub Timer1_Timer()Dim i As IntegerFor i = 1 To 100Text1(i - 1).Text = data1(i)Next iEnd SubPublic Sub PFAsyncWriteCommand() '异步写入命令On Error GoTo ErrorHandlerDim i, j As LongDim Values(4) As VariantDim Errors() As LongDim CID As LongDim AsyncHandles(4) As LongFor j = 1 To 4AsyncHandles(j) = MyItemServerHandles(j)Values(j) = Text2(j - 1).TextNextMyTID = MyTID + 1Call MyGroup.AsyncWrite(4, AsyncHandles, Values, Errors, MyTID, CID)For i = 1 To 4If Not Errors(i) = 0 Then MsgBox "Item " + Str$(i) + " FAILED. Error Code = " + Str$(Errors(i)), vbCritical NextExit SubErrorHandler:MsgBox Err.Description + Chr(13) + "Writing Items Asyncronous", vbCritical, "ERROR"End SubPrivate Sub MyGroup_AsyncWriteComplete(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, Errors() As Long)On Error GoTo ErrorHandler '异步写命令回馈信息Dim i As LongFor i = 1 To NumItemsIf Not Errors(i) = 0 Then MsgBox "AsyncWriteComplete Item Clienthandle = " + Str$(ClientHandles(i)) + " FAILED. Error Code = " + Str$(Errors(i)), vbCriticalNextExit SubErrorHandler:MsgBox Err.Description + Chr(13) + "Async Write Complete", vbCritical, "ERROR"End Sub。
OPC实验指导书

实验名称OPC客户端的编程一、实验目的:通过实际操作进一步了解OPC的各种概念,掌握OPC客户端的编写方法。
并对微软的DCOM 有一定的了解,要求通过合适的DCOM配置,使客户端能够读取网络上服务器中的数据。
二、实验内容:1)利用VB语言编写出一个简单的OPC客户端程序,要求这个客户端能够读取服务器中的数据,并显示出来。
2)配置DCOM,使客户端能够能过DCOM读取另一台服务器上的数据。
三、实验步骤:(1)建立一个Visual Basic工程1)启动Visual Basic,新建一个Visual Basic工程。
选择[Standard EXE]作为新建工程的类型。
图3-1 Visual Basic 工程的建立2)设置OPC包装DLL因为在新建的Visual Basic工程OPC包装DLL还没有被注册,必须用下述方法对OPC包装DLL 进行注册。
设置方法:1.从Visual Basic菜单里选择[Project]-[References]。
2.在[Available References]表示中,选择对应OPC包装DLL的文件名。
这里我们选择[OPCAutomation 2.0]。
图3-2 引用的设置(2)建立一个OPC对象在Visual Basic里,是以对象的单位对OPC服务器进行访问。
OPC自动化接口是由以下四种对象所定义。
OPC服务器OPC组(OPC组集合)OPC标签(OPC标签集合)OPC浏览器这里只说明OPC服务器,OPC组以及OPC标签对象的使用方法。
具体的来说,先连接一个特定的OPC服务器,然后建立OPC组,最后添加OPC标签。
1)变量声明参考图3-3所示的示范代码,先对OPC对象变量进行声明。
变量的数据类型应该指定为对象型。
这些对象变量最好在窗体代码的(General)部分声明。
因为在(General)部分声明的变量,可以在窗体的任何方法的代码内引用。
图3-3 OPC对象变量的声明有关定义OPC对象的声明及其说明列于表3-1表3-1 OPC对象变量的声明2)连接OPC服务器和建立OPC组下面说明如何连接OPC服务器和建立OPC组。
VB6.0编程客户端访问组态王OPC服务器的实现方法

武 汉船舶 职业 技术 学 院学报
21 0 1年第 3期
VB . 6 0编 程 客 户 端 访 问 组 态 王 OP 服 务 器 的 实 现 方 法 C
邹 治 军
( 南京 化 工 职 业 技 术 学 院信 息 技 术 系 , 苏 南 京 2 0 4 ) 江 1 0 8
摘 要 本 文 介 绍 了 O C规 范 , 过 实 例 介 绍 了基 于 VB . P 通 6 0编 程 客 户 端 程 序 访 问组 态 王 OP C服 务 器 的 实 现 方 法 , 有 具
1 OP 规 范 C
工业 控 制系 统包 含 大 量 的 现 场设 备 , 些 设 这 备 通常包 括来 自不 同 厂 商 的各 种 类 型 的仪 器 、 仪 表、L P C和 其他智 能设 备 。不 同 的厂 商 提供 的协 议各 异 , 因此要 与 这些设 备交 换数据 , 要编 写不 需
程 序 , 过组 态王 的 O C接 口来 访 问组态 王数 据 通 P
库 中的变 量和 变量 的域 。
Vi a B sc 一 种 可 视 化 的 、 向对 象 和 采 s l ai 是 u 面
用事 件驱 动方 式 的结 构 化 高 级 程 序设 计 语 言 , 常 用 于开 发 W id ws环 境 下 的各 类 应 用 程 序 。 no ]
Kig i 组 态 王 ) 北 京 亚控 公 司 特 别 为 n ve w( 是
中小 型项 目推 出的用 于监 视与控 制 自动化 设备 和
生 产过 程 的组 态 软 件 。组 态 王 因其 易 学 易 用 、 功 能齐全 、 物美 价廉 的特 点 , 目前 已广泛 应用 于 国 内
中 小 型 生 产 过 程 控 制 系 统 中 。 Kig i . 3的 n ve w6 5
基于VB的OPC服务器的设计与实现

基于VB的OPC服务器的设计与实现任巍曦,梁伟平,李立(华北电力大学控制与计算机工程学院,河北保定071003)摘要 :由于源码级的OPC服务器开发过程非常复杂,为了达到缩短OPC服务器开发周期,采用快速开发工具GKOPCServer.dll,对OPC服务器进行了设计与实现。
通过测试软件的测试,得出了OPC服务器的正确性。
分析了采用开发工具包开发OPC服务器的优点以及软件的结构和主要模块的功能。
结果表明:快速开发工具包提高了OPC服务器的开发效率,给开发人员提供了极大的方便。
关键词:OPC;开发工具包; 数据通信;接口中图分类号: TP319 文献标识码:AThe Design and realization of OPC server Based on VBRen Weixi, Liang Weiping, Li Li(School of Control and Computer Engineering,North China Electric Power University,Baoding 071003,China)Abstract:As the exploitation of source OPC server is too complex, to reach the purpose of shortening the period of developing OPC server, using OPC server development tool-GKOPCServer.dll, design and realize of OPC server. And the functional correctness of OPC server was tested by test software. The advantages of OPC server developed by development toolkit and the software structure and the main function of modules were analyzed. The results illustrate that the development efficiency of OPC server is improved as using the development toolkit, and it gives convenience to developers.Key words: OPC; development toolkit; data communication; interface0引言目前,工控领域的OPC(OLE for Process Control,用于过程控制的对象链接和嵌入)服务器的开发一般可分为快速开发方式和直接开发方式。
[信息与通信]手把手教您用VB编一个OPC客户端程序
![[信息与通信]手把手教您用VB编一个OPC客户端程序](https://img.taocdn.com/s3/m/7a043a014b35eefdc8d333fc.png)
OPC
Agenda
OPC - Review of the Basics OPC - Terminology OPC & VB 101 - Automation Wrapper & Object Model Building Your VB Client - Read data - 7 easy steps with code from start to finish Housekeeping Handles Handles Everywhere - how the server and client correlate the data each is managing in your program Writing Data Future ideas to consider New developments since original presentation in 10/99 Resources for future learning
Copyright Software Toolbox, 1999,2000,2001 All Rights Reserved Worldwide. Software Toolbox is a registered trademark of Software Toolbox, Inc.
VB
OPC Your VB Program with the Automation Wrapper object included in it
• OPC Server - a piece of software supporting the OPC specification - an OPC Data Access Server is a driver that handles connectivity to PLCs or other automation hardware • OPC Item - A single tag or data point managed by the OPC server - i.e. one data point in a PLC • OPC Group - a user defined grouping of OPC items. Created by the OPC client as a way of organizing data items around logical process areas or equipment. • Collection - a grouping of objects of the same data type for example, each OPC server has an OPC items collection containing one software object for each OPC item.
6VB6.0开发WinCC的OPC客户机实例

VB6.0开发WinCC的OPC客户机实例[ 来源:机电论文| 类别:技术| 时间:2009-4-8 9:42:34 ] [字体:大中小]关键词:OPC VB6.0 WinCC上位机WinCC是西门子公司在自动化领域采用最先进的技术与微软公司在共同开发的居于世界领先地位的工控软件。
WinCC即WINDOWS CONTROL CENTER (视窗控制中心)。
WinCC是一个功能强大的全面开放的监控系统,既可以用来完成小规模的简单的过程监控应用,也可以用来完成复杂的应用。
在任何情况下WinCC都可以生成漂亮而便捷的人机对话接口,使操作员能够清晰地管理和优化生产过程。
它集成的OPC(OLE for process control)服务器使得过程数据可由其它应用程序(OPC客户机)访问。
WinCC在安装时提供了OPC的客户端控件: Siemens OPC DAAutomation 2.0( SOPCDAAuto.dll), 在WINCC的帮助中,有Siemens OPC DAAutomation 2.0使用的简略帮助,但说得不很详细,我在使用VB6.0开发WinCC的OPC客户机中碰到不少问题,现一并写出来,与大家共享。
希望起到抛砖引玉,举一反三的作用。
一、开发实例背景:我厂包装机BE电气改造后,由原来了单片机、直流调试板、温度控制板等控制改为带有通讯端口PLC、变频器、温控仪等控制,上位机监控软件为WinCC。
在控制系统中,变频器、温控仪的控制信号通过串口、OPC客户机接入上位机WinCC,报警信号接入PLC。
其硬件组态结构如图一OPC开发要求:①通过WinCC建立内部变量Tag(1),Tag(2),Tag(3),Tag(4)……;在视图窗口建立相应了I/O输入输出域。
通过更改WinCC中I/O域的值,来设定或更改变频器、温控仪等的参数。
②通过VB开发了串口驱动程序,读取变频器、温控仪等的参数,通过OPC控件把值传递给WinCC中的I/O域。
使用VB语言编程OPC通信技术

使用VB语言编程OPC通信技术传统的PLC上位通信程序由于各品牌PLC有着不同的通信协议与接口方式,设计前需要花费一定时间熟悉各品牌的通信协议与特性,设计难度很大。
并且设计出的程序在更换PLC品牌后根本无法兼容,造成程序的灵活性较差。
OPC 技术由于其兼容广泛、开发简单的特点,让上位程序设计起来简单灵活。
本文通过讲解如何使用VB语言编写OPC上位机程序,使广大电气设计人员了解到该技术实现PLC上位通信是非常简单的。
标签:PLC;上位机;OPC技术OPC技术是(OLE for process control)的简称,是基于微软Windows系统的OLE/COM技术开发的一项应用技术。
COM技术提供了一个标准化的平台,各个设备厂商基于这个平台开发符合标准化COM接口的PLC产品。
OPC技术基于这一平台,整合各品牌PLC产品COM组件接口,输出一个标准化数据接口。
这样无论应用程序开发人员使用何种语言,只需要调用这个数据接口,即可访问到所连接的PLC数据,而不用考虑PLC的品牌,以及底层协议。
标准化的OPC系统包括4个部分:(1)OPC服务器:为上位机与PLC提供过程数据。
(2)OPC代理占位DLL:为VB或者VBA开发的OPC应用程序提供OPC 服务器接口数据格式交换服务。
(3)OPC自动化包装DLL:提供OPC服务器的自动化接口变换服务。
VB 或者VBA開发的上位机应用程序需要通过该接口访问OPC服务器。
(4)OPC应用程序:设计人员使用VB等语言设计的提供给用户的人机界面程序,含有用户要求的所有功能。
上述中OPC服务器、OPC占位代理DLL、OPC自动化包装DLL这三部分是由第三方开发的DLL文件。
本文以KEPWARE公司的OPC软件产品为例,介绍如何编程VB与OPC数据通讯。
在KEPWARE中所连接的设备以通道(CHANNEL)的形式描述,每连接一个设备就使用一个CHANNEL,同时每一个CHANNEL对应OPC服务器一个OPC组(下面会介绍到)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB开发OPC客户端程序的步骤与实现(1)建立新工程或项目,在“工程”菜单下选择“引用”,如图5-3所示。
只有引用OPCDAAuoto.DLL后,在程序中才能创建服务器对象,然后进行一系列的操作。
(2)在弹出的引用窗口里单击“浏览(B)…”按钮,弹出添加引用窗口,选择OPCDAAuoto.DLL文件。
(3)在引用窗口里的OPC Automation2.0前面打钩,按“确定”按钮。
(4)定义全局变量,这样可以在窗体的任何方法的代码内应用。
变量类型应该指定为对象型。
这些对象最好在窗体的通用部分声明加上“Option Explicit”语句,表示模块里的所有变量都需要显式声明。
由于OPC自动化接口的数组的索引要求必须从1开始,而系统默认是从0开始,为了避免错误最好在代码的最初加上“Option Base1”语句。
为了使对象可以处理事件,必须将objTestGrp和objServer 的声明中加上“WithEvents”语句,表示声明的对象可以响应事件。
Option Explicit
Option Base1
Dim WithEvents objServer As OPCServer
Dim objGroups As OPCGroups
Dim WithEvents objTestGrp As OPCGroup
Dim objItems As OPCItems
(5)连接OPC服务器和建立OPC?br>考虑到代码的可反复使用性,
采用子程序进行编程。
Sub Connect(strProgID As String,Optional strNode As String) If objServer Is Nothing Then
'建立一个OPC服务器对象
Set objServer=New OPCServer
End If
服务器状态ServerState属性一共有OPCRunning、OPCFailed、OPCNoconfig、OPCSuspended、OPCTest和OPCDisconnected六个值,分别表示正在运行、失败、没有配置、暂停、测试和没有连接六种OPC服务器当前的状态。
如果OPC服务器没有连接,我们才执行objServer.Connect strProgID,strNode语句。
strProgID就是ProgID,strNode就是用于远程通信的IP地址。
If objServer.ServerState=OPCDisconnected Then
'连接OPC服务器
objServer.Connect strProgID,strNode End If
在Visual Basic中,通过执行一个Set操作实现调用其它接口的方法。
If objGroups Is Nothing Then
'建立一个OPC组集合
Set objGroups=objServer.OPCGroups
End If
If objTestGrp Is Nothing Then
'添加一个OPC组
Set objTestGrp=objGroups.Add("Group") End If
End Sub
(6)添加OPC标签
对服务器进行访问前,必须先在OPC组里添加要访问的OPC标签。
OPC 客户端程序要按照用户指定的标签或者从组态文件里读取需要添加的OPC标签。
Sub AddItem()
Dim strItemIDs(17)As String
Dim lClientHandles(17)As Long
Dim lErrors()As Long
Dim I As Integer
If objTestGrp Is Nothing Then
Exit Sub
End If
If Not objItems Is Nothing Then
If objItems.Count>0Then
Exit Sub
End If
End If
'设置组活动状态。
只有处于活动状态的OPC才进行定期的数据更新。
非活动状态的OPC组,除了在接到显然的数据读写要求外,并不收集任何数据。
If mnuSubscribtion.Checked=True Then
objTestGrp.IsActive=True
Else
objTestGrp.IsActive=False
End If
'启动组异步通知。
进行订阅的OPC组可以自动收到从服务器送来的数据变化通知。
objTestGrp.IsSubscribed=True
'建立OPC项集合
Set objItems=objTestGrp.OPCItems
'生成从TAG1到TAG17的项标识符
For I=1To17
strItemIDs(I)="Server.Group.TAG"&I
lClientHandles(I)=I
Next
'添加OPC项
Call objItems.AddItems(17,strItemIDs, lClientHandles,lServerHandles,lErrors)
End Sub
(7)异步读取代码的实现
在定时器事件内进行执行AsyncRead子程序的读取代码,而在读取完成事件处理返回的数据访问结果。
Sub AsyncRead()
Dim lErrors()As Long
If objTestGrp Is Nothing Then
Exit Sub
End If
If objTestGrp.OPCItems.Count>0Then
'异步读取
lTransID_Rd=lTransID_Rd+1
objTestGrp.AsyncRead17,lServerHandles,lErrors,lTransID_Rd, lCancelID_Rd
End If
End Sub
Private Sub objTestGrp_AsyncReadComplete(_
ByVal TransactionID As Long,ByVal NumItems As Long, _
ClientHandles()As Long,ItemValues()As Variant,_
Qualities()As Long,TimeStamps()As Date,Errors() As Long)
……
Sub
(8)在按钮中执行AsyncWrite子程序,完成异步写的操作。
Sub AsyncWrite(nIndex As Integer,ByRef vtItemValues()As Variant,_
ByRef lErrors()As Long)
Dim lHandle(1)As Long
If objTestGrp Is Nothing Then
Exit Sub
End If
If objTestGrp.OPCItems.Count>0Then
lHandle(1)=lServerHandles(nIndex)
'异步写入
lTransID_Wt=lTransID_Wt+1
objTestGrp.AsyncWrite1,lHandle(), vtItemValues,_
lErrors,lTransID_Wt, lCancelID_Wt
End If
End Sub
(9)断开OPC服务器
连接着OPC服务器的OPC客户应用程序,在退出前必须断开和OPC服务器的连接。
因为OPC服务器并不知道OPC客户应用程序的退出。
如
果不先断开连接,那么OPC服务器使用的计算机资源就不会被释放。
如果这样的问题反复发生,久而久之,连续运转的自动控制系统可能会计算机资源渐渐枯竭从而发生严重问题,可以显式地把它设置为“Nothing”。
Sub Disconnect()
Dim lErrors()As Long
If Not objItems Is Nothing Then
If objItems.Count>0Then
objItems.Remove17,lServerHandles, lErrors'清除OPC项
End If
Set objItems=Nothing
End If
If Not objTestGrp Is Nothing Then
objGroups.Remove"Group"'清除OPC组
Set objTestGrp=Nothing
End If
If Not objGroups Is Nothing Then
Set objGroups=Nothing
End If
If Not objServer Is Nothing Then
If objServer.ServerState<>
OPCDisconnected Then
objServer.Disconnect'断开OPC服务器.
End If
Set objServer=Nothing
End If
End Sub。