V7.5报表(现场调试复盘)
- 一、案例展示
- 二、制作思路
- 三、项目建立
- 3.1创建报表模板
- 3.2新建内部变量
- 3.3新建画面
- 四、脚本讲解
- 4.1 数据确认 按钮脚本
- 4.2 项目模板脚本
- 五、运行展示
- 六、项目文件下载
一、案例展示
上面图一为运行的展示效果,其中有输入输出框有感叹号,是因为通讯的断开!
图二:数据保存到指定的excel中!
图三:excel已时间+合同号进行保存!
二、制作思路
之前也写了一篇报表的制作,是从西门子论坛中找到的资料进行测试编写的,没有现场使用过。这个版本的报表是在上海某集团使用的。
之前的报表,主要思路是,把生产的数据存到SQL中,然后wincc在已特定条件(我使用的是时间)读取SQL的数据,存到excel中,然后再已时间命名保存!
这次在做报表之前,询问了使用python写人工智能的朋友,这种只简单记录生产数据的报表是否能跳过SQL,而直接写数据到excel中,然后在保存,这一想法得到了肯定,然后在此项目成功的实现,希望此文章对您能有用!
三、项目建立
3.1创建报表模板
1、首先在项目工程中新建一个文件夹
2、在此文件夹下新建报表模板和日生产报表文件夹
3、在报表模板中创建一个EXCEL,名称为:3D检测报表模板
4、表格的内容根据甲方要求进行调整
其中浅蓝色背景的表格,是需要工人现场输入的数据!
白色部分是需要自动计算出的!
3.2新建内部变量
因公司问题,所以这里我重新整理一份测试版,望大家谅解!
内部变量新建一个TEST变量组,里面添加变量
3.3新建画面
四、脚本讲解
其中有三个地方需要写脚本1、数据确认按钮 2、项目模板 3、全局动作中
4.1 数据确认 按钮脚本
此脚本作用是把手动输入的合同号等,输入excel中,
脚本在单击鼠标处编写
Sub OnClick(Byval Item)
‘--------------------- 生产数据清零 --------------------’
HMIRuntime.Tags(“生产总根数”).write 0 '总根数进行清零
HMIRuntime.Tags(“好料根数”).write 0 '好料根数进行清零
HMIRuntime.Tags(“坏料根数”).write 0 '坏料根数进行清零
HMIRuntime.Tags(“合格率”).write “0%” '合格率进行清零Dim Class_Shift,Manipulator,Contract_No,Steel_Grade,Inspection_Number,Heat_Number,Trial_Batch_Number,Norm,Standard,Length,speed
‘--------------------- 读取外部输入变量 --------------------’
Class_Shift = HMIRuntime.Tags(“班别/班次”).read
Manipulator = HMIRuntime.Tags(“操作者”).read
Contract_No = HMIRuntime.Tags(“合同号”).read
Steel_Grade = HMIRuntime.Tags(“钢种”).read
Inspection_Number = HMIRuntime.Tags(“检验号”).read
Heat_Number = HMIRuntime.Tags(“炉号”).read
Trial_Batch_Number = HMIRuntime.Tags(“试批号”).read
Norm = HMIRuntime.Tags(“规格”).read
Standard = HMIRuntime.Tags(“标准”).read
Length = HMIRuntime.Tags(“长度”).read
speed = HMIRuntime.Tags(“显示速度”).read
‘---------------------打开Excel模板 --------------------’
Dim objExcelApp,objExcelBook,objExcelSheet,a,b
Set objExcelApp =CreateObject(“Excel.Application”)
objExcelApp.Visible=True
Set a =objExcelApp.Workbooks.Open(HMIRuntime.ActiveProject.Path & “\report\报表模板\3D检测报表模板.xlsx”)
Set b =a.Worksheets(“Sheet1”)
b.Range(“F2”) = CStr(Year(Now)) & “年” & CStr(Month(Now)) &“月” & CStr(Day(Now)) &“日”
objExcelApp.Worksheets(“Sheet1”).Activate
‘---------------------向EXCEL写入数据的数据 --------------------’
With objExcelApp.Worksheets("Sheet1")
.cells(5,2).value = speed
.cells(5,4).value = 0
.cells(5,6).value = 0
.cells(5,8).value = 0
.cells(6,6).value = 0
.cells(2,2).value = Class_Shift
.cells(2,4).value = Manipulator
.cells(3,2).value = Contract_No
.cells(3,4).value = Steel_Grade
.cells(3,6).value = Inspection_Number
.cells(3,8).value = Heat_Number
.cells(4,2).value = Trial_Batch_Number
.cells(4,4).value = Norm
.cells(4,6).value = Standard
.cells(4,8).value = Length
End With
‘---------------------以日期命名,并保存到指定文件夹 --------------------’
objExcelApp.DisplayAlerts = False '对打开的文件,直接保存时,避免弹出对话框窗口,而是直接覆盖
Dim patch,filename
filename=CStr(“3D检测当日报表”)
patch= HMIRuntime.ActiveProject.Path & “\report\日生产报表”&filename&“.xlsx”
objExcelApp.ActiveWorkbook.SaveAs patch
objExcelApp.ActiveWorkbook.SaveAs HMIRuntime.ActiveProject.Path & “\report\日生产报表\web\日报表.htm”,44
objExcelApp.Workbooks.Close
objExcelApp.Quit
‘---------------------关闭Excel模板 --------------------’
Set objExcelApp= NothingDim wbCtrl
Set wbCtrl = HMIRuntime.Screens(“报表界面_TEST”).ScreenItems(“myweb”) '"Web"为Web控件名称
wbCtrl.Navigate HMIRuntime.ActiveProject.Path & “\report\日生产报表\web\日报表.htm”MsgBox “成功生成数据文件!”
End Sub
2、项目模板 3、全局动作中
4.2 项目模板脚本
Sub report
Dim good_running,bad_running,Running
good_running = HMIRuntime.Tags(“好管运行”).read Or HMIRuntime.Tags(“合格三星拨料运行”).read
bad_running = HMIRuntime.Tags(“坏管运行”).read Or HMIRuntime.Tags(“不合格三星拨料运行”).read
Running=good_running Or bad_runningIf Running Then
‘--------------------- 合格率计算 --------------------’
Dim Total_Number,OK_Number,NG_Number,Pass_Rate,HT,HT1
‘------- 数据读取 --------’
Total_Number = HMIRuntime.Tags(“生产总根数”).read
OK_Number = HMIRuntime.Tags(“好料根数”).read
NG_Number = HMIRuntime.Tags(“坏料根数”).read
NG_Number = HMIRuntime.Tags(“坏料根数”).read
HT = HMIRuntime.Tags(“TO_3D_合同号”).read
'------- 数据计算 --------'
Total_Number = Total_Number + 1
If good_running Then
OK_Number = OK_Number + 1
End If
If bad_running Then
NG_Number = NG_Number + 1
End If
Pass_Rate = OK_Number / Total_Number*100
Pass_Rate = FormatNumber(Pass_Rate, 2) & "%"
'MsgBox("查询到表格共有" & Total_Number &"行数据")
'------- 数据输出 --------'
HMIRuntime.Tags("生产总根数").write Total_Number
HMIRuntime.Tags("好料根数").write OK_Number
HMIRuntime.Tags("坏料根数").write NG_Number
HMIRuntime.Tags("合格率").write Pass_Rate
'--------------------- 写入日生产报表数据 --------------------'
'------- 打开当日报表 --------'
Dim objExcelApp,objExcelBook,objExcelSheet,a,b
Set objExcelApp =CreateObject("Excel.Application")
objExcelApp.Visible=True
Set a =objExcelApp.Workbooks.Open(HMIRuntime.ActiveProject.Path & "\report\日生产报表\3D检测当日报表.xlsx")
Set b =a.Worksheets("Sheet1")
b.Range("F2") = CStr(Year(Now)) & "年" & CStr(Month(Now)) &"月" & CStr(Day(Now)) &"日"
objExcelApp.Worksheets("Sheet1").Activate
'------- 向EXCEL写入数据的数据 --------'
Dim m,date_now,speed,data_Length,status_Code,status,number_of_errors
m=7+Total_Number
date_now=CStr(Year(Now))&"/"&CStr(Month(Now))&"/"&CStr(Day(Now))&"_"&CStr(Hour(Now))&":"&CStr(Minute(Now))&":"&CStr(Second(Now))
speed = HMIRuntime.Tags("SPEE").read
speed = speed/10 & "m/min"
data_Length = HMIRuntime.Tags("TO_3D_长度").read
data_Length = data_Length & "mm"
If good_running Then
status_Code = 1
status = "OK"
End If
If bad_running Then
status_Code = 0
status = "NG"
End If
number_of_errors = HMIRuntime.Tags("test_错误数").read
'MsgBox("查询m的值为:" & m)
With objExcelApp.Worksheets("Sheet1")
.cells(5,4).value = Total_Number
.cells(5,6).value = OK_Number
.cells(5,8).value = NG_Number
.cells(6,6).value = Pass_Rate
.cells(m,1).value = Total_Number
.cells(m,2).value = date_now
.cells(m,4).value = data_Length
.cells(m,5).value = status_Code
.cells(m,6).value = status
.cells(m,7).value = number_of_errors
End With
'MsgBox("查询m的值为:" & m)
'---------------------以日期命名,并保存到指定文件夹 --------------------'
objExcelApp.DisplayAlerts = False '对打开的文件,直接保存时,避免弹出对话框窗口,而是直接覆盖
Dim patch,filename
filename=CStr(Year(Now)) & "年" & CStr(Month(Now)) &"月" & CStr(Day(Now)) &"日" &"_"& HT
patch=HMIRuntime.ActiveProject.Path & "\report\日生产报表\"&filename&".xlsx"
objExcelApp.ActiveWorkbook.SaveAs patch
Dim patch1,filename1
filename1=CStr("3D检测当日报表")
patch1= HMIRuntime.ActiveProject.Path & "\report\日生产报表\"&filename1&".xlsx"
objExcelApp.ActiveWorkbook.SaveAs patch1
objExcelApp.ActiveWorkbook.SaveAs HMIRuntime.ActiveProject.Path & "\report\日生产报表\web\日报表.htm",44
objExcelApp.Workbooks.Close
objExcelApp.Quit
'---------------------关闭Excel模板 --------------------'
Set objExcelApp= Nothing
‘---------------------报表显示 --------------------’
Dim wbCtrl
Set wbCtrl = HMIRuntime.Screens(“报表界面_TEST”).ScreenItems(“myweb”) '"Web"为Web控件名称
wbCtrl.Navigate HMIRuntime.ActiveProject.Path & “\report\日生产报表\web\日报表.htm”End If
End Sub
五、运行展示
好管坏管各测试生产一次
六、项目文件下载
链接: 项目文件下载链接.
文章知识点与官方知识档案匹配,可进一步学习相关知识
MySQL入门技能树数据库组成表 33584