WinCC实现报表的不同方法及其应用专题探讨之方案汇总
更新时间:2024-05-07 15:37:01 阅读量: 综合文库 文档下载
- Wincc报表推荐度:
- 相关推荐
WinCC实现报表的不同方法及其应用专题探讨之方案汇总
请问版主,在wincc中怎么做才能把报表生成按日期的Excel文件?
用VBS脚本实现,就是把文件名称以变量的形式表示。参考
'关闭保存
Dim patch,filename
filename=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now))&CStr(Hour(Now))+CStr(Minute(Now))&CStr(Second(Now))
patch= \
objExcelApp.ActiveWorkbook.SaveAs patch
objExcelApp.Workbooks.Close
objExcelApp.Quit
Set objExcelApp= Nothing
对于Excel报表,用VBS最灵活,Excel定义好格式后wincc来填空,平均累计值就用Excel的功能。
Dim excelapp
Dim aa,bb,cc
Set excelapp = CreateObject(\
Set aa = HMIRuntime.tags(\
excelapp.visible = False'True
excelapp.workbooks.open \
bb = Now 'getcurrent_datetime()
aa.Read
MsgBox CStr(bb)
excelapp.cells(1,1).value = \
excelapp.cells(1,2).value = CStr(bb)
excelapp.cells(2,2).value = CStr(aa.value)
excelapp.cells(3,2).value = CInt(aa.value)
excelapp.cells(4,2).value = CSng(aa.value)
excelapp.cells(5,2).value = CDbl(aa.value)
excelapp.cells(6,2).value = CLng(aa.value)
excelapp.cells(3,3).value = ScreenItems(\
excelapp.cells(4,4).value = ScreenItems(\
cc = \+ Mid(CStr(bb), 12, 2)+ Mid(CStr(bb), 15, 2)+ Mid(CStr(bb), 18, 2) + \
MsgBox cc
excelapp.DisplayAlerts = False '对打开的文件,直接保存时,避免弹出对话框窗口,而是直接覆盖
excelapp.activeworkbook.saveas cc '根据当前日期时间,另存为新的文件
'excelapp.activeworkbook.save ’对打开的文件,直接保存
'excelapp.activeworkbook.saveAs \’直接另存为新的文件
excelapp.workbooks.close
excelapp.quit
Set excelapp = Nothing
我先上传一个报表吧!考虑到WINCC中实现此报表难度较大,通过是其他工程师利用VB程序编制而成的!
这个报表的数据采集没有难度;唯一的难度在于4班3倒后,每个月班的出勤日是不一样的,这样对于月报来说,计算出本月每个班的出勤日是需要些算法的。 数据的存储很重要。呵呵其实 凌波微步 大侠的这个报表就体现了这一点。
说实话,这个报表用WinCC完全可以实现。关键就是如何存储数据。
方法一 WinCC支持VBS脚本,其实通过VBS和VB本质是没有区别的,都是通过ADO方式,存储数据 格式化数据的存储。WinCC的用户归档说白了 就是WinCC提供的一个操作数据库表的工具。我们可以通过用户归档,创建数据库表。然后存储数据。显示的话通过报表系统的连接外部ODBC数据库,通过SQL脚本格式化输出。就ok了。
方法二这个报表的关键就在于如何确定班别和数据之间的关系。四班三运转在连续生产的行业是很常见的。我的解决思路钦庋模?
首先确定班别和数据的对应关系。
在WinCC归档的方式中有一种是通过事件触发的。
那么我们可以通过不同的用户登录来确定归档的启动或者停止,
WinCC中对应一个变量可以生成几个归档变量,那么我们就能确定班次和数据的关系。比如:一个变量A,在归档中我们可以建两个归档变量和它对应,一个是aa,一个是bb。A班用户登录时启动aa的归档,停止bb的归档;B班用户登录时启动bb归档,停止aa归档,依次类推。
至于得到数据的方法,可以使用WinCC的标准归档查询实现。数据的显示,通过WinCC报表的变量直接连接显示。
觉得和VB相比,方法各有千秋。但是这样就省去了多加一个应用程序了。 呵呵,看到各位大侠对报表做了很多方面的深刻讨论,也让我学习了很多。不过本人功底差,对数据库基本不懂。确实用数据库存储数据是比较安全的,但通过数据库来查询得出的“报表”,应该称之为查询结果吧。失去了报表本身的意义了。
较长一段时间,我也在思考和寻找WinCC里面做复杂报表的方法。WinCC自带的报表编辑器确实功能有限,还好WinCC本身功能是强大的,可以通过脚本来完成复杂报表功能。目前我也是这么做的。
我个人认为,在WinCC里面做复杂报表,并不急于去组态和编程;而是先弄清楚原始手工报表的制作过程。报表也就是时间和各类数据的交集的一张表格,手工报表就是通过人工将数据填入相应的格子里面,手工报表就是这么朴素。不过手工报表有n张相同的纸,拿在手上就好像一本书,或者像一块大砖头。呵呵!
目前我报表的思路如下:
1、用excel我们也做一个符合自己实际需要报表(日报)的空白模板,我称它为Day_Report.xls;相信各位大侠的excel表格都比我做的精美;我不懂关系数据库,但各位大侠肯定比我精通excel各单元格之间的加、减、乘、除,甚至更加复杂的运算,并把运算结果放在你需要放置的单元格内,关系数据之间的运算,要在excel模板里面预先设置好。我们要充分利用excel强大的数据处理能力!!!
2、在WinCC里面写一个全局脚本,在每天的00:00:01触发,执行复制Day_Report.xls并以此刻的年月日加载到模板文件名里面,将复制新生产的“Day_Report年月日.xls”存盘到你指定的目录。这样当天的空白日报文件也就有了。全
局脚本代码如下:(本人测试通过,仅供参考)
#include \
int gscAction( void ) {
#pragma code (\调用动态链接库
VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);
#pragma code ()
#pragma code(\调用动态链接库
VOID ShellExecuteA(HWND, LPCTSTR , LPCTSTR , LPCTSTR , LPCTSTR , INT);
#pragma code()
char FileName[30] = \
SYSTEMTIME sysTime;
__object* pExcel = NULL; //建立 pExcel 指针 用来对 EXCEL 进行操作
HWND handle=NULL;
handle=FindWindow(NULL,\运行系统 - \
GetLocalTime(&sysTime);
sprintf(FileName,\Time.wMonth,sysTime.wDay);
pExcel = __object_create(\
pExcel->Visible = 0;//控制生成的excel文件是否可见,当1时,生成excel文件时可见.
pExcel->Workbooks ->Open (\
pExcel->ActiveWorkbook->SaveAs(FileName);//存盘
//pExcel->ActiveWorkbook->PrintPreview();//可以预览
//pExcel->ActiveWorkbook->PrintOut();//直接打印
pExcel->Workbooks->Close();//关闭文件
pExcel->Quit();//退出Excel
__object_delete(pExcel);
return 0; }
3、再写一个全局脚本,整点触发,把你需要记录的变量写到“Day_Report年月日.xls”相应的单元格里面并存盘;这样就完成了报表的数据存储和打印。也就是说,我们可以在电脑里面存放一份报表,并打印一份报表。同样也实现了数据的存储。
相关脚本代码如下:(当时是以分钟来做测试的,仅供参考;注意此段代码缺少对其它excel进程的判断,在此脚本执行前,不要有其它excel应用!切记哦!!!呵呵。)
#include \
int gscAction( void ) { int i;
#pragma code (\调用动态链接库
VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);
#pragma code ()
#pragma code(\调用动态链接库
VOID ShellExecuteA(HWND, LPCTSTR , LPCTSTR , LPCTSTR , LPCTSTR , INT);
#pragma code()
char FileName[30] = \
SYSTEMTIME sysTime;
__object* pExcel = NULL; //建立 pExcel 指针 用来对 EXCEL 进行操作
HWND handle=NULL;
handle=FindWindow(NULL,\运行系统 - \
GetLocalTime(&sysTime);
//***********************************
SetTagWord(\
i=GetTagWord(\
if (i>26) { GetTagWord(\
else if (i<=26) {
sprintf(FileName,\Time.wMonth,sysTime.wDay);
pExcel = __object_create(\
pExcel->Visible = 0;//控制生成的excel文件是否可见,当1时,生成excel文件时可见.
pExcel->Workbooks ->Open (FileName);
pExcel->Worksheets(\Name\读取当前计算机名
pExcel->Worksheets(\tUser\读取当前操作员
pExcel->Worksheets(\
pExcel->Worksheets(\
pExcel->Worksheets(\
pExcel->Worksheets(\
pExcel->Worksheets(\
pExcel->Worksheets(\
pExcel->ActiveWorkbook->Save;//As(FileName);//存盘~
//pExcel->ActiveWorkbook->PrintPreview();//可以预览
//if (i>=27) { pExcel->ActiveWorkbook->PrintOut(); }//直接打印
pExcel->Workbooks->Close();//关闭文件
pExcel->Quit();//退出Excel
__object_delete(pExcel); }
return 0; }
日报有了,班报、月报,应该也就没有问题了吧!希望大家有什么好东东也一起拿出来分享一下,个人的智慧是有限的,大家的力量是无穷的。不要吝啬,多交流才有进步!
系统分类: 自动化软件 | 用户分类: 无分类 | 来源: 整理
正在阅读:
WinCC实现报表的不同方法及其应用专题探讨之方案汇总05-07
【配套K12】北京市东城区2016—2017学年高二数学下学期期末教学统一检测试题 理(含解析)05-21
领导对教师的评语02-24
荷塘月色教学设计(非常实用)07-09
夏日午后作文500字06-24
赞美祖国的句子10-13
彻底删除文件(Delphi源码)10-13
水电解质紊乱病例分析(1)11-10
2017年4月金融理论与实务真题06-08
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 报表
- 汇总
- 探讨
- 不同
- 及其
- 实现
- 方案
- 专题
- 方法
- 应用
- WinCC
- 中国地质大学 地质学基础教学大纲
- 家乡的变化
- 2011二级建造师工程施工管理考前密训资料
- 第2章 - 会计要素与会计等式 - 练习题及答案
- 基于SSH框架的网上花卉销售系统的设计与实现
- 内审员考试试题及答案
- 党性分析材料(41)-范文模板(1页)
- (强烈推荐)A级防火发泡水泥保温板项目可行性研究报告
- 《计量经济学》实验项目与主要内容
- 利用Proteus仿真PIC应用系统(蔡志明)
- 2018年部编版二年级语文下册第2单元知识点归纳
- 第四章 存货练习题工商练习
- 学校制度大全
- 10万方储油罐防腐保温施工
- 西南交大计算机图形学期末复习提纲
- 文学概论复习资料
- 天车培训—天车操作员内部安全培训考试试题2(doc)
- 江南大学现代远程教育 考试大作业 计算机网络
- 自体血清嫩肤祛皱原理
- 财务9月工作总结