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

news2024/9/29 3:29:53

如果项目已经做好了,不想改动现有项目。那么可以使用 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.coloradmin.cn/o/1948831.html

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

相关文章

Godot游戏制作 04平台设计

新建创景,添加AnimatableBody2D节点。 添加Sprite2D节点 拖动图片 剪裁图片,吸附模式:像素吸附 添加CollisionShape2D,设置实际形状为矩形 重命名AnimatableBody2D节点为Platform,保存场景,拖动platform场景…

VirtualBox 安装Centos 7 避坑指南 SSH连不上 镜像失效 静态网络配置等

背景 几乎每次安装Centos 7 时,都会遇到各种各样的问题,毕竟每次安装动辄就是半年几年,几乎都是在换工作时,有了新机器才会倒腾一次,时间久远,就会忘记一些细节,这次整理一下,避免以…

数字图像处理笔记(三) ---- 傅里叶变换的基本原理

系列文章目录 数字图像处理笔记(一)---- 图像数字化与显示 数字图像处理笔记(二)---- 像素加图像统计特征 数字图像处理笔记(三) ---- 傅里叶变换的基本原理 文章目录 系列文章目录前言一、傅里叶变换二、离散傅里叶变…

Vue3与Element-plus配合 直接修改表格中的一项数据——控制输入框的显示与隐藏

利用控制与隐藏输入框,直接修改表格中的每一项数据。 <!-- 表格模块 --> <div><el-table :data"tablelist" style"width: 100%"><el-table-column align"center" prop"deposit" label"接单押金">&l…

【动态规划】力扣.213. 打家劫舍 II

你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 &#xff0c;这意味着第一个房屋和最后一个房屋是紧挨着的。同时&#xff0c;相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一…

自动驾驶汽车普及之路

全球范围内自动驾驶汽车的普及正在加速。英国最近通过了 自动驾驶汽车法案 以便在未来几年内实现全自动驾驶和部分自动驾驶汽车安全融入社会。 更多自动驾驶汽车 目前&#xff0c;中国是世界上测试自动驾驶出租车最多的国家。而在美国&#xff0c;各大城市已将“自动驾驶出租车…

人工智能历史:从梦想到现实的变革之路

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

python机器学习8--自然语言处理(2)

1&#xff0e;移除用词 在很多情况下&#xff0c;有一些文章内的英文字符、标点符号分词的结果不符合自己的预期&#xff0c;会出现一些不想要的分词&#xff0c;此时就能通过以下的函数自己设定用词&#xff0c;并且删除。 jieba.analyse.set_stop_words("stop_words.tx…

哈默纳科HarmonicDrive谐波减速机的使用寿命计算

在机械传动系统中&#xff0c;减速机的应用无处不在&#xff0c;而HarmonicDrive哈默纳科谐波减速机以其独特的优势&#xff0c;如轻量、小型、传动效率高、减速范围广、精度高等特点&#xff0c;成为了众多领域的选择。然而&#xff0c;任何机械设备都有其使用寿命&#xff0c…

第五周:机器学习笔记

第五周学习周报 摘要Abstract机器学习——神经网络训练不起来怎么办&#xff1f;1. 局部最小点和鞍点1.1 Momentum(动量)1.2 Local minima和saddle point谁出现的情况更多&#xff1f; 2. 批次&#xff08;Batch&#xff09;2.1 Small Batch v.s. Large Batch Pytorch学习——T…

python项目通过docker部署到Linux系统并实现远程访问

背景需求&#xff1a;在Windows系统编写了简单的python代码&#xff0c;希望能通过docker打包到Linux Ubuntu系统中&#xff0c;并运行起来&#xff0c;并且希望在本地Windows系统中能通过postman访问。 目录 一、原本的python代码 二、创建一个简单的Flask应用程序 三、创…

SQL核心基础语法—快速入门MySQL

1.MySQL简介 MySQL其实是DBMS软件系统&#xff0c;也就是说MySQL并不是一个数据库&#xff0c;这是很多人的误区。我们经常听到的Oracle&#xff0c;MySQL&#xff0c;微软SQL Server&#xff0c;都是DBMS软件系统&#xff0c;我们只是通过这些系统来管理和维护数据库而已&…

系统架构师(每日一练7)

每日一练 1.关于网络延迟正确的是()。答案与解析 A.在对等网络中&#xff0c;网络的延迟大小与网络中的终端数量无关 B.使用路由器进行数据转发所带来的延迟小于交换机, C.使用internet服务器可最大程度地减小网络延迟 D.服务器延迟的主要影响因素是队列延迟和磁盘10延迟 2.以…

# redis 高级应用--使用 redis 消息队列完成秒杀过期订单处理(2)

redis 高级应用–使用 redis 消息队列完成秒杀过期订单处理&#xff08;2&#xff09; 一、springDataRedis 中定义消息的监听器 1、在 JAVA 程序中监听 redis 消息&#xff1a;配置监听 redis 的消息。 如果要在 java 代码中监听 redis 的主题消息&#xff0c;需要自定义处…

Android 列表或网格形式展示大量数据:RecyclerView

目录 RecyclerView是什么如何使用RecyclerView 涉及到的类LayoutManager为Item设置不同的布局样式制作拖动的RecyclerView 一、RecyclerView是什么 RecyclerView是Android支持库中的一个控件&#xff0c;用于在列表或网格形式展示大量数据。它是ListView的升级版&#xff0c…

Mybatis(三) 查询不同数据封装的方式

实体类&#xff1a; 数据库&#xff1a; 1、查询一个实体类对象 /** * 根据用户id查询用户信息* param id * return */User getUserById(Param("id") int id);<select id"getUserById" resultType"User">select * from t_user where id …

乐尚代驾六订单执行一

加载当前订单 需求 无论是司机端&#xff0c;还是乘客端&#xff0c;遇到页面切换&#xff0c;重新登录小程序等&#xff0c;只要回到首页面&#xff0c;查看当前是否有正在执行订单&#xff0c;如果有跳转到当前订单执行页面 之前这个接口已经开发&#xff0c;为了测试&…

MySQL练习(5)

作业要求&#xff1a; 实现过程&#xff1a; 一、触发器 &#xff08;1&#xff09;建立两个表&#xff1a;goods&#xff08;商品表&#xff09;、orders&#xff08;订单表&#xff09; &#xff08;2&#xff09;在商品表中导入商品记录 &#xff08;3&#xff09;建立触发…

Nuxt3:ERROR [nitro] [unhandledRejection] connect ECONNREFUSED ::1:80

Nuxt3对接接口时报错 &#xff1a;ERROR [nitro] [unhandledRejection] connect ECONNREFUSED ::1:80 排查了很久配置&#xff0c;端口等都是没问题的&#xff0c;但是如果直接将访问地址修改完整访问是没有问题但是我们会遇到跨域问题可以参考Nuxt3&#xff1a;跨域-CSDN博客…

Java连接Redis和SpringBoot整合Redis

1. Java连接Redis 思考&#xff1a;我们之前操作redis都是通过命令行的客户端来操作。在开发时都是通过java项目操作redis java提高连接redis的方式为jedis。我们需要遵循jedis协议。 java提供连接mysql的方式为jdbc。 1.1 单机模式 引入依赖 <!--引入java连接redis的驱动…