如何使用EXCEL访问WinCC中的实时数据实现报表

如果项目已经做好了,不想改动现有项目。那么可以使用 EXCEL 通过 OPC 方式访问 WinCC 项目的数据。预先定义好 EXCEL 表格样式,通过以下方式实现。通过以下步骤打开 EXCEL 中的 VB 编辑器

图片

引用 WinCC 提供的 OPC 客户端 Control 控件: Siemens OPC DAAutomation 2.0( SOPCDAAuto.dll)

图片

图片

图片

编程实现

‘变量声明

Option Explicit 

Option Base 1 

Const ServerName = "OPCServer.WinCC" 

Dim WithEvents MyOPCServer As OPCServer 

Dim WithEvents MyOPCGroup As OPCGroup 

Dim MyOPCGroupColl As OPCGroups 

Dim MyOPCItemColl As OPCItems 

Dim MyOPCItems As OPCItems 

Dim MyOPCItem As OPCItem 

Dim ClientHandles(10) As Long 

Dim ServerHandles() As Long 

Dim Values(1) As Variant 

Dim Errors() As Long 

Dim ItemIDs(10) As String 

Dim GroupName As String 

Dim NodeName As String 

Dim fxItemValue(10) As Variant 

‘在按钮“启动 OPC 客户端”中添加以下代码

'--------------------------------------------------------------------- 

' 目的:连接到 OPC_server,创建组并添加条目

'--------------------------------------------------------------------- 

 ' 发生错误则转到 ErrorHandler 

 '----------- 可以自由选择 ClientHandle 和 GroupName 

Dim i As Integer 

‘On Error GoTo HANDLEeRROR 

 For i = 1 To 7 

 ClientHandles(i) = i 

 ' 先配置名柄索引 这将在读取 OPC 标签值时可要用到

 Next i 

 ' ClientHandles(1) = 1 

 GroupName = "MyGroup" 

 '----------- 从窗口对话框中取得 ItemID 

 NodeName = txtNoteName.Value 

 ItemIDs(1) = Range("j5").Value’从 EXCEL 表格 j5 中读取变量名称

 ItemIDs(2) = Range("j6").Value 

 ItemIDs(3) = Range("j7").Value 

 ItemIDs(4) = Range("j8").Value 

 ItemIDs(5) = Range("j9").Value 

 ItemIDs(6) = Range("j10").Value 

 '----------- 取得 OPC-Server 实例

 Set MyOPCServer = New OPCServer 

 MyOPCServer.Connect ServerName, NodeName 

 Set MyOPCGroupColl = MyOPCServer.OPCGroups 

 '----------- 设置用于添加组的默认活动状态

 MyOPCGroupColl.DefaultGroupIsActive = True 

 '----------- 将我们的组添加到集合中

 Set MyOPCGroup = MyOPCGroupColl.Add(GroupName) 

 Set MyOPCItemColl = MyOPCGroup.OPCItems 

 '----------- 调价一个条目,即返回 ServerHandle 

 MyOPCItemColl.AddItems 10, ItemIDs, ClientHandles, ServerHandles, Errors 

 '----------- 订阅的组收到异步通知

 MyOPCGroup.IsSubscribed = True

'--------------------------------------------------------------------- 

 '----------- 释放组和服务器对象

 MyOPCGroupColl.RemoveAll 

 '----------- 断开与服务器的连接并清除

 MyOPCServer.Disconnect 

 Set MyOPCItemColl = Nothing 

 Set MyOPCGroup = Nothing 

 Set MyOPCGroupColl = Nothing 

 Set MyOPCServer = Nothing 

‘创建实时刷新数据的函数

' 目的:组中的数值、质量或时间标志改变时,该事件激活

'----------- 如果安装了 OPC-DA Automation 2.1,使用:

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 Integer 

 For ii = 1 To NumItems 

fxItemValue(ClientHandles(ii)) = ItemValues(ii) 

Next ii 

 Range("A5").Value = CStr(TimeStamps(1)) 

 Range("B5").Value = CStr(fxItemValue(1)) 

 ' Range("C5").Value = Hex(Qualities(1)) 

 Range("C5").Value = CStr(fxItemValue(2)) 

 Range("D5").Value = CStr(fxItemValue(3)) 

 Range("E5").Value = CStr(fxItemValue(4)) 

 Range("F5").Value = CStr(fxItemValue(5)) 

 Range("G5").Value = CStr(fxItemValue(6))

End Sub 

‘打印预览的代码

UserForm.Hide 

Sheet1.PrintPreview 

‘退出画面

UserForm.Hide 

打开 EXCEL 激活宏。运行的界面如下,在服务器名称中输入相应的计算机节点名称,

点击“启动 OPC 客户端”。就能得到相应的数据。

图片

至此完成了使用 EXCEL 通过 OPC 方式访问 WinCC 项目中数据的方法。

JL 跳转指令的理解

西门子PLC无线通讯解决方案

数据丟了--WinCc历史数据丢失怎么办

巨控无线通讯模块在带式输送机行业的应用

MMC 卡数据的读写

如何快速切换 WinCC V7.5 Runtime 的显示模式,如进行日间、夜间显示模式切换?

WinCC激活故障排除及解决思路

Wincc在手机端监控_巨控OPC560解决方案

PROFINET通讯中断如何分析和解决

PLC之间的Profibus 通讯

WinCC中的画面模板

怎么远程控制国外的PLC

远程上下载西门子1200PLC程序,在线调试

WinCC激活故障排除及解决思路

使用循环中断和读取循环时间作为定时器

单个S7-1200做服务器,和多个客户端做Modbus TCP通讯

使用STARTER软件使用同一套参数下载多台G120变频器

wincc如何实现远程监控1200PLC

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/875902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

H5+CSS+JS工作性价比计算器

工作性价比&#xff1d;平均日新x综合环境系数/35 x(工作时长&#xff0b;通勤时长—0.5 x摸鱼时长) x学历系数 如果代码中的公式不对&#xff0c;请指正 效果图 源代码 <!DOCTYPE html> <html> <head> <style> .calculator { width: 300px; padd…

【个人记录】pkg可以将Node.js应用打包为可执行文件

背景 之前按客户需求做了一个简易定时任务应用&#xff0c;完成后为方便客户使用需要打包为可执行文件。 pkg工具 pkg 是一个非常流行的工具&#xff0c;它能够将 Node.js 应用打包成独立的可执行文件。它支持多个平台&#xff0c;包括 Windows、macOS 和 Linux。 测试环境…

懒人精灵安卓版纯本地离线文字识别插件

目的 懒人精灵是一款可以模拟鼠标和键盘操作的自动化工具。它可以帮助用户自动完成一些重复的、繁琐的任务&#xff0c;节省大量人工操作的时间。懒人精灵也包含图色功能&#xff0c;识别屏幕上的图像&#xff0c;根据图像的变化自动执行相应的操作。本篇文章主要讲解下更优秀的…

测试工作中常听到的名词解释 : )

背景 很多名称其实看字面意思都挺抽象的&#xff0c;有时看群里的测试大佬在不停蹦这类术语&#xff0c;感觉很高大上&#xff0c;但其实很多你应该是知道的&#xff0c;只不过没想到别人是这样叫它的。又或者你的主编程语言不是 Java&#xff0c;所以看不懂他们在讲啥&#x…

平均场理论下的维度约简公式与应用解析

平均场理论下的维度约简公式与应用解析 平均场理论的核心作用 平均场理论是一种处理复杂网络系统的方法&#xff0c;特别是在网络系统规模庞大时。它通过将耦合的多元微分方程组降至多个一元微分方程组&#xff0c;从而实现维度约简&#xff0c;极大地提高了计算效率。其基本…

C#高级:枚举(Enum)从索引、值到注释的完整使用技巧

目录 一、推荐的枚举写法 二、获取注释的封装代码 三、已知【枚举】&#xff0c;获取注释、索引 四、已知【索引】&#xff0c;获取枚举值、注释 五、已知【注释】&#xff0c;获取枚举值、索引 六、创建一个【枚举字典】&#xff0c;key索引&#xff0c;value(枚举值&am…

河道高效治理新策略:视频AI智能监控如何助力河污防治

一、背景与现状 随着城市化进程的加快&#xff0c;河道污染问题日益严重&#xff0c;对生态环境和居民生活造成了严重影响。为了有效治理河道污染&#xff0c;提高河道管理的智能化水平&#xff0c;TSINGSEE青犀提出了一套河污治理视频智能分析及管理方案。方案依托先进的视频…

gitee设置ssh公钥密码避免频繁密码验证

gitee中可以创建私有项目&#xff0c;但是在clone或者push都需要输入密码&#xff0c; 比较繁琐。 公钥则可以解决该问题&#xff0c;将私钥放在本地&#xff0c;公钥放在gitee上&#xff0c;当对项目进行操作时带有的私钥会在gitee和公钥进行验证&#xff0c;避免了手动输入密…

WEB攻防-通用漏洞-SQL 读写注入-MYSQLMSSQLPostgreSQL

什么是高权限注入 高权限注入指的是攻击者通过SQL注入漏洞&#xff0c;利用具有高级权限的数据库账户&#xff08;如MYSQL的root用户、MSSQL的sa用户、PostgreSQL的dba用户&#xff09;执行恶意SQL语句。这些高级权限账户能够访问和修改数据库中的所有数据&#xff0c;甚至执行…

Spring项目中发生log依赖冲突如何解决

异常信息 Caused by: org.apache.logging.log4j.LoggingException: log4j-slf4j-impl cannot be present with log4j-to-slf4分析 根据异常信息分析&#xff0c;可以看出是slf4j的实现有两个依赖&#xff0c;只需要移除log4j-slf4j-impl或log4j-to-slf4j其中一个库的依赖&…

如何合并电脑硬盘分区?轻松合并电脑硬盘分区

在日常使用电脑的过程中&#xff0c;我们有时需要对硬盘进行分区管理。然而&#xff0c;随着时间的推移&#xff0c;我们可能会发现原有的分区设置不再满足需求&#xff0c;这时就需要对分区进行调整&#xff0c;甚至合并分区。那么&#xff0c;我们该如何合并电脑硬盘分区呢&a…

攻坚克难岁月长,自主腾飞世界强——回顾近代中国数据库的发展与飞跃

前言 最近看了《中国数据库前世今生》纪录片&#xff0c;感触颇深&#xff0c;也是一直在思考到底该用何种方式起笔来回顾这段筚路蓝缕却又充满民族自豪感的历程。大概构思了一周左右吧&#xff0c;我想&#xff0c;或许还是应该从那个计算机技术在国内刚刚萌芽的年代开始讲起…

Arthas在线诊断案例实战整理

会一直持续更新。。。 Arthas 是一款线上监控诊断产品&#xff0c;通过全局视角实时查看应用 load、内存、gc、线程的状态信息&#xff0c;并能在不修改应用代码的情况下&#xff0c;对业务问题进行诊断&#xff0c;包括查看方法调用的出入参、异常&#xff0c;监测方法执行耗时…

SAPUI5基础知识19 - 视图嵌套(Nested Views)

1. 背景 SAPUI5 是一个用于构建企业级 Web 应用程序的 JavaScript 框架。它提供了丰富的 UI 控件和工具&#xff0c;帮助开发者创建复杂的用户界面。Nested Views 是 SAPUI5 中的一种设计模式&#xff0c;允许在一个视图中嵌套另一个视图。这种模式有助于模块化和重用代码&…

低代码如何加速数字化转型

数字化转型&#xff0c;正日益决定企业成功的关键。这里的一个关键因素是它可以以更快的速度和质量来实施技术计划。在当今瞬息万变的商业环境中&#xff0c;战略性地采用低代码平台对于旨在加快上市时间、增强业务敏捷性和促进跨团队无缝协作的首席技术官来说至关重要。日益增…

react中组件间的通信

一、父传子 1.代码展示 import React, { useState } from react;function SonPage(props){ // 子组件const {msg} propsreturn (<div>我是子组件 {msg}</div>) }function App() { // 父组件const [msgText,setMsgText] useState(父传子)return (<div classN…

快速入门Jupyter notebook

快速入门 Jupyter notebook 一、前言&#xff08;一&#xff09;优点&#xff08;二&#xff09;特点&#xff08;三&#xff09;调用运行&#xff08;四&#xff09;新建 二、认识界面快捷键&#xff08;一&#xff09;三种模式&#xff08;1&#xff09;蓝色模式&#xff1a;…

【echarts】中如何设置曲线展示最新值、最大值、最小值

需要用到的属性&#xff1a;图表标注 series-line. markPoint 默认可以通过 type直接标注&#xff1a;‘min’ 最小值、‘max’ 最大值、‘average’ 平均值。 markPoint: {data: [{type: max},{type: min}]}如何展示最新值 如果要展示最新值得话&#xff0c;需要设置 标注…

ICMPv6与NDP

ICMP ICMPv6是 IPv6 的基础协议之一。 在 IPv6 报文头部中, Next Header 字段值为 58 则对应为 ICMPv6 报文。 ICMPv6报文用于通告相关信息或错误。 ICMP报文 Type字段:0-127表示差错消息,128-255表示信息消息。 ICMP消息类型 差错消息 差错消息用于报告在转发IPv6数据包过…

如何应对SQL注入攻击?

引言 在现今的网络世界中&#xff0c;安全性已成为至关重要的话题。SQL注入&#xff08;SQL Injection&#xff09;是一种常见且危险的网络攻击方式&#xff0c;攻击者通过向SQL查询中插入恶意代码来操控数据库&#xff0c;从而获取敏感信息或破坏数据。了解SQL注入的各种类型…