V7.5报表

V7.5报表(现场调试复盘)

一、案例展示

图一:现场运行的展示上面图一为运行的展示效果,其中有输入输出框有感叹号,是因为通讯的断开!

图二图二:数据保存到指定的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= Nothing

Dim 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_running

If 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 人正在系统学习中
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值