VB6.0开发WinCC的OPC客户机实例
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。
如何用VB编写OPC客户端程序
Private Sub cmbBrowseFilter_Click() Select Case cmbBrowseFilter.Text Case 'OPC_FLAT' &
OPC 客户程序(VB 篇——同步) 代码如下: Option Explicit Dim WithEvents ServerObj As OPCServer Dim WithEvents GroupObj As OPCGroup Dim ItemObj As OPCItem Private Sub Command_Start_Click() Dim OutText As String On Error GoTo ErrorHandler Command_Start.Enabled = False Command_Read.Enabled = True Command_Write.Enabled = True Command_Exit.Enabled = True OutText = '连接 OPC 服务器' Set ServerObj = New OPCServer ServerObj.Connect ('XXXSERVER')'XXXSERVER 为某 OPC 服务器名称 OutText = '添加组' Set GroupObj = ServerObj.OPCGroups.Add('Group') OutText = 'Adding an Item to the group' Set ItemObj = GroupObj.OPCItems.AddItem('XXXITEM', 1) 'XXXITEM 为添加的 ITEM 名称 Exit Sub ErrorHandler: '如果出现异常,则报出错误。
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开发WinCC的OPC客户机
!项目背景通过对我企业改造后!"卷烟包装机组进行工业自动控制的研究,探讨了在#$%&’()环境下,用*!+,-开发的./0客户机与具有串行通讯功能的设备之间通信的实现问题。
该./0通信系统如图1。
图1#$%00中硬件组态./0结构从图1可以看出,变频器、温控仪等通过串行驱动程序与上位机#$%00进行数据交换。
通过#$%00对变频器、温控仪等的参数进行设定、读写。
该功能的实现,是通过#$%00的./0客户机来完成了。
#$%00在安装时提供了./0的客户端控件:2$343%) ./056678’498$’%:,-;2./056678’,&<<=,我们通过*!这个平台,引用这个控件成功地开发了#$%00的./0客户机。
限于篇幅,本文以调试软件来阐述了#$%00的./0客户机的开发方法。
"#$%程序设计(1)打开*!+,建立./0窗体如图:,文本框组>3?8@,83?8为写入#$%00内部变量名称;文本框组>3?8A,83?8为显示相应了#$%00内部变量值;文本框组>3?8B,83?8为写入期望了#$%00内部变量值。
单选框为./0连接成功标志。
C个命令按钮分别为“连接”、“断开”、“退出”。
图:./0窗体(:)./0的连接先在工具栏中“工程D引用”将近2$343%)./05667E 8’498$’%:,-加入,然后开始定义全局变量。
在本程序中,我使用了一个./0组进行./0访问,所以定义了全局变量。
我们要首先定义./0服务类型与计算机结点名。
定义./0组与./0标签组。
并定义./0的标签数组与值数。
注意:值数组一定要设为*9F$9%8。
.G8$’%"?G<$H$8.G8$’%!9)31I这数组定义由1开始0’%)823FJ3FK943L M./023FJ3F,#$%00M I./0的类型5$4K’&3K9436)28F$%N I节点名,即计算机名5$4#$8O"J3%8)PQ./023FJ3F6)./023FJ3F I./0服务5$4#$8O"J3%8)PQ./0RF’7G6)./0RF’7G I./0组5$4PQ./0RF’7G0’<<6)./0RF’7G)5$4PQ./0S8340’<<6)./0S834)I./0标签组5$4PQ./0S834)6)./0S834)5$4PQ./0S8346)./0S8345$40<$3%8T9%&<3);1=6)U’%N I句柄5$423FJ3FT9%&<3);=6)U’%N5$4"FF’F);=6)U’%N5$4S834S5);@=6)28F$%N I记录./0的标签5$4S834S5)*9<73;@=6)*9F$9%8I存放./0的值5$4RF’7GK9436)*9F$9%8在定义所有变量后,我们就要进行./0连接了,要进行./0连接之前,先要配置要访问的./0标签名(即#$%00内用*!开发#$%00的./0客户机林启宽(厦门卷烟厂卷包车间,福建厦门C+1--@)53J3<’G43%8’V./00$3%8($8O#$%00!9)3&’%*!摘要主要介绍了如何用*!+,-开发#$%00的./0客户机程序,就具体实例来阐述./0的设计方法、步骤及其应用。
VB6.0编程客户端访问组态王OPC服务器的实现方法
VB6.0编程客户端访问组态王OPC服务器的实现方法邹治军
【期刊名称】《武汉船舶职业技术学院学报》
【年(卷),期】2011(010)003
【摘要】本文介绍了OPC规范,通过实例介绍了基于VB6.0编程客户端程序访问组态王OPC服务器的实现方法,具有编程简单,容易实现的特点,有利于拓展其功能.【总页数】3页(P37-39)
【作者】邹治军
【作者单位】南京化工职业技术学院信息技术系,江苏南京210048
【正文语种】中文
【中图分类】TP311.5
【相关文献】
1.使用VB6.0和VC++6.0混合编程实现PC机串并行通信的方法 [J], 戴永彬;王艳秋;关维国
2.VB6.0 中利用编程方法实现报表打印 [J], 熊凯;易建湘
3.短消息的编码方法及VB6.0的编程实现 [J], 何香玲;张跃
4.用DELPHI编程实现自动化服务器对客户端的访问 [J], 周洪建
5.VC
6.0编程客户端访问组态王OPC服务器的方法 [J], 魏森声;田慕琴
因版权原因,仅展示原文概要,查看原文内容请购买。
用VB编写OPC客户端
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
The Automation Wrapper connects to the OPC server and creates the groups and items in the server and gives you references to them in your VB program in an Object model that mirrors that of the server
手把手教您用VB编一个OPC客户端程序 共32页
Copyright Software Toolbox, 1999,2000,2001 All Rights Reserved Worldwide. Software Toolbox is a registered trademark of Software Toolbox, Inc.
VB OPC
OPC and VB 101
Copyright Software Toolbox, 1999,2000,2001 All Rights Reserved Worldwide. Software Toolbox is a registered trademark of Software Toolbox, Inc.
VB OPC
OPC - Review of the Basics
• OPC is based on the Microsoft Component Object Model (COM)
• OPC stands for OLE for Process Control • OPC is managed by the independent OPC
Foundation () • There are over 200 member companies
• Visual Basic supports COM
• COM implementations from Visual Basic use what is called an “Automation” interface
• The OPC Foundation supplies the source code to an “Automation Wrapper” DLL most OPC vendors provide a compiled version
OPC客户程序_VB同步
End Sub
Private Function GetQualityText(Quality) As String
Select Case Quality
Case 0: GetQualityText = "BAD"
Case 64: GetQualityText = "UNCERTAIN"
OutText = "添加组"
Set GroupObj = ServerObj.OPCGroups.Add("Group")
OutText = "Adding an Item to the group"
Set ItemObj = GroupObj.OPCItems.AddItem("XXXITEM", 1)'XXXITEM为添加的ITEM名称
Command_Write.Enabled = True
Command_Exit.Enabled = True
OutText = "连接OPC服务器"
Set ServerObj = New OPCServer
ServerObj.Connect ("XXXSERVER")'XXXSERVER为某OPC服务器名称
End Sub
Private Sub Command_Write_Click()'同步写
Dim OutText As String
Dim Serverhandles(1) As Long
Dim MyValues(1) As Variant
Dim MyErrors() As Long
winccopc通讯实例
winccopc通讯实例WinCC OPC通讯实例:实时数据传输和监控WinCC(Windows Control Center)是西门子公司开发的一款用于工业自动化监控和数据处理的软件平台。
而OPC(OLE for Process Control)是一种用于通信的标准,它允许不同厂商的设备和系统之间进行无缝的数据交换。
在本文中,将详细介绍如何使用WinCC和OPC实现实时数据传输和监控。
第一步:安装和配置WinCC首先,在计算机上安装WinCC软件。
确保所使用的版本与OPC服务器兼容。
安装完成后,打开WinCC软件,创建一个新的项目。
在项目设置中,配置好与OPC服务器通讯的相关参数,包括OPC服务器的IP地址和端口号。
第二步:创建OPC通讯标签在WinCC软件中,可以通过标签的方式对要监控的数据进行定义和组织。
打开WinCC软件的标签编辑器,并创建一个新的标签组。
在标签组中,添加需要监控的变量,并设置其类型、描述、OPC服务器的路径和通讯地址等参数。
第三步:配置OPC服务器为了使WinCC与OPC服务器进行通讯,需要在OPC服务器上进行相应的配置。
打开OPC服务器的配置界面,创建一个新的数据组,并将之前在WinCC中定义的标签与该数据组关联。
在数据组中,设置标签的更新频率和通讯方式等参数。
确保OPC服务器的地址与WinCC中配置的地址相一致。
第四步:编写WinCC监控界面在WinCC软件中,可以创建自定义的监控界面来显示和处理所监控的数据。
打开WinCC的界面编辑器,创建一个新的界面。
在界面中添加相应的图形元素,如文本框、图表和按钮等,用于显示和操作数据。
使用WinCC提供的功能,可以将之前设置的标签与界面中的图形元素进行关联。
在界面编辑器中选中一个图形元素,设置其属性为与标签关联,如当标签值发生变化时更新该图形元素。
第五步:运行监控系统在所有配置和设置完成后,可以通过点击WinCC软件中的“运行”按钮来启动监控系统。
VB-OPC-WINCC编程
OPC是一个工业标准,它是由一些世界上著名的自动化系统和硬件、软件公司和Microsoft(微软)紧密合作而建立的。
〔O代表OLE(对象链接和嵌入),P (process过程),C (control控制)。
OLE已从面向对象重新定义为基于对象并更名为Active X〕。
WinCC是西门子公司在自动化领域采用最先进的技术与微软公司在共同开发的居于世界领先地位的工控软件。
WinCC即WINDOWS CONTROL CENTER(视窗控制中心)。
WinCC是一个功能强大的全面开放的监控系统,既可以用来完成小规模的简单的过程监控应用,也可以用来完成复杂的应用。
在任何情况下WinCC都可以生成漂亮而便捷的人机对话接口,使操作员能够清晰地管理和优化生产过程。
它集成的OPC(OLE for process control)服务器使得过程数据可由其它应用程序(OPC客户机)访问。
WinCC在安装时提供了OPC的客户端控件: Siemens OPC DAAutomation 2.0( SOPCDAAuto.dll),这个控件就是我们在VB中要用到的控件,我们也可以使用通用的OPC客户端控件: OPC Automation 2.0.在WINCC的帮助中,有Siemens OPC DAAutomation 2.0使用的简略帮助,但说得不很详细,我在使用中碰到不少问题,现一并写出来,与大家共享。
一、OPC的连接先在“引用”将近Siemens OPC DAAutomation 2.0加入,然后开始定义全局变量。
在本程序中,我使用了两个OPC组进行OPC访问,所以定义了全局变量。
我们要首先定义OPC服务类型与计算机结点名。
定义OPC组与OPC标签组。
并定义OPC的标签数组与值数,注意,值数组一定要设为Variant。
'OPC处理:只对WINCCConst ServerName = "OPCServer.WinCC" ‘OPC的类型Const NodeName = "GUK" ‘结点名,即计算机名‘Dim NodeName As StringDim WithEvents MyOPCServer As OPCServer ‘OPC服务Dim MyOPCGroupColl As OPCGroups ‘Dim WithEvents MyOPCGroupOut As OPCGroup ‘OPC组,本程序用两个组进行OPC连接Dim WithEvents MyOPCGroupIn As OPCGroupDim MyOPCItemCollIn As OPCItems ‘OPC标签组Dim MyOPCItemCollOut As OPCItemsDim ServerHandlesIn() As Long ‘句柄Dim ServerHandlesOut() As LongDim ErrorsIn() As Long ‘错误句柄Dim ErrorsOut() As LongDim WatchDataReadItem(100) As String '记录OPC的标签Dim WatchDataReadValue(100) As Variant '存放OPC的值Dim WatchDataWriteItem(100) As String '记录OPC的标签Dim WatchDataWriteValue(100) As Variant '存放OPC的值在定义所有变量后,我们就要进行OPC连接了,要进行OPC连接之前,先要配置要访问的OPC标签名,我们WatchDataReadItem、WatchDataWriteItem中加入相应的标签名,注意:这两个数组必须由1开始,不能由0开始。
VB通过OPC访问WinCC变量
'读取变量值放入text控件中
Sub MyOPCGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)
MyOPCServer.OPCGroups.DefaultGroupUpdateRate = 0
Set MyOPCGroup = MyOPCServer.OPCGroups.Add(Groupname)
MyOPCGroup.IsSubscribed = True
End Sub
如上的代码是在VB中编写的,在wincc中定义了tag1,tag2两个要访问的变量
ItemIDs(1) = "tag1tag2"
SNode = TXT_Node.Text
Call Connect("OPCServer.WinCC", SNode)
Call Add_Group("Internal tags")
应网友的要求本人做了一个VB通过OPC访问WinCC变量的例子,如下是源代码,
在windows2000+(wincc5.1或者wincc6.0sp1)上运行通过!!!
我有源程序,但我不能上传,斑竹可否帮我上传!
Option Explicit
Option Base 1
Dim WithEvents MyOPCServer As OPCServer
Erase ClientHandles()
用VB开发OPC客户端程序的步骤与实现
用VB开发OPC客户端程序的步骤与实现(1)建立新工程或项目,在“工程”菜单下选择“引用”,如图5-3所示。
只有引用OPCDAAuoto.DLL后,在程序中才能创建服务器对象,然后进行一系列的操作。
(2)在弹出的引用窗口里单击“浏览(B)…”按钮,弹出添加引用窗口,选择OPCDAAuoto.DLL 文件。
(3)在引用窗口里的OPC Automation 2.0前面打钩,按“确定”按钮。
(4)定义全局变量,这样可以在窗体的任何方法的代码内应用。
变量类型应该指定为对象型。
这些对象最好在窗体的通用部分声明加上“Option Explicit”语句,表示模块里的所有变量都需要显式声明。
由于OPC自动化接口的数组的索引要求必须从1开始,而系统默认是从0开始,为了避免错误最好在代码的最初加上“Option Base 1”语句。
为了使对象可以处理事件,必须将objTestGrp和objServer的声明中加上“WithEvents”语句,表示声明的对象可以响应事件。
Option ExplicitOption Base 1Dim WithEvents objServer As OPCServerDim objGroups As OPCGroupsDim WithEvents objTestGrp As OPCGroupDim objItems As OPCItems(5)连接OPC服务器和建立OPC组考虑到代码的可反复使用性,采用子程序进行编程。
Sub Connect(strProgID As String, Optional strNode As String)If objServer Is Nothing Then' 建立一个OPC服务器对象Set objServer = New OPCServerEnd If服务器状态ServerState属性一共有OPCRunning、OPCFailed、OPCNoconfig、OPCSuspended、OPCTest和OPCDisconnected六个值,分别表示正在运行、失败、没有配置、暂停、测试和没有连接六种OPC服务器当前的状态。
VB6.0读写WINCC变量
VB6.0读写WINCC变量VB6.0 读写WINCC变量2010-02-04 17:07直接调用WINCC的组件进行标签的读写操作.这样可以省去很多事,不用使用OPC了,自己想把什么写到组态里,从组态里读出来数据都非常的方便读写函数如下Private Sub Command1_Click()Dim prtrunDim tag0Dim WinCC As Object '定义wincc为对象Set WinCC = CreateObject("WinCC-Runtime-Project")prtrun = WinCC.SetValue("NewTag_1", Text1(0).Text)prtrun = WinCC.SetValue("NewTag_2", Text1(1).Text)prtrun = WinCC.SetValue("NewTag_3", Text1(2).Text)prtrun = WinCC.SetValue("NewTag_4", Text1(3).Text)prtrun = WinCC.SetValue("NewTag_5", Text1(4).Text)prtrun = WinCC.SetValue("NewTag_6", Text1(5).Text)prtrun = WinCC.SetValue("NewTag_7", Text1(6).Text)prtrun = WinCC.SetValue("NewTag_8", Text1(7).Text)'先写入一个值,再读回它,判断有没有写进去,由此来判断WINCC 是不是在运行之中prtrun = WinCC.GetValue("NewTag_1")If prtrun = 111 ThenMsgBox ("与WinCC通讯成功!")Set WinCC = NothingElseMsgBox ("与WinCC通讯失败!请将WinCC设置为运行状态!")Set WinCC = Nothing End IfEnd Sub。
用VB编写OPC客户端程序的方法
&/5 6/.78941.3 ?;0@-#<= ’3 #$%?;0@- >#$% ?;0@- 对象 >#$% A.45 集合 > 服务器端 #$% A.45 的句柄 > 客户端 #$% A.45 的句柄
接下来, 生成各个对象:
手把手教您用VB编一个OPC客户端程序33页PPT
序
21、没有人陪你走一辈子,所以你要 适应孤 独,没 有人会 帮你一 辈子, 所以你 要奋斗 一生。 22、当眼泪流尽的时候,留下的应该 是坚强 。 23、要改变命运,首先改变自己。
24、勇气很有理由被当作人类德性之 首,因 为这种 德性保 证了所 有其余 的德性 。--温 斯顿. 丘吉尔 。 25、梯子的梯阶从来不是用来搁脚的 ,它只 是让人 们的脚 放上一 段时间 ,以便 让别一 只脚能不会再掉进坑里。——黑格尔 32、希望的灯一旦熄灭,生活刹那间变成了一片黑暗。——普列姆昌德 33、希望是人生的乳母。——科策布 34、形成天才的决定因素应该是勤奋。——郭沫若 35、学到很多东西的诀窍,就是一下子不要学很多。——洛克
用VB编写OPC客户端程序实现数据共享的方法
用VB编写OPC客户端程序实现数据共享的方法
李晓诗;赵志峰
【期刊名称】《辽宁科技学院学报》
【年(卷),期】2012(14)3
【摘要】主要介绍了北营焦化厂厂级管理网从现场工业控制网上实时获取工艺数据的一种方法.并阐述了北营焦化厂备煤系统的OPC客户端程序的开发及应用.【总页数】3页(P28-30)
【作者】李晓诗;赵志峰
【作者单位】本溪北营钢铁(集团)股份有限公司,辽宁本溪117017;本溪北营钢铁(集团)股份有限公司,辽宁本溪117017
【正文语种】中文
【中图分类】TP311
【相关文献】
1.VB6.0编程客户端访问组态王OPC服务器的实现方法 [J], 邹治军
2.用VB编写OPC客户端访问WinCC的实现 [J], 秦胜利;王锬
3.利用Delphi编写Socket程序实现客户端查询 [J], 乐丁惕
4.用VB编写OPC客户端程序的方法 [J], 刘莉
5.基于以太网的OPC客户端应用程序实现 [J], 段宝利
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB6.0开发WinCC的OPC客户机实例关键词: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域。
二、VB6开发WinCC的OPC客户机具体步骤:1、打开VB6,建立如图二窗体:其中,文本框组Text4.text为写入WinCC内部变量名称;文本框组Text5.text为显示相应了WinCC内部变量值;文本框组Text8.text为写入期望了WinCC内部变量值。
单选框为OPC连接成功标志。
3个命令按钮分别为“连接”,“断开”,“退出”。
2、OPC的连接先在工具栏中“工程\引用”将近Siemens OPC DAAutomation 2.0加入,然后开始定义全局变量。
在本程序中,我使用了一个OPC组进行OPC访问,所以定义了全局变量。
我们要首先定义OPC服务类型与计算机结点名。
定义OPC组与OPC标签组。
并定义OPC的标签数组与值数,注意,值数组一定要设为Variant。
Option ExplicitOption Base 1 ‘这数组必须由1开始,不能由0开始Const ServerName = "OPCServer.WinCC" OPC的类型Dim NodeName As String 结点名,即计算机名Dim WithEvents MyOPCServer As OPCServer OPC服务Dim WithEvents MyOPCGroup As OPCGroup OPC组Dim MyOPCGroupColl As OPCGroupsDim MyOPCItemColl As OPCItems OPC标签组Dim MyOPCItems As OPCItemsDim MyOPCItem As OPCItemDim ClientHandles(1) As Long 句柄Dim ServerHandles() As LongDim Errors() As LongDim ItemIDs(4) As String 记录OPC的标签Dim ItemIDsValue(4) As V ariant 存放OPC的值Dim GroupName As Variant在定义所有变量后,我们就要进行OPC连接了,要进行OPC连接之前,先要配置要访问的OPC标签名(即WinCC内部变量名),我们ItemIDs中加入相应的标签名,注意:这数组必须由1开始,不能由0开始。
配置好标签后就要进行OPC连接了。
如下面子程序:①ClientHandles1先配置名柄索引,这将在读取OPC标签的值时可要用到。
②生成OPC对象,③进行OPC标签连接此,OPC 连接就成功了,我们可以对OPC进行读与写的操作了。
Private Sub Command1_Click()Dim ii As IntegerDim ClientHandles1(4) As LongFor ii = 1 To 4ClientHandles1(ii) = iiItemIDs(ii) = Text4(ii).Text 指明WinCC内部变量名称Next iiOn Error GoTo ErrorHandlerGroupName = "MyGroup"NodeName = Text1.Text 结点名,即计算机名Set MyOPCServer = New OPCServerMyOPCServer.Connect ServerName, NodeNameSet MyOPCGroupColl = MyOPCServer.OPCGroupsMyOPCGroupColl.DefaultGroupIsActive = TrueSet MyOPCGroup = MyOPCGroupColl.Add(GroupName)Set MyOPCItemColl = MyOPCGroup.OPCItemsFor ii = 1 To 4ClientHandles1(ii) = iiItemIDs(ii) = Text4(ii).TextMyOPCItemColl.AddItems 4, ItemIDs, ClientHandles1, ServerHandles, Errors 初始化OCP连接Next iiMyOPCGroup.IsSubscribed = TrueOption1.Value = True 连接成功标志Exit SubErrorHandler:MsgBox "Error: " & Err.Description, vbCritical, "ERROR" 连接发生错误End Sub3、OPC的标签读写对OPC标签的读可以通过ItemIDsValue(4)组的DataChange事件来读取。
该事件有多个参数:其中NumItems是指标签改变值的个数,ClientHandles是改变值的标签索引,ItemValues 为改变值的数据,具体的意思是ClientHandles(ii)的值是其对应的标签数组的索引,其所指的OPC标签的值在ItemValues(ii)中。
一般来说,刚连接上时,该事件会把全部所要求访问的OPC标签值全部读取过来(顺序不一,要通过ClientHandles索引),此后只有数据发生变化时才会触发该事件。
也只会传输发生了变化的数据,没有变化的数据不会出现在本事件的ItemValues中。
读取Private Sub MyOPCGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)Dim ii As LongFor ii = 1 To 4ItemIDsValue(ClientHandles(ii)) = ItemValues(ii) 对改变的值读入本数组Text5(ClientHandles(ii)).Text = ItemIDsValue(ClientHandles(ii))Next iiEnd Sub写入Private Sub Text8_Change(Index As Integer)Dim valuess(4) As VariantDim ii As LongFor ii = 1 To 4valuess(ii) = Text8(ii).TextMyOPCGroup.SyncWrite 4, ServerHandles, valuess, ErrorsNextEnd Sub对OPC的写可以有同步与异步之分,对于大量的数据传输,异步是更佳的选择,但对少量的数据传输,同步表现得更好。
4、OPC连接断开。
OPC客户端连接后要占用服务器资源,所以如果不需要使用OPC时,必须进行OPC 连接断开。
断开的程序相当简单,释放资源即可。
如下:Private Sub Command2_Click()On Error Resume NextMyOPCGroupColl.RemoveAll ----------- 释放组和服务器对象MyOPCServer.Disconnect----------- 与服务器断开连接并且清除Set MyOPCItemColl = NothingSet MyOPCGroup = NothingSet MyOPCGroupColl = NothingSet MyOPCServer = NothingOption1.Value = False 连接成功标志End Sub至此,用VB 6.0开发WinCC的OPC客户机开发完毕。
三、测试运行在使用中,通过串口读取过来了值(例如温控器的实际温度)可以赋给VB的变量(例如Text8(0).text)。
通过Private Sub Text8_Change(Index As Integer)函数,当串口读取了值有变化时,在WinCC组态界面中实际值I/O域中,就可以看到其实际值了(Tag(1))。
也可通过WinCC的组态界面对设定值I/O域中进行参数设定,通过上述程序的Private Sub MyOPCGroup_DataChange (ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)函数,把WinCC的设定值(Tag(2))赋给VB的变量(例如Text8(1). text),再通过串口通讯把值写入(例如温控器的设定值)。
程序运行图三,OPC与WinCC通讯测试图三,OPC与WinCC通讯测试测试运行结果如图三。