WinCC与Mysql原来可以这样玩
文章目录
- 1 环境
- 1 软件&环境需求
- 2 VBS脚本
- 2.1 wincc中集成Excel对象
- 2.2 链接数据库,并插入实时数据(ADODB)
- 2.2.1 测试代码
- 2.2.2 封装成函数
- 2.2.3 动作中调用函数进行插入
- 3 取出数据,填充excel,存储并展示
1 环境
1 软件&环境需求
win10 OS
mysql 5.6~5.7
mysql ODBC connector
navicate
wincc 7.5 集成VBS
2 VBS脚本
2.1 wincc中集成Excel对象
Excel 对象的根对象是 Excel.application
excel.application->workbook->sheet->cell
' 在Wincc的起始画面的打开画面事件中写入下面脚本
' 创建 Excel Application并加入DataSet,以便在不同画面或画面窗口中访问。
Sub OnOpen() Dim xlApp
Dim DSExist
Dim iOn Error Resume Next '出现错误继续执行
'检查 Excel 是否已运行,若无则新建应用,以防止重复运行 Exce
Set xlApp = GetObject("Excel Application")
If Typename(xlApp) <> "Application" ThenSet xlApp = CreateObject("Excel.Application")
End If'检查 DataSet 中是否已有 xlApp,若无则添加
With HMIRuntime.DataSetFor i = 1 To .CountIf StrComp(.item(i).Name,"xlApp",1) = 0 ThenDSExist = 1i = .CountEnd IfNextIf DSExist = 0 Then .Add "xlApp",xlApp
End WithEnd Sub
2.2 链接数据库,并插入实时数据(ADODB)
2.2.1 测试代码
Option Explicit
Function action
On Error Resume Next
Dim conn, rs, com, sql
Dim water, power, medicine
Dim a
Dim b
a = Now
b = CStr(a)water = HMIRuntime.Tags("report1.water").Read
power = HMIRuntime.Tags("report1.power").Read
medicine = HMIRuntime.Tags("report1.medicine").ReadSet conn = CreateObject("ADODB.Connection")conn.ConnectionString = "Driver={MySQL ODBC 8.0 Unicode Driver};server=localhost;database=test;uid=root;pwd=root;option=3"conn.CursorLocation = 3conn.Open'Msgbox conn.stateSet rs = CreateObject("ADODB.RecordSet")'sql = "select * from report"sql = "insert into report (addr, time, power, water, medicine) values(1,"&"'"& b & "'"& "," & power & "," & water & "," & medicine & ")"'sql = "insert into report (addr, time, power, water, medicine) values(1,2,3,4,5)"'Msgbox sql'Msgbox sqlconn.Execute sql 'rs.Open sql,conn,1,3'Msgbox (rs.state)Set conn = Nothing
Set rs = NothingEnd Function
2.2.2 封装成函数
Sub insert(sql)
Dim conn
On Error Resume Next
Set conn = CreateObject("ADODB.connection")
With conn.ConnectionString = "Driver={MySQL ODBC 8.0 Unicode Driver};server=localhost;database=test;uid=root;pwd=root;option=3".CursorLocation = 3.Open.Execute sql
End With
Set conn = Nothing
End Sub
2.2.3 动作中调用函数进行插入
Option Explicit
Function action
On Error Resume Next
Dim addr : addr = "PAC加药间I"
Dim medicine_A : medicineA = HMIRuntime.tags("FT0404_F.3_Feedback").Read/3600
Dim medicine_B : medicineA = HMIRuntime.tags("FT0405_F.3_Feedback").Read/3600
Dim medicine_total : medicine_total = medicine_A + medicine_BDim sql
sql = "insert into report (addr, time, power, water, medicine) " &_"values(" &"'"& addr &"'" &","&"'"& CStr(Now) & "'"& "," & "Null" & "," & "Null" & "," & 1 & ")" &"," &_"("&"'"&addr&"'"&","&"'"& CStr(Now) & "'"& "," & "Null" & "," & "Null" & "," & 1 & ")"
'Msgbox sql
insert(sql)End Function
3 取出数据,填充excel,存储并展示
Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)
On Error Resume Next
Dim conn,rs,sql
Dim excelSet conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.RecordSet")conn.ConnectionString = "Driver={MySQL ODBC 8.0 Unicode Driver};server=localhost;database=test;uid=root;pwd=root;option=3"conn.CursorLocation = 3conn.Open'Msgbox (conn.State)sql = "select addr, concat(Year(Time),'-',Month(Time),'-',Day(Time),' ',Hour(Time), ':00', ':00') As Time ,avg(power), avg(water), avg(medicine)" &_"from report group by Year(Time), Month(Time), Day(Time), Hour(Time);"'Msgbox sqlrs.Open sql,conn,1,3'Msgbox(rs.State)Dim m m = rs.RecordCount'Msgbox(m)Dim xlApp, xlPath, xlFile, xlBook, xlSheet
Dim i,t
Dim objFSO, objFlexGrid, objProcessBarSet objFSO = CreateObject("Scripting.FileSystemObject")xlPath = HMIRuntime.ActiveProject.Path & "\Excel"If Not objFSO.FolderExists(xlPath) ThenobjFSO.CreateFolder(xlPath)
End IfSet objFSO = NothingSet xlApp = HMIRuntime.DataSet("xlApp").Value
Set xlBook = xlApp.Workbooks.Add
xlApp.Visible = False
Set xlSheet = xlBook.WorkSheets(1)With xlSheet.Activate.Columns(1).ColumnWidth = 15.Columns(2).ColumnWidth = 30.Columns(3).ColumnWidth = 10.Columns(4).ColumnWidth = 10.Columns(5).ColumnWidth = 10.Range("A:E").HorizontalAlignment = 3.Range("A:E").Borders.LineStyle = 1.Range("A1:E1").Interior.ColorIndex = 37.Cells(1,1) = "工艺段".Cells(1,2) = "时间".Cells(1,3) = "电能消耗".Cells(1,4) = "水源消耗".Cells(1,5) = "药品消耗"rs.MoveFirstFor i = 1 To m.Cells(i+1, 1) = rs.Fields(0).Value.Cells(i+1, 2) = rs.Fields(1).Value.Cells(i+1, 3) = Round(rs.Fields(2).Value,1).Cells(i+1, 4) = Round(rs.Fields(3).Value,1).Cells(i+1, 5) = Round(rs.Fields(4).Value,1)rs.MoveNextNext.Cells(m+2, 1) = "合计".Cells(m+2, 3) = "=SUM(C2:C"&m&")".Cells(m+2, 4) = "=SUM(D2:D"&m&")".Cells(m+2, 5) = "=SUM(E2:E"&m&")"End Witht = Now
xlFile = Right("20"&Year(t),4)&"."&Right("0"&Month(t),2)&"."&Right("0"&Day(t),2)&"."&Right("0" & Hour(t),2)&"."&Right("0"&Minute(t),2)&"."&Right("0"&Second(t),2)&"."&"htm"
Msgbox(xlPath & xlFile)
xlBook.SaveAs xlPath&"\"&xlFile,44
xlApp.WorkBooks.Close
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = NothingDim wbCtrlSet wbCtrl = ScreenItems("控件1")wbCtrl.MyPage = xlPath&"\"&xlFileEnd Sub
WinCC与Mysql原来可以这样玩相关推荐
- MySQL还能这样玩---第一篇之你所不知道的命令
MySQL还能这样玩---第一篇之你所不知道的命令 命令篇 DDL---表定义相关命令操作 show create table 表名 ---查看创建表的SQL语句 alter table 表名 mod ...
- WinCC连接MySQL
1.测试环境 系统:Windows Server 2008R2 WinCC: V7.2 MySQL:MySQL 5.5.62 Community Server Wincc 7.2 MySQL 5.5. ...
- mysql映射表_[玩转MySQL之四]MySQL缓存机制
一.前言 在当今的各种系统中,缓存是对系统性能优化的重要手段.MySQL Query Cache(MySQL查询缓存)在MySQL Server中是默认打开的,但是网上各种资料以及有经验的DBA都建议 ...
- 手把手教你mysql从入门到玩转
开发环境准备 首先安装mysql环境,本文使用的开发工具是Navicat Premium,这是一款数据库管理工具,这个工具安装非常方便.使用也很简单,当然SQL Server Management S ...
- wincc连接mysql数据库案例_WINCC读写SQL数据库的例子-工业支持中心-西门子中国
本回答有11位钻石用户推荐 回答者: zhangli0 - 超级顾问  第15级 2019-07-25 16:40:06 ''当前为按钮触发, ''创建一张当前日期命名 ...
- golang物联网_使用golang谷歌云平台和grafana监控物联网设备
golang物联网 In this article, we'll be setting up step by step, a monitoring environment for IoT device ...
- 阿里用回mysql_回mysql方式
与慢速设备通讯异步化方案 与慢速设备通讯异步化方案.pdf像MySQL.被对接的银行系统等,都可称作慢速设备.它们的共同特点是只提供了同步调用接口,而且响应通常会比较慢. 一般业务系统在业务线程或进程 ...
- MySQL 中删除的数据都去哪儿了?
不知道大家有没有想过下面这件事? 我们平时调用 DELETE 在 MySQL 中删除的数据都去哪儿了? 这还用问吗?当然是被删除了啊 那么这里又有个新的问题了,如果在 InnoDB 下,多事务并发的情 ...
- Mysql的收费方式
网络上多数朋友担心甲骨文会对MySQL软件采用收费模式,多数朋友也不清楚MySQL开源到底是什么模式,开源=免费嘛?是很多的疑问,MySQL是遵守双重协议的,一个是GPL授权协议,一个是商用授权协议( ...
最新文章
- 第八章 异常控制流 笔记
- flask源码学习-路由的注册与请求处理的过程
- 关于ASP无组件上传在2003下出错
- JS获取上传文件的大小
- UIBarButtonItem使用困惑
- 6月17 表单验证
- oracle中作业无法执行,Oracle运行JOB报ORA-27492:无法运行作业
- antd提交表单_表单序列化
- uml图中的各种箭头_一次搞懂建模语言UML
- 博客文章列表(一)——JAVA
- Web开发的那点事--软件复用
- java annotation list_java-注解annotation
- java io流读取txt文件_Java使用IO流读取TXT文件
- php 错误提示模板,php 关闭错误提示方法总结与性能分析
- python - 接口自动化测试 - MysqlUtil - 数据库操作封装
- mysql 中文 phpmyadmin_mysql中文乱码问题,phpmyadmin操作解决方法
- CSS过滤器(CSS filters)
- 对《致加西亚的信》的异议
- mummer基因组共线性分析详解
- 假若明天来临——《AI.未来》读后感3900字