用组态王报表_图文


用组态王报表实现显示设备启动、停止时间和运行时长的方法

在对设备的状态进行监控中, 往往要取得一些参数来记录和分析设备的运行状况。 这其中就 包括设备的启动时间、停止时间和运行的时长。当然,组态软件不会有这样的功能,让我们 轻易实现。不过,通过组态软件的报表功能,再通过二次开发,写一些脚本语言。实现起来 倒也不难。以下,以组态王为例,是对操作过程的描述,希望能够对需要的人有一些帮助。

总体思路:以一个项目为例。在这个工程中,有 21 台设备的运行状态需要记录,他们的运 行状态依次记录在报表中。报表中的每一行都表示,此设备的一个运行周期。由于设备状态 在报表中依次排列,因此需要相应的变量来保存该设备状态所在的行数。这样,当停止该设 备时,才能将“停止时间”和“运行时长”填充到正确的位置。这样,就需要建立 21 个内存整 形变量。 由于报表中的记录依次排列, 因此还需要一个变量来保存报表中最后一条记录的行 数,这样才能顺序填充记录。

1、 新建报表,并命名为“报表 1”。

2、 创建内存整形变量。21 个内存变量分别保存 21 个设备状态所在的行数。1 个内存变量 保存报表中最后一条记录的行数。

3、 编写自定义函数,好处是减少代码量,修改方便。

脚本内容具体如下

//"var"是变量的名称,"name"是要显示在报表中的字符串,"varRow"是保存记录的行数 //用年月日,时分秒,系统变量来组合形成日期。 //不用日期变量,因为其格式长度不确定,在后来的分解中会很麻烦。 string strY=StrFromInt( \本站点$年, 10 ); string strM=StrFromInt( \本站点$月, 10 ); string strD=StrFromInt( \本站点$日, 10 );

string strH=StrFromInt( \本站点$时, 10 ); string strMi=StrFromInt( \本站点$分, 10 ); string strS=StrFromInt( \本站点$秒, 10 );

//确定日期的格式,并使长度和位置固定 if(\本站点$月<10) if(\本站点$日<10) if(\本站点$时<10) if(\本站点$分<10) if(\本站点$秒<10) strM="0"+strM; strD="0"+strD; strH="0"+strH; strMi="0"+strMi; strS="0"+strS;

//组合,定义格式 string str=strY+"-"+strM+"-"+strD+" "+strH+":"+strMi+":"+strS;

//启动设备时,将“序号”、“名称”、“启动时间”填充到报表中 if(var==1) { long num=报表当前行-1; string id=StrFromInt( num, 10 );

ReportSetCellString("报表 1", 报表当前行, 1, id);//序号 ReportSetCellString("报表 1", 报表当前行, 2, name);//名称 ReportSetCellString("报表 1", 报表当前行, 3, str);//开始时间

varRow=报表当前行;//所在行=报表当前行 报表当前行=报表当前行+1; } //停止设备时

else { string startStr=ReportGetCellString("报表 1", varRow, 3);//从报表中取得开始时间

//开始时间转换秒 2011-05-06 12:23:34 string midY=StrMid( startStr, 1, 4 ); string midM=StrMid( startStr, 6, 2 ); string midD=StrMid( startStr, 9, 2 );

string midH=StrMid( startStr, 12, 2 ); string midMi=StrMid( startStr, 15, 2 ); string midS=StrMid( startStr, 18, 2 );

long lY=StrToInt( midY); long lM=StrToInt( midM); long lD=StrToInt( midD);

long lH=StrToInt( midH); long lMi=StrToInt( midMi); long lS=StrToInt( midS);

long startTime= HTConvertTime(lY,lM,lD,lH,lMi,lS); long endTime= HTConvertTime(\本站点$年,\本站点$月,\本站点$日,\本站点$时,\本站点$分,\ 本站点$秒);//结束时间转换秒

//计算时间差 long timeLength=endTime-startTime;//单位秒 //秒转换为小时 //timeLength=timeLength/3600; string endStr=StrFromInt( timeLength, 10 )+"秒";

//将“停止时间”和“运行时长”填充到报表中 ReportSetCellString("报表 1", varRow, 4, str);//结束时间 ReportSetCellString("报表 1", varRow, 5, endStr);//时间长度

}

4、 建立设备启动或停止的运行事件命令。 只需调用自定义函数, 并将填写相应的变量即可。 如:SetReport(\本站点冰水循环泵 2 运行,"冰水循环泵 2",\本站点冰水循环泵 2 所在行);

5、 运行程序


相关文档

组态王报表
组态王整点报表代码
组态王教学-报表与打印
组态王报表(课件)
组态王报表()解析
报表系统-组态王报表系统
组态王历史报表、
组态王报表导入导出
组态王保存报表
基于组态王的Excel工业报表系统
电脑版