用组态王报表.doc
- 文档编号:384522
- 上传时间:2022-10-09
- 格式:DOC
- 页数:6
- 大小:303KB
用组态王报表.doc
《用组态王报表.doc》由会员分享,可在线阅读,更多相关《用组态王报表.doc(6页珍藏版)》请在冰豆网上搜索。
用组态王报表实现显示设备启动、停止时间和运行时长的方法
在对设备的状态进行监控中,往往要取得一些参数来记录和分析设备的运行状况。
这其中就包括设备的启动时间、停止时间和运行的时长。
当然,组态软件不会有这样的功能,让我们轻易实现。
不过,通过组态软件的报表功能,再通过二次开发,写一些脚本语言。
实现起来倒也不难。
以下,以组态王为例,是对操作过程的描述,希望能够对需要的人有一些帮助。
总体思路:
以一个项目为例。
在这个工程中,有21台设备的运行状态需要记录,他们的运行状态依次记录在报表中。
报表中的每一行都表示,此设备的一个运行周期。
由于设备状态在报表中依次排列,因此需要相应的变量来保存该设备状态所在的行数。
这样,当停止该设备时,才能将“停止时间”和“运行时长”填充到正确的位置。
这样,就需要建立21个内存整形变量。
由于报表中的记录依次排列,因此还需要一个变量来保存报表中最后一条记录的行数,这样才能顺序填充记录。
1、 新建报表,并命名为“报表1”。
2、 创建内存整形变量。
21个内存变量分别保存21个设备状态所在的行数。
1个内存变量保存报表中最后一条记录的行数。
3、 编写自定义函数,好处是减少代码量,修改方便。
脚本内容具体如下
//"var"是变量的名称,"name"是要显示在报表中的字符串,"varRow"是保存记录的行数
//用年月日,时分秒,系统变量来组合形成日期。
//不用日期变量,因为其格式长度不确定,在后来的分解中会很麻烦。
stringstrY=StrFromInt(\本站点$年,10);
stringstrM=StrFromInt(\本站点$月,10);
stringstrD=StrFromInt(\本站点$日,10);
stringstrH=StrFromInt(\本站点$时,10);
stringstrMi=StrFromInt(\本站点$分,10);
stringstrS=StrFromInt(\本站点$秒,10);
//确定日期的格式,并使长度和位置固定
if(\本站点$月<10) strM="0"+strM;
if(\本站点$日<10) strD="0"+strD;
if(\本站点$时<10) strH="0"+strH;
if(\本站点$分<10) strMi="0"+strMi;
if(\本站点$秒<10) strS="0"+strS;
//组合,定义格式
stringstr=strY+"-"+strM+"-"+strD+""+strH+":
"+strMi+":
"+strS;
//启动设备时,将“序号”、“名称”、“启动时间”填充到报表中
if(var==1)
{
longnum=报表当前行-1;
stringid=StrFromInt(num,10);
ReportSetCellString("报表1",报表当前行,1,id);//序号
ReportSetCellString("报表1",报表当前行,2,name);//名称
ReportSetCellString("报表1",报表当前行,3,str);//开始时间
varRow=报表当前行;//所在行=报表当前行
报表当前行=报表当前行+1;
}
//停止设备时
else
{
stringstartStr=ReportGetCellString("报表1",varRow,3);//从报表中取得开始时间
//开始时间转换秒 2011-05-0612:
23:
34
stringmidY=StrMid(startStr,1,4);
stringmidM=StrMid(startStr,6,2);
stringmidD=StrMid(startStr,9,2);
stringmidH=StrMid(startStr,12,2);
stringmidMi=StrMid(startStr,15,2);
stringmidS=StrMid(startStr,18,2);
longlY=StrToInt(midY);
longlM=StrToInt(midM);
longlD=StrToInt(midD);
longlH=StrToInt(midH);
longlMi=StrToInt(midMi);
longlS=StrToInt(midS);
longstartTime=HTConvertTime(lY,lM,lD,lH,lMi,lS);
longendTime=HTConvertTime(\本站点$年,\本站点$月,\本站点$日,\本站点$时,\本站点$分,\本站点$秒);//结束时间转换秒
//计算时间差
longtimeLength=endTime-startTime;//单位秒
//秒转换为小时
//timeLength=timeLength/3600;
stringendStr=StrFromInt(timeLength,10)+"秒";
//将“停止时间”和“运行时长”填充到报表中
ReportSetCellString("报表1",varRow,4,str);//结束时间
ReportSetCellString("报表1",varRow,5,endStr);//时间长度
}
4、 建立设备启动或停止的运行事件命令。
只需调用自定义函数,并将填写相应的变量即可。
如:
SetReport(\本站点冰水循环泵2运行,"冰水循环泵2",\本站点冰水循环泵2所在行);
5、 运行程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 组态 报表