首页 上一页 1 2 下一页 尾页

用组态王报表功能实现显示设备启动、停止时间和运行时长的方法(数据库,不使用内存变量) 点击:15671 | 回复:29



zhongxxx

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:10帖 | 20回
  • 年度积分:11
  • 历史总积分:274
  • 注册:2007年1月02日
发表于:2013-11-29 13:54:20
楼主

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

之前写过一个方案,使用大量的内存变量和报表来实现。后经过思考,找到了一种更加方便的方法,可以不用建立那么多的内存变量,使用数据库就可以完成该方案的实施。使用组态王的“KVADODBGRID”控件将数据库表中的数据显示出来。

1、使用access数据库,建立数据库表,命名“DeviceInfo”。


2、组态王建立内存变量。


3、创建记录体。


4、关联数据源。

5、自定义函数。


函数内容如下所示。

if (var==1)

{

//写入数据库,字段赋值

\\本站点\DB_DESC=name;

\\本站点\DB_START=\\本站点\$日期+" "+\\本站点\$时间;

\\本站点\DB_END=" ";

\\本站点\DB_LENGTH=" ";

SQLInsert( DeviceID, "DeviceInfo", "BIND"  );//向数据中,插入一条记录

}

else

{

string whrStr="描述='"+name+"' and 结束时间='" + " '" ;

string selStr="select * from DeviceInfo where " + whrStr;

SQLSetStatement( DeviceID, selStr);

SQLExecute( DeviceID, "BIND",0 );


string startStr = \\本站点\DB_START;

//开始时间转换秒 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;//单位秒

string endStr=StrFromInt ( timeLength, 10 )+"秒";


//写入数据库,所有字段重新赋值

\\本站点\DB_END=\\本站点\$日期+" "+\\本站点\$时间;

\\本站点\DB_LENGTH=endStr;

//设置查询条件,当条件相同时更新数据库中的记录

SQLUpdate( DeviceID, "DeviceInfo", "BIND", whrStr);

}

6、数据改变命令语音,引用自定义函数。

7、运行






沙砂

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 13回
  • 年度积分:0
  • 历史总积分:73
  • 注册:2018年5月23日
发表于:2018-06-05 00:15:50
21楼

谢谢 老师 学习了

jingbaoquan

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 226回
  • 年度积分:0
  • 历史总积分:139
  • 注册:2011年6月14日
发表于:2018-06-15 09:47:27
22楼

好专业哟!谢谢楼主的分享

米斯特杨

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2014年6月04日
发表于:2019-01-11 09:54:44
23楼

老师你好!请教一下,这个数据库文件需要配置吗?是不是要和系统的ODBC关联呢?如何关联?万分感谢!

ww4649

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 3回
  • 年度积分:0
  • 历史总积分:41
  • 注册:2020年8月26日
发表于:2021-12-15 11:26:06
24楼

我的结束时间无法显示出来是什么原因呢老师

gk2017

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 775回
  • 年度积分:47
  • 历史总积分:100
  • 注册:2019年1月19日
发表于:2022-03-01 08:20:12
25楼

路过

金时

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:968
  • 历史总积分:1018
  • 注册:2021年11月28日
发表于:2022-04-07 18:08:07
26楼

老师你好,我按照你这个做的一个测试,我始终只能写进去一组数据,然后不管这么拨动两个测试开关它就是没有新的数据写入,另外就也查不到相关的数据。截图.png

小起子

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 400回
  • 年度积分:2
  • 历史总积分:123
  • 注册:2017年4月06日
发表于:2024-05-28 08:53:32
28楼

谢谢老师分享,收益匪浅。

语凡

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 375回
  • 年度积分:0
  • 历史总积分:125
  • 注册:2013年2月23日
发表于:2024-06-09 08:41:56
29楼

很受用。谢谢楼主!!!

回复本条

    

热门招聘
相关主题

官方公众号

智造工程师
    
    首页 上一页 1 2 下一页 尾页