如何使用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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 415.字符串相加 C++写法

LeetCode 415.字符串相加 C写法 思路🤔: 首先不能用stoi和tostring来做,如果给一个很大的数那一定存不下。我们可以从后往前一位一位的取,创建一个变量存储进位用于计算下一位数,之后取模得到当前数字,每一…

Python 机器学习求解 PDE 学习项目——PINN 求解一维 Poisson 方程

本文使用 TensorFlow 1.15 环境搭建深度神经网络(PINN)求解一维 Poisson 方程: − Δ u f in Ω , u 0 on Γ : ∂ Ω . \begin{align} -\Delta u & f \quad & \text{in } \Omega,\\ u & 0 \quad & \text{on } \Gamma:\partial \Om…

Spring Cloud微服务项目公共类抽取

在微服务架构中,代码的重用性和维护性是非常重要的。Spring Cloud 提供了丰富的工具和框架来帮助我们构建和管理微服务应用,但随着项目规模的扩大,我们会遇到大量的重复代码和相似的逻辑。在这种情况下,抽取公共类成为提高代码质量…

txt格式单词导入有道词典生词本 (java代码方式)

txt格式单词导入有道词典生词本 (java代码方式) 首先要求txt文档里单词的格式,大概需要像这种: 每行是一个单词,格式为:英文单词空格词性单词意思。 注意 导出单词本的名字就是你 txt 文件的名字 我这里是 公共英语三级 单词本 …

vite5-macos仿macOS网页osx管理系统|vue3+arcoDesign桌面os

基于vite5.xvue3arco-design原创自研网页版os管理框架ViteWebOS。 使用最新前端技术vite5vue3pinia2arcoDesignsortablejsecharts搭建网页pc版桌面os式后台管理系统解决方案。支持自定义桌面栅格布局引擎、可拖拽桌面图标、多屏分页管理、自定义桌面壁纸主题、毛玻璃虚化背景等…

react中路由跳转以及路由传参

一、路由跳转 1.安装插件 npm install react-router-dom 2.路由配置 路由配置:react中简单的配置路由-CSDN博客 3.实现代码 // src/page/index/index.js// 引入 import { Link, useNavigate } from "react-router-dom";function IndexPage() {const …

论文快过(图像配准|Coarse_LoFTR_TRT)|适用于移动端的LoFTR算法的改进分析 1060显卡上45fps

项目地址:https://github.com/Kolkir/Coarse_LoFTR_TRT 创建时间:2022年 相关训练数据:BlendedMVS LoFTR [19]是一种有效的深度学习方法,可以在图像对上寻找合适的局部特征匹配。本文报道了该方法在低计算性能和有限内存条件下的…

MongoDB教程(十五):MongoDB原子操作

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言一、MongoD…

深入浅出WebRTC—Pacer

平滑发包(Pacer)是 WebRTC 实现高质量实时通信不可或缺的一部分。在视频通信中,单帧视频可能包含大量的数据,如果未经控制地立即发送,可能瞬间对网络造成巨大压力。Pacer 能够根据网络条件动态调整发送速率&#xff0c…

论文阅读:面向自动驾驶场景的多目标点云检测算法

论文地址:面向自动驾驶场景的多目标点云检测算法 概要 点云在自动驾驶系统中的三维目标检测是关键技术之一。目前主流的基于体素的无锚框检测算法通常采用复杂的二阶段修正模块,虽然在算法性能上有所提升,但往往伴随着较大的延迟。单阶段无锚框点云检测算法简化了检测流程,…

“微软蓝屏”全球宕机,敲响基础软件自主可控警钟

上周五,“微软蓝屏”“感谢微软 喜提假期”等词条冲上热搜,全球百万打工人受此影响,共同见证这一历史性事件。据微软方面发布消息称,旗下Microsoft 365系列服务出现访问中断。随后在全球范围内,包括企业、政府、个人在…

基于DPU与SmartNic的云原生SDN解决方案

1. 方案背景与挑战 随着云计算,大数据和人工智能等技术的蓬勃发展,数据中心面临着前所未有的数据洪流和计算压力,这对SDN提出了更高的性能和效率要求。自云原生概念被提出以来,Kubernetes为云原生应用的落地提供了一个轻量级&am…

node+mysql实现(账户密码,阿里云短信验证,QQ邮箱注册登录,短信验证密码重置,邮箱密码重置)之注册,登录密码重置总篇

node+mysql实现账户登录 注意效果图项目插件代码参数说明短信验证模块邮箱验证模块注册方式登录方式密码重置前端页面部分登录页面账户登录页面(login.html)短信验证登录页面(smsLogin.html)邮箱登录页面(emailLogin.html)注册部分页面短信验证注册页面(register.html)邮…

产品经理NPDP好考吗?

NPDP是新产品开发专业人员的资格认证,对于希望在产品管理领域取得认可的专业人士来说,NPDP认证是一项重要的资格。 那么,产品经理考取NPDP资格认证究竟难不难呢? 首先,NPDP考试的难易程度取决于考生的背景和准备情况…

C++11并发编程

目录 一、线程的创建 1、介绍thread类 2、创建线程 二、线程的2种工作方式 其一:关联主线程 其二:拆离主线程 两种工作方式的使用-代码示例 detach join 三、线程安全问题 1、什么是线程安全 2、怎么使程序线程安全 保护对共享数据的操作-加…

Redis (常用数据结构和命令)

目录 简介 概述 特点 数据结构 常用命令 通用命令 keys del exists expire 与 ttl String 命令 SET 和GET: MSET和MGET INCR和INCRBY和DECY SETNX SETEX Redis 命令 Key 的层级结构 key层级关系 : Hash命令 HSET和HGET HMSET和HMGET HGETALL H…

深入浅出WebRTC—ULPFEC

FEC 通过在发送端添加额外的冗余信息,使接收端即使在部分数据包丢失的情况下也能恢复原始数据,从而减轻网络丢包的影响。在 WebRTC 中,FEC 主要有两种实现方式:ULPFEC 和 FlexFEC,FlexFEC 是 ULPFEC 的扩展和升级&…

数据结构——堆(C语言版)

树 树的概念: 树(Tree)是一种抽象数据结构,它由节点(node)的集合组成,这些节点通过边相连,把 节点集合按照逻辑顺序抽象成图像,看起来就像一个倒挂着的树,也…

OpenCV图像滤波(1)双边滤波函数bilateralFilter的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 功能描述 bilateralFilter是图像处理和计算机视觉领域中的一种高级图像滤波技术,特别设计用于在去除噪声的同时保留图像的边缘和细节。相比于传…

网络编程总复习

TCP的创建: 服务器端 : 客户端: