利用VBA脚本通过OPC DA 访问Wincc

看过Excel_OPC的脚本例子,对其中的一部分内容不理解。例如:
Private Sub MyOPCGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)

 ‘———– Set the spreadsheet cell values to the values read

 If NumItems = 1 Then
 
        Select Case ClientHandles(1)
           Case 1
          
                 Range("B4").Value = CStr(ItemValues(1))
               
                 Range("C4").Value = Hex(Qualities(1))
                 
                 TimeStamps(1) = DateAdd("h", 8, TimeStamps(1))
                                
                 Range("D4").Value = CStr(TimeStamps(1))
         
          Case 2
              
                 Range("B5").Value = CStr(ItemValues(1))
                 
                 Range("C5").Value = Hex(Qualities(1))
                 
                 TimeStamps(1) = DateAdd("h", 8, TimeStamps(1))
                 
                 Range("D5").Value = CStr(TimeStamps(1))
          
          Case Else
         
          End Select
          
    Else
          
                 Range("B4").Value = CStr(ItemValues(1))
               
                 Range("C4").Value = Hex(Qualities(1))
                 
                 TimeStamps(1) = DateAdd("h", 8, TimeStamps(1))
               
                 Range("D4").Value = CStr(TimeStamps(1))
         
               
                 Range("B5").Value = CStr(ItemValues(2))
                 
                 Range("C5").Value = Hex(Qualities(2))
                 
                 TimeStamps(2) = DateAdd("h", 8, TimeStamps(2))
                 
                 Range("D5").Value = CStr(TimeStamps(2))
          
    End If
    
    
End Sub

这是针对2个变量的,没有问题。

但如果是10或百个变量,如何编写??

ClientHandle是什么含义?是一条记录(指变量名、变量值、质量代码、时间戳)的索引?


我添加10个变量,float1至float10 ,要求读出每个变量对应的值,质量代码,还有更新时间戳,应如何编写?

问题补充:
如何让Qualitues()和TimeStamps也建立起映射关系。
我想要的格式是:
  TagName         Value       Qulities    TimeStamp
     float1             0.00          C0         20**-**-**
     float2             0.00          C0         20**-**-**
     float3             0.00          C0         20**-**-**
     float4             0.00          C0         20**-**-**
   …………………………..
  这段代码如何写?
  会不会出现TimeStamp(4)?为什么会越界?

最佳答案

ClientHandle和ServerHandle都是属于句柄,ClientHandle就是像你说的可以索引到每个元素的值,品质,时间戳等还有多更的信息,这个是客户端句柄,你在建立Group的时候,要给添加进Group的Item分配一个ClientHandle,用于后面来追踪它的信息,可以说有了ClientHandle,你就能找到每个Item的资源。
ServerHandle是系统自动分配的,也是一样的功能。
如何让Qualitues()和TimeStamps也建立起映射关系。你的品质和时间戳不是已经找到了也对应上了吗?做10个变量把循环该成FOR循环就可以了啊

提问者对于答案的评价:

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc365542.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日
下一篇 2021年7月5日

相关推荐

  • 历史趋势:曲线没有数据

    软件背景:win7专业版SP1;WinCC-V7.2 ;博图S7-V14问题产生背景:系统已经正常运行2年多,9月的一个时间点,操作系统崩溃,重做系统后,现安装博图,后安…

    2020年11月1日
  • wincc7.2安装问题88

    见图,点击安装就出现这个,是要我联网吗?不联网不能装吗? 图片说明:    最佳答案 安装不需要联网建议重启主机登录具有管理员权限用户尝试重新安装,注意安装前关…

    2021年7月5日
  • wincc vbs读取外部变量有时候很慢是什么原因?

    系统通过KepServer采集现场数据。然后winncc通过通道连接kep获取数据。但是不知道为什么,有时候在读取变量时候,会非常慢。导致数据入库出现数据断点。想请问一下各位大牛。…

    SIMATIC WinCC 2017年6月8日
  • DdeServ.exe

    我WINCC和EXCEL用DDE连接  怎么在计算机–属性–启动 然后添加里面找不到DdeServ.exe请各位高人指点一下 …

    SIMATIC WinCC 2019年6月11日
  • wincc误报警

    wincc v7.4版本,两台电脑冗余连接412-5H,组态了开关量报警,现在可以确定PLC没产生报警,wincc经常会同一时刻弹出一列误报警。用7.3版本就出现过,没解…

    2021年7月5日
  • wincc可以在线监视变量吗?如何实现?

    wincc建立的变量,不通过图形编辑器,可以在线监视变量数据吗?如何实现? 最佳答案 你的WinCC是什么版本,如果是7.2以上的,是有这个功能的,之前的版本没有测试过,不敢乱说。…

    2017年6月9日
  • wincc RT Start启动项目提示“无法打开Wincc项目,项目路径无效”

    我还在学习Wincc遇到这个问题我在网上也没有找到答案,希望那位大神能指点我一下,万分感谢。 钻石用户推荐最佳答案 http://www.ad.siemens.com.cn/ser…

    SIMATIC WinCC 2020年11月1日
  • wincc 起不来

    整个系统在运行情况下突然停电了一次,一台操作员站上的wincc双击图标后,只闪一下wincc explorer就自动关掉了。请问是怎么回事,该如何处理? 最佳答案 1、先…

    SIMATIC WinCC 2018年12月14日
  • wincc不能运行

    wincc运行时卡在加载组态数据的进度上,是什么原因? 谢谢! 最佳答案 以下几个地方不要使用中文: 1、计算机名称 2、项目名称 3、项目…

    SIMATIC WinCC 2019年6月11日
  • Wicc Function Trend Control控件有关问题

    1、Wicc Function Trend Control控件的数据连接选项有三种方式:在线变量;用户归档;过程归档。  &nbs…

    SIMATIC WinCC 2019年6月11日

发表回复

登录后才能评论