【世纪星秘笈】定时报表
研发部 孙辉
在一个报表系统中,除了报表的展现、查出等功能外往往还需要能定时打印报表,今天我就举例给大家说说世纪星组态软件是如何实现定时打印。
一、简介
1 用途
工厂里一般实行每天三班制,每个班8个小时,换班时间为每天的8点,16点,24点。换班时一般需要打印出本班生产情况的报表。
2 特点
◆ 定时打印,每天三次。
◆ 表格数据来自历史记录文件。
3 关于历史记录文件
◆ 世纪星采集的数据以文件的形式保存在计算机上,以备日后查询使用。一般以.IDX和.LGH为后缀的即为历史数据记录。
◆ 需要记录的数据要配置记录属性,系统默认是不记录。
这里有三个选项:
按灵敏度记录:只有当该数据变量的值变化幅度超过“数据变化灵敏度”时,系统才会记录。定时记录:按一定时间记录,这里的时间单位是秒。
二 实例
1 要求与说明
测点TC01,TC02,TC03,要求每10秒打印一次,从打印时刻起前10秒为起始时间,表格采样3次,间隔1秒。
2 样本如下,见图2 。
3 查询历史数据
zgSetHistDataParam( "Report", 起始_Year, 起始_Month, 起始_Day, 起始_Hour, 起始_Minute, 起始_Second, 终止_Year, 终止_Month, 终止_Day, 终止_Hour, 终止_Minute, 终止_Second, 时间间隔); ——历史数据表格时间参数设置
zgHistDataFlash("Report");——历史数据表格刷新
4 打印函数
zgPrint("Report",2);
5 自动打印事件触发:
可以选择两种方式触发:
◆ 利用定时器来触发
◆ 系统时间触发
1)首先是定时器的应用:
先触发定时器工作,可以在应用程序命令语言的启动状态下写入:TimerFlag=1;触发定时器。
在应用程序命令语言中的运行状态中写命令
2)系统时间触发:
数据改变命令语言中写如下代码:
6 补充说明
以上为演示实验,如果需要打印班报表,配置如下
1) 触发方式
8小时触发一次打印事件:
2) 表格数据
每个测点采样8次,间隔3600秒,起始时间可以用函数DateTimeCompute( Year, Month, Day, Hour, Minute, Second, TimeLength, Mode )转化。
起始_Year= DateTimeCompute( $年, $月, $日, $时, $分, $秒, 28800, 1 );
起始_Month= DateTimeCompute( $年, $月, $日, $时, $分, $秒, 28800, 2 );
起始_Day= DateTimeCompute( $年, $月, $日, $时, $分, $秒, 28800, 3 );
起始_Hour= DateTimeCompute( $年, $月, $日, $时, $分, $秒, 28800, 4 );
起始_Minute= DateTimeCompute( $年, $月, $日, $时, $分, $秒, 28800, 5 );
起始_Second= DateTimeCompute( $年, $月, $日, $时, $分, $秒, 28800, 6 );
终止时间为系统时间。
3)后台自动打印
打印时不要弹出对话框,到时间自动打印,不要人工干预。
打印函数:
zgPrint("Report",2);