当前位置: 网学 > 编程文档 > VB > 正文

用VB编写OPC客户端访问WINCC

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/16
下载{$ArticleTitle}原创论文样式
dItemIdex, WatchDataReadItem, ClientHandles1, ServerHandlesIn, ErrorsIn        ''初始化OCP连接

    MyOPCGroupIn.IsSubscribed = True

End If



    Exit Sub

HANDLEeRROR:

    needOPCRestart = True

    xLog1.log "OPCl连接发生错误"

End Sub

二、OPC的标签读写
对OPC标签的读可以通过MyOPCGroupIn组与MyOPCGroupOut的DataChange事件来读取。该事件有多个参数:其中NumItems是指标签改变值的个数,ClientHandles是改变值的标签索引,ItemValues为改变值的数据,具体的意思是ClientHandles(1)的值是其对应的标签数组的索引,其所指的OPC标签的值在ItemValues(1)中。一般来说,刚连接上时,该事件会把全部所要求访问的OPC标签值全部读取过来(顺序不一,要通过ClientHandles索引),此后只有数据发生变化时才会触发该事件。也只会传输发生了变化的数据,没有变化的数据不会出现在本事件的ItemValues中。



Private Sub MyOPCGroupOut_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)

''产生要通知下一级的数据变化,根椐不再的控件有不同的处理



   For ii = 1 To NumItems

    WatchDataWriteValue(ClientHandles(ii) - 1) = ItemValues(ii) ''对改变的值读入本数组

   Next ii

End Sub

对OPC的写可以有同步与异步之分,对于大量的数据传输,异步是更佳的选择,但对少量的数据传输,同步表现得更好。

   要进行数据传输,先要将值数据进行赋值,注意:值数据要由0开始,也就是说,值数组与标签数据不是一、一对应,值要比标签前一位,这一点,在WINCC说明中没有,但在我的实际的使用中一直要这样,不然数据就产生错位,看下面程序

这是一个拔号完毕后返回的数据进行OPC传递的程序。包含解包过程,

Private Sub showSuccess(msg As String)

    Dim location As String

    Dim nowTime As String

    Dim logStr As String

    Dim Value() As String

    Dim ii, temp As Integer

    Dim isPack As Boolean

    Dim sHead, sDelimited, sTail As String

    

    location = xProfile.GetValue(WatchPoint(nowRunID), "LOCATION")

    nowTime = Now

    logStr = "拔" & location & "取数成功" & msg

    xLog1.log logStr

    logStr = " " & msg

    xLog2.log logStr               ''记录数据

    ''数据上传

    ''如果有包结构,则显示包结构,

    isPack = xProfile.GetValue(WatchPoint(nowRunID), "ISRECHEAD")

    If WatchPointRBegin(nowRunID) < 0 Then Exit Sub

    If isPack Then

       sHead = xProfile.GetValue(WatchPoint(nowRunID), "RECHEAD")

       sD
  • 下一篇资讯: 实现程序的隐形
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号