WinCC读取SQL数据库案例

article/2025/8/9 4:33:00

使用场景:主线上有一台WinCC上位机,各单元有触摸屏,其中WinCC中存储用于自动化产线生产相关的配方数据,在自动生产模式时,将配方数据下发给各单元,在单元脱机模式时,单元内部触摸屏可选择要生产的产品类型(或手动输入),之后点击“获取设定配方值”按钮来请求位于WinCC中的配方数据。从而保证所有配方数据一个数据源,并保证单元在脱机模式下可根据需求选择不同的配方数据。

参考资料:

WINCC读写SQL数据库的例子

创建变量用于存储各单元脱机模式的配方值,数据类型与之前一致

创建变量用于存储各单元脱机模式的配方值,数据类型与之前一致。

创建一个按钮,当按钮状态变为1时,进行数据库配方数据读取。

 

创建全局脚本VBS

双击打开“VBS-Editor”

在“动作”一栏创建1个动作,名称如下

Option Explicit
Function action
Dim sSql
Dim sCom
Dim oRs
Dim conn
Dim oCom
Dim Con
Dim data00,data01,data02,data03,data04,data05,data06,data07,data08,data09
Dim data10,data11,data12,data13,data14,data15,data16,data17,data18,data19
Dim dataselect
'下面的dataselect变量为在HMI所输入的型号查询变量,结合下面的SELECT语法,将输入与表中编号比较,等于则取出该行值。
dataselect=HMIRuntime.Tags ("Unit1_ReqType").Read'连接数据库
Con="Provider=SQLOLEDB.1; Integrated Security =SSPI;Persist Security Info=False; Initial Catalog=CC_Test1_19_05_28_09_45_33R;Data Source=.\WINCC"
Set conn=CreateObject("ADODB.Connection")
conn.ConnectionString= Con
conn.CursorLocation=3
conn.Open
'Msgbox "。。。。。"
'读取数据库
'下面语句为查询数据库SELECT语句
sSql="SELECT * FROM UA#Scan WHERE Type = '"&dataselect&"';"
'标准的数据库操作属性和方法
Set oRs=CreateObject("ADODB.Recordset")
Set oCom=CreateObject("ADODB.Command")
Set oCom.ActiveConnection=conn
oCom.CommandType=1
oCom.CommandText=sSql
Set oRs=oCom.Execute
'此处为赋表中的列0-9值到变量data10-19
data10=oRs.Fields(0).Value
data11=oRs.Fields(1).Value
data12=oRs.Fields(2).Value
data13=oRs.Fields(3).Value
data14=oRs.Fields(4).Value
data15=oRs.Fields(5).Value
data16=oRs.Fields(6).Value
data17=oRs.Fields(7).Value
data18=oRs.Fields(8).Value
data19=oRs.Fields(9).Value
Set data00=HMIRuntime.Tags ("Unit1_ID")
Set data01=HMIRuntime.Tags ("Unit1_Type")
Set data02=HMIRuntime.Tags ("Unit1_Active")
Set data03=HMIRuntime.Tags ("Unit1_Draw")
Set data04=HMIRuntime.Tags ("Unit1_Weight")
Set data05=HMIRuntime.Tags ("Unit1_OP10Num")
Set data06=HMIRuntime.Tags ("Unit1_OP20Num")
Set data07=HMIRuntime.Tags ("Unit1_OP30Num")
Set data08=HMIRuntime.Tags ("Unit1_OP40Num")
Set data09=HMIRuntime.Tags ("Unit1_OP50Num")
'下面为将data10-19值写入data00-09中。
data00.read
data00.write data10
data01.read
data01.write data11
data02.read
data02.write data12
data03.read
data03.write data13
data04.read
data04.write data14
data05.read
data05.write data15
data06.read
data06.write data16
data07.read
data07.write data17
data08.read
data08.write data18
data09.read
data09.write data19
'ScreenItems("静态文本4").text = data1.read '读取数据在静态文本中输出
'ScreenItems("静态文本5").text = data2.read
'ScreenItems("静态文本6").text = data3.read
'数据库操作完的结束语句,为标准格式语句。
Set oRs=Nothing
conn.Close
Set conn=NothingEnd Function

之后给动作添加触发器

测试效果

当点击获取设定配方值时,其结果显示与配方表一致。


http://chatgpt.dhexx.cn/article/uZQJX6Hm.shtml

相关文章

如何彻底修改SQL server的数据库名

公司自有的云服务器上的SQL server数据库里,建立了不少项目的数据库,最近需要把一个项目的最新版本代码同步到服务器上,发现本地使用的数据库名,在云服务器上已经存在了,且被用于开发其他项目的demo,为了保…

领域驱动设计在讲什么

概述 概念可以简单描述某类事物,这类事物可以是实体也可以是问题。领域驱动设计是为了管理系统复杂性问题而生的一套方法论。 随着业务系统的复杂性不断提高,系统的性能和灵活性要求也会越来越高,如何构建一个扩展性强、可用性高的业务系统…

SpringBoot-DDD领域驱动设计的概念

SpringBoot-DDD领域驱动设计的概念 大家都知道软件开发不是一蹴而就的事情,我们不可能在不了解产品(或行业领域)的前提下进行软件开发,在开发前通常需要进行大量的业务知识梳理,然后才能到软件设计的层面,最后才是开发。而在业务…

领域驱动设计--领域驱动设计到数据建模实践(十)

----- 学习笔记 ----- 过去,系统的软件设计是以数据库设计为核心,当需求确定下来以后,团队首先开始进行数据库设计。因为数据库是各个模块唯一的接口,当整个团队将数据库设计确定下来以后,就可以按照模块各自独立地进行…

领域驱动模型设计(二)

目录 领域事件 领域、子域、核心域、通用域和支撑域 限界上下文 划分限界上下文 数据流转 上下文映射图 上下文集成 上一篇粗略地介绍了为什么需要使用领域驱动模型设计?下面我们将一一讲解下领域驱动设计中的一些比较难懂,但是却十分基础的概念…

什么是DDD(领域驱动设计)?

领域驱动设计的基本概念 领域驱动设计作为一个针对大型复杂业务系统的领域建模方法体系(不仅限于面向对象的领 域建模),它改变了传统软件开发工程师针对数据库建模的方式,通过面向领域的思维方式,将要 解决的业务概念…

实现领域驱动

什么是领域驱动? 领域驱动设计 (domain-driver-design) 是有别于MVC开发模式的一种思想,它是面向对象编程的一种表现形式,请记住:领域驱动是一种思想,而不是技术! 领域驱动核心是通过对模型抽象出属性和行…

浅析 DDD 领域驱动设计

一、前言 最近公司一场有关于领域驱动设计的技术分享会,主要讲解了服务的划分,Restful API的设计,如何将抽象具有统一业务的范畴的Model,使其模块化,同时能够提炼组合多个模块,使得业务能够独立服务化&…

领域驱动设计-架构篇

目录 1、软件架构概述 1.1 软件架构概念 1.2 软件架构分类 1.3 软件架构模式 1.4 软件架构风格 2、领域驱动软件架构 2.1 架构风格 六边行架构(领域驱动设计首选) 为什么选择REST架构 松耦合 可伸缩性 易用性 约束性 2.2 架构模型 命令和…

DDD领域驱动设计

DDD领域驱动设计是什么 1 DDD是什么? DDD是领域驱动设计,是Eric Evans于2003年提出的,离现在有17年。 2 为什么需要DDD 当软件越来越复杂,实际开发中,大量的业务逻辑堆积在一个巨型类中的例子屡见不鲜,…

【领域驱动设计】三分钟搞懂领域驱动设计

今天的企业应用程序无疑是复杂的,并依赖一些专门技术(持久性,AJAX,Web服务等)来完成它们的工作。作为开发人员,我们倾向于关注这些技术细节是可以理解的。但事实是,一个不能解决业务需求的系统对…

领域驱动设计(DDD,Domain-Driven Design)

领域驱动设计 前言正文领域驱动设计基本概念什么是领域模型?什么是领域服务(Domain Service)?什么是领域事件? 秒杀项目中的领域分析一、秒杀活动领域设计秒杀活动领域模型领域服务领域事件 二、秒杀品领域设计领域模型…

领域驱动(自己理解)

代码层级编写规范 1、什么是领域驱动? 核心是维护一个反应领域概念的模型,然后通过大量模式来指导模型设计与开发。 一般过程:通过产品同学所写出的prd,利用领域模型的概念与业务相结合,完善出xmind,现在…

DDD领域驱动设计详解

DDD领域驱动设计详解 1. 领域驱动概述1.1 领域驱动简介1.2 领域驱动优点1.3 领域驱动解决复杂度方式1.4 领域驱动疑问 2. 领域驱动核心知识2.1 领域知识概念2.2 领域战略战术设计 3. 领域驱动战略设计3.1 战略设计概述3.2 领域与子域3.3 限界上下文3.4 领域场景分析3.5 四色建模…

领域驱动介绍

大纲 软件设计发展史什么是领域驱动设计领域驱动设计解决什么问题领域驱动设计包含哪些要素领域驱动设计的架构样例分析 软件设计发展史 单体->前后端->微服务->服务网格 SSH->ssm->spring boot-> SideCar/ Istio 单体 早期功能侧重功能实现 ESB 基于服…

阿里云负载均衡简介和购买使用流程

目录 一,阿里云负载均衡简介 二,阿里云准备工作 三,阿里云负载均衡原理和说明 四,阿里云负载均衡应用场景说明 五,阿里云负载均衡特点和优势 六,阿里云负载均衡应用场景 七,总结 一&…

阿里云负载均衡【SLB】使用实践方案

负载均衡(Server Load Balancer,下文简称 SLB)的引入,可以降低单台云服务器 ECS(下文简称 ECS)出现异常时对业务的冲击,提升业务的可用性。同时,结合弹性伸缩服务,通过动…

阿里云负载均衡

1.环境搭建 准备两台ECS 然后在ECS中配置http服务 yum install httpd -y echo "this is wwq2"> /var/www/html/index.html 2.负载均衡 进入负载均衡控制台 创建负载均衡实例 配置监听 并且添加服务器 测试

使用阿里云负载均衡SLB还需要自己配置Nginx吗?

购买阿里云负载均衡SLB后,还需要自己设置Nginx吗?不需要,阿里云负载均衡SLB本身就是流量转发产品,不需要自己配置Nginx进行流量转发。负载均衡SLB将访问流量根据转发策略分发到后端多台云服务器ECS实例上,提高应用可用…

阿里云负载均衡实验

1.创建ECS 2.开放80端口 3.安装httpd起服务 yum install httpd -y echo " web passage.hostname -I" > /var/www/html/index.html //hostname -I 查看IP地址 systemctl start httpd [rootiZbp10x14xc3r5wy59stlkZ ~]# curl localhost web passage.172.18.180.10…