WinCC V7.5 SP1VBS全局变量的使用

1 <概述>

在 WinCC 使用过程中,有很多应用场合需要把获得的数据保存下来,在其它事件 中来使用,例如在 WinCC 运行后去读取自定义的配置文件中的参数,在控制相应设 备时需要根据这些参数来确定控制方式,那么就需要把这些参数以 WinCC 更容易读 取的方式保存下来。

目前,在 WinCC V7.5 SP1 中,可以通过 WinCC 变量、VBS 全局变量以及 DataSet 来保存这些数据。本文档主要介绍 VBS 全局变量使用,分别介绍在画面的 动作中定义全局变量以及在 VBS 全局脚本中定义全局变量的方法。 

全局变量可在全局 VBS 脚本编辑器中定义,然后可在所有 VBS 动作、过程和画面 中使用。也可以在画面的动作中定义全局变量,但只能在当前画面使用此全局变 量。 

本文档所使用的软件版本如下:

➢ WinCC 版本: SIMATIC WinCC V7.5 SP1

2 <基于画面的 VBS 全局变量> 

可以在画面的动作中定义 VBS 全局变量,通过全局变量可以在不同的 VBS 脚本中 交换数据,但这种全局变量只能在当前画面使用。下面介绍如何在画面中的两个按 钮通过全局变量传送数据。

第一步,在画面中插入两个按钮及一个圆,并为圆对象命名。本例中圆的名称为 “C1”。如图 1 所示。

图片

第二步,按钮 1 的按下事件中输入如图 2 所示的 VBS 脚本。

图片

其中 Option Explicit 部分定义的就是此画面动作的全局变量,这里定义的变量可 以赋值为数值和对象。图中定义了两个全局变量:数值变量“MyNumber”和对象 变量“My Control”。

默认情况下,Option Explicit 是隐藏的,可以通过 VBS 脚本编辑器中的“显示声 明区”按钮把这部分内容显示出来,如图 3 所示。

图片

第三步,在按钮 1 的按下事件的 VBS 脚本中直接调用全局变量。如图 4 所示。

图片

这里可以直接调用全局变量,而不用再重新声明。并且按钮 1 中设定的数值也会 随着变量传送过来。

第四步,激活 WinCC 运行系统。先后点击按钮 1 和按钮 2,可以看到按钮 2 可以直 接控制圆的颜色。如图 5 所示。

图片

注意,基于画面的 VBS 全局变量不能跨画面使用。本例中再创建一个新的画面 “NewPdl3”,在画面中添加一个按钮“按钮 3”,其动作中调用对象变量“My Control”。如图 6 所示。

图片

在原画面中通过画面窗口显示“NewPdl3”画面,此时执行按钮 3 的动作,可以看 到缺少对象变量“My Control”的提示,如图 7 所示。说明不能跨画面引用基本画 面的 VBS 全局变量。

图片

3 <基于全局脚本的 VBS 全局变量>

基于全局脚本的 VBS 全局变量是在全局 VBS 脚本编辑器中定义,这种变量可在所 有 VBS 动作、过程(函数)和画面中使用,但是在全局脚本中声明的变量不能在全 局动作和画面动作脚本之间交换数据,不同画面动作脚本之间也不能交换数据。如 果需要在全局动作和画面之间交换数据可以使用内部变量或 DataSet 对象。

下面介绍如何定义并使用基于全局脚本的 VBS 全局变量。

第一步,在 VBS 全局脚本编辑器中创建“模块 1”,在“模块 1”定义全局变量“GTag”, 并在过程“procedure1”和 “procedure2”中使用此变量,如图 8 所示。

图片

其中,过程“procedure1”是为全局变量赋初值为 1,过程“procedure2”使全局变 量赋自加 1。

第二步,创建新的模块“模块 2”,在“模块 2”中创建过程“procedure11”,并直接引用 “模块 1”创建的全局变量“GTag”,如图 9 所示。

图片

第三步,创建画面,添加四个按钮,并添加“应用程序窗口”用来显示脚本中的 trace 信息。如图 10 所示。

图片

其中,前三个按钮分别调用“模块 1”中的过程“procedure1”和 “procedure2”,以 及“模块 2”中的过程“procedure11”。图 11 所示为按钮 1 调用“模块 1”中的过程 “procedure1”。

图片

第四个按钮通过 VBS 脚本在画面中为全局变量“GTag”赋值,如图 12 所示。

图片

第四步,激活 WinCC 运行系统,分别点击“按钮 1”、“GTag=11”、“按钮 2”、“按钮 3”,结果如图 13 所示。

图片

可以看到按下“过程 1”按钮后,变量 GTag 在当前画面中注册,“GTag=11”按钮 在画面中为 GTag 赋值之后,“过程 2”按钮通过全局过程脚本可以读到刚才设定 的值。同时,调用不同模块中的过程函数的“过程 11”按钮也可以读取“GTag”变 量的值。

上面演示的在同一个画面中 VBS 全局变量的使用,但是需要注意的是

▪ 全局动作脚本和画面动作脚本之间无法通过全局变量交换数据。

▪ 不同画面的动作脚本也不能通过全局变量交换数据。

4 应用举例

下面以实现操作记录为例介绍 VBS 全局脚本的使用。本例中,在 WinCC 画面中的 操作动作通过脚本记录到自定义的 Access 数据库中。由于对设备的操作有可能很频 繁,如果每个记录都重新连接并打开数据库,那么会占用大量的系统资源。本例中 使用 VBS 全局变量保存连接的数据库对象,每次操作直接调用这些全局变量即可, 不用重新去连接数据。

4.1 <创建数据库>

WinCC 项目文件夹下创建”report”文件夹,并在文件夹中创建 Access 数据,本 例中名称为“ActionRecrod”,如图 14 所示。

图片

在 ActionRecrod 数据库中创建表“actionRecrod”,各字段设计如图 15 所示。

图片

4.2 <创建 VBS 全局脚本>

打开全局 VBS 脚本编辑器,创建“模块 3”,定义全局变量“CurrentUserName”和 “sqlcomm”,以及对象变量“Conn”和“adors”,并创建过程“operating_record”和 “SQL_Close”,如图 16 所示。

图片

其中,过程“operating_record”用来创建到数据库“ActionRecrod”的连接,这个连接 保存到 VBS 全局变量“Conn”中。过程““SQL_Close””用来断开和数据库的连接。

具体的脚本如下:

Dim CurrentUserName,sqlcomm 

Dim Conn,adors

Sub operating_record 

Set CurrentUserName = HMIRuntime.Tags("@CurrentUserName") CurrentUserName.Read Set conn = CreateObject("ADODB.Connection") 

Set adors = CreateObject("ADODB.Recordset") Conn.ConnectionString = "Provider=microsoft.ace.oledb.12.0;" & "Data Source=" & HMIRuntime.ActiveProject.Path &"\report\ActionRecrod.accdb" 

Conn.Open sqlcomm = "insert into actionRecrod (Act_time, Act_dec, UserN) values ( #"

End Sub

Sub SQL_Close 

Conn.close 

Set Conn = Nothing 

Set adors = Nothing 

End Sub

4.3 <创建用户>

在 WinCC 用户管理器中创建用户,如下图 17 所示。

图片

4.4 <画面组态>

<在画面中插入用来登录的按钮,用来显示当前用户的 IO 域已经设备操作按钮,如 图 18 所示。

图片

在画面的“打开画面”事件中,调用过程“operating_record”,如图 19 所示。

图片

“用户登录”按钮使用 C 脚本调用登录对话框,如图 20 所示

图片

具体脚本如下:

#pragma code ("useadmin.dll")

#include "PWRT_api.h" 

#pragma code() 

PWRTLogin('1');

添加 IO 域,连接系统变量“@CurrentUserName”,用来显示当前登录的用户名,如 图 21 所示。

图片

在设备操作按钮事件脚本中,添加操作记录脚本。如图 22 所示。

图片

在操作记录脚本中不用再去连接数据库,而是直接使用全局变量“Conn”,此变量保 存了所连接的数据库的信息。本例中的四个设备操作按钮的操作记录脚本如下:

‘打开阀 1

Dim act_dec,sql

act_dec = "打开阀 1"

CurrentUserName.read

SQL = sqlcomm & Now & "#, '" & act_dec & "', '" & CurrentUserName.Value & "')"

Conn.Execute SQL

‘关闭阀 1

Dim act_dec,sql

act_dec = "关闭阀 1"

CurrentUserName.read

SQL = sqlcomm & Now & "#, '" & act_dec & "', '" & CurrentUserName.Value & "')"

Conn.Execute SQL

‘启动电机 1

Dim act_dec,sql

act_dec = "启动电机 1"

CurrentUserName.read

SQL = sqlcomm & Now & "#, '" & act_dec & "', '" & CurrentUserName.Value & "')"

Conn.Execute SQL

‘停止电机 1

Dim act_dec,sql

act_dec = "停止电机 1"

CurrentUserName.read

SQL = sqlcomm & Now & "#, '" & act_dec & "', '" & CurrentUserName.Value & "')"

Conn.Execute SQL

WINCC中比较实际趋势曲线和设定值(理想)曲线的实现方法

西门子1500PLC怎样异地远程监控

经典WinCC移植到WinCC Professional

WinCC 数据使用MQTT传送到云端

NET421/NET431西门子plc与ABplc通讯网关

S7-200 SMART 与 S7-1200 之间 TCP 通信— S7-200 SMART 作为服务器

如何在 WinCC Runtime Professional 中自动调整画面分辨率适应窗口的大小?

如何实现简单的 WinCC 项目分屏?

s7-1200通过4G网连接中控室

WinCC C/S结构快速入门

如何防止多个WinCC客户机同时操作或更改数值?

精智Comfort屏如何周期性调用脚本

巨控协议转换网关GRM321GRM322GRM323应用场景

精智面板/二代精简PN面板如何使用Modbus TCP/IP 通信组态

如何快速实现OPC DA转为WEBSEVER

200smart数据日志的功能

HMI如何通过PLC变量控制开始和停止数据记录

WinCC flexible配方与PLC的同步

HMI面板与S7-1500 R/H 冗余PLC的通信

WinCC Flexible Smart快速导入 Smart PLC变量

巨控OPC560系列远程智能控制终端

S7_1200配方功能快速入门

PLC远程调试监控模块-巨控GRM530

PN IO设备ET 200SP将支持R1模式

SCL 常见问题

PLC协议转换网关:巨控NET400

如何判断S7通信中断

S7-1500R/H PROFIBUS DP 通信

如何实现PLC短信报警

WinCC  Modbus TCP 通信

wincc 远程和PLC通讯方案

1500PLC与wincc通过4G网络远程通讯

WINCC中自定义 XY 轴的多功能曲线的实现方法

wincc报警如何通过短信发送给手机

在WinCC(TIA Portal)项目中,如何正确的使用面板,模板,弹出窗口和滑入窗口?

通过巨控GRM532Y-C远程调试下载国外PLC

巨控GRM远程模块配置使用流程简介

巨控远程模块微信报警配置方法

TIA中如何将数据块的实际值转到初始值中

西门子200smart与三菱FX3U plc之间的自由口通讯

wincc 远程和PLC通讯方案

1500PLC如何更好地配置一个OPC UA客户机使其与服务器进行有效的通信?

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

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

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

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

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

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

PLC之间的Profibus 通讯

怎么远程控制国外的PLC

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

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

相关文章

Charles抓包_Android

1.下载地址 2.破解方法 3.安卓调试办法 查看官方文档&#xff0c;Android N之后抓包要声明App可用User目录下的CA证书 3.1.在Proxy下进行以下设置&#xff08;路径Proxy->Proxy Settings&#xff09; 3.1.1.不抓包Windows&#xff0c;即不勾选此项&#xff0c;免得打输出不…

微信小程序 高校教材征订系统

文章目录 项目介绍具体实现截图技术介绍mvc设计模式小程序框架以及目录结构介绍错误处理和异常处理java类核心代码部分展示详细视频演示源码获取 项目介绍 系统分为三个角色&#xff0c;分别是教材科、系教学秘书、教研室主任。系统主要完成功能是教材科要发布教材征订信息&am…

Rust 力扣 - 1343. 大小为 K 且平均值大于等于阈值的子数组数目

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 长度为k且平均值大于等于阈值的子数组数目 等于 长度为k且总和大于等于k * 阈值的子数组数目 我们遍历长度为k的窗口&#xff0c;我们只需要记录窗口内的总和即可&#xff0c;遍历过程中记录总和大于等于k * 阈…

3DMax使用 MCG实现简单克隆修改器

3DMax中的MCG工具集允许用户创建几种不同类型的插件。在这个例子中&#xff0c;我们正在创建一个简单的克隆修改器。 将修改器添加到对象时&#xff0c;将使用“数量”整数值克隆网格n次&#xff0c;并使用X、Y和Z中的“缩放”、“旋转”和“移动”微调器控制每个网格的偏移。…

收卷锥度张力控制(Simulink建模)

1、收卷锥度张力控制功能块(支持5种锥度曲线) 收卷锥度张力控制功能块(支持5种锥度曲线)-CSDN博客文章浏览阅读340次。1、锥度张力控制张力锥度控制(收卷应用)-CSDN博客文章浏览阅读2.2k次。收卷、放卷应用系列文章可以参看下面的文章链接:变频器简单张力控制(线缆收放卷…

【星闪EBM-H63开发板】小熊派固件中心的使用

目录 引言 固件中心 定制固件 创建配置 透传固件的配置信息 串口配置 SLE无线射频配置 SLE连接配置 硬件配置 生成固件 下载和烧录 结语 引言 前面几天介绍了星闪EBM-H63开发板的情况&#xff0c;今天来试试固件中心。 固件中心 固件中心是小熊派提供的用于生成固…

从《Mixtral of Experts》开始讲讲MoE

MoE 在讲这篇论文前先来说说什么是MoE MoE是什么&#xff1f; MoE&#xff0c;全称Mixture of Experts&#xff0c;混合专家模型。MoE是大模型架构的一种&#xff0c;其核心工作设计思路是“术业有专攻”&#xff0c;即将任务分门别类&#xff0c;然后分给多个“专家”进行解…

Java打造智能语音陪聊软件?提升用户体验的新路径

在现在的日常生活中&#xff0c;大家做什么都会寻找一个“搭子”&#xff0c;例如“游戏搭子”&#xff0c;很多时候一时半会找不到就会很苦恼&#xff0c;就因此诞生了语音陪聊软件。然而Java作为一种广泛使用的编程语言&#xff0c;在开发高效、稳定的应用程序方面具有显著优…

js.轮转数组和旋转链表

这是两个相似的题型&#xff0c;一个是数组&#xff0c;另一个是链表。 链接&#xff1a;189. 轮转数组 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1:…

004-Kotlin界面开发快速入水之TicTacToe

程序界面和效果 快速入水 要学习一样跟程序设计有关的东西&#xff0c;最好的办法始终是把手打湿&#xff0c;整一个能够运行&#xff0c;可以实验的东西出来。 也只有在程序开发中&#xff0c;我们才能想一个魔法师而不是魔术师&#xff0c;我们真的能够创造一个东西。而且编…

Spring Boot——日志介绍和配置

1. 日志的介绍 在前面的学习中&#xff0c;控制台上打印出来的一大堆内容就是日志&#xff0c;可以帮助我们发现问题&#xff0c;分析问题&#xff0c;定位问题&#xff0c;除此之外&#xff0c;日志还可以进行系统的监控&#xff0c;数据采集等 2. 日志的使用 在程序中获取日…

python opencv2

二、图像预处理 1、图像翻转 cv2.flip(src, flipCode) &#xff1a;flipCode &#xff1a;0&#xff1a;沿 X 轴翻转&#xff08;垂直翻转&#xff09;&#xff1b;1&#xff1a;沿 Y 轴翻转&#xff08;水平翻转&#xff09;&#xff0c;-1&#xff1a;沿 X 轴和 Y 轴翻转&am…

文件夹0字节:原因、恢复方案与预防措施

一、文件夹0字节现象描述 在日常使用电脑的过程中&#xff0c;我们可能会遇到这样一个问题&#xff1a;某个文件夹突然变成了0字节&#xff0c;这意味着该文件夹中的所有文件似乎都不见了&#xff0c;但实际上可能并未被彻底删除。文件夹0字节的情况常常让人困惑不解&#xff…

不需要复制粘贴,重复内容如何使用Mac快速完成输入

在Mac的日常使用中&#xff0c;必然有着重复内容需要重复输入的需求&#xff0c;但是Mac的剪切板又不具备历史记录的功能&#xff0c;所以只能一次次的复制粘贴&#xff0c;费时费力&#xff0c;那么该如何才能不这么麻烦 快捷短语就是为了解决这一问题而存在的 提前在设置好…

Java 打印流:PrintStream 与 PrintWriter 详解

在 Java 编程中&#xff0c;System.out.println() 的使用频率恐怕不亚于 main 方法的使用频率。其中&#xff0c;System.out 返回的正是打印流 PrintStream。除此之外&#xff0c;Java 还提供了另一个打印流 PrintWriter&#xff0c;它们分别继承自 OutputStream 和 Writer&…

RESTful风格

目录 一、什么是RESTful 1.1 RESTFul对WEB服务接口的规定包括&#xff1a; 1.2 REST对请求方式的具体约束如下&#xff1a; 1.3 REST对URL的具体约束如下&#xff1a; 1.4 RESTFul的核心概念&#xff1a; 二、RESTful风格与传统方式对比 三、RESTful风格演示 3.1 查询所…

运维工具之docker入门

1.容器与docker 1.什么是容器&#xff1f; 容器是一种轻量级的&#xff0c;可移植的软件运行环境。它将软件程序本身及软件依赖库打包在一起。可以在不同平台和系统上运行。 2.什么是LXC LXC就是Linux container,。LXC是一种虚拟化技术&#xff0c;可以在操作系统层级上为应…

Ubuntu系统安装NVIDIA驱动、CUDA、PyTorch等GPU深度学习环境

学习目标&#xff1a; 在Ubuntu系统上安装CUDA、PyTorch等GPU深度学习环境&#xff0c;主要目标是为深入研究深度学习和深度强化学习提供高效的计算支持。通过构建GPU环境&#xff0c;计划掌握深度学习的基本概念和算法应用&#xff0c;提高模型训练效率&#xff0c;特别是在复…

地理信息科学专业想搞GIS开发:学前端还是后端?

地理信息科学专业的同学是学前端开发比较好呢还是学后端开发比较好呢&#xff1f; 部分网友&#xff1a;学前端更好 主修前端更好&#xff0c;因为地信学后端&#xff0c;是卷不赢学计算机的 本科卷前端&#xff0c;硕士阶段可以卷后端 甚至有网友直呼&#xff0c;地信根本没有…

软件测试学习笔记丨Flask框架-请求与响应

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/23408 请求方法 from flask import Flaskapp Flask(__name__)app.route("/cases", methods["get"]) def get_case():return {"code": 0, "msg": &…