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

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



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、运行






huoshi

  • 精华:0帖
  • 求助:22帖
  • 帖子:347帖 | 2576回
  • 年度积分:517
  • 历史总积分:23145
  • 注册:2020年3月27日
发表于:2013-11-29 14:55:47
1楼

谢谢老师分享受益匪浅!!!!!!!!!!!!!!!!

YINGGAOXIANG

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 24回
  • 年度积分:0
  • 历史总积分:17
  • 注册:2008年12月22日
发表于:2014-04-13 15:30:35
2楼

谢谢老师分享受益匪浅!!!!!!!!!!!!!!!!

wingonachi

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 2回
  • 年度积分:0
  • 历史总积分:35
  • 注册:2014年6月04日
发表于:2014-06-04 08:38:00
3楼

老师,我按你的步骤试,可是我发现那个"\\本站点\$日期+" "+\\本站点\$时间"显示的是2014-6-4类似这种的,就是说10以下的月日不会自动补0,所以无法正确提取字符啊。该怎么办?

zhongxxx

  • 精华:1帖
  • 求助:0帖
  • 帖子:10帖 | 20回
  • 年度积分:11
  • 历史总积分:274
  • 注册:2007年1月02日
发表于:2014-06-07 14:40:07
4楼

回复内容:

对: wingonachi 老师,我按你的步骤试,可是我发现那个"\\本站点\$日... 内容的回复!


windows系统有对日期时间格式的设置,在控制面板里。

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 72回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2014-06-19 10:20:07
5楼

谢谢了,事隔两年再发新贴,强悍

gbdajiaoban

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 81回
  • 年度积分:0
  • 历史总积分:87
  • 注册:2009年7月09日
发表于:2014-06-25 09:28:32
6楼

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

  • 精华:0帖
  • 求助:2帖
  • 帖子:9帖 | 7回
  • 年度积分:0
  • 历史总积分:56
  • 注册:2008年2月28日
发表于:2015-07-31 11:25:31
7楼

                                 good

mooncakexy

  • 精华:0帖
  • 求助:2帖
  • 帖子:5帖 | 14回
  • 年度积分:0
  • 历史总积分:54
  • 注册:2012年2月14日
发表于:2016-03-31 08:40:36
8楼

我正需要一个这样的系统,记录公司的设备运行状态。

18862486020

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 98回
  • 年度积分:22
  • 历史总积分:524
  • 注册:2014年1月29日
发表于:2016-04-07 09:28:24
9楼

我也正需要一个这样的系统,记录设备运行状态。

lin5979

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 1783回
  • 年度积分:0
  • 历史总积分:148
  • 注册:2003年9月12日
发表于:2016-07-23 19:54:54
10楼

我正需要一个这样的系统,记录公司的设备运行状态。!!!

愿好人一生平安

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 506回
  • 年度积分:0
  • 历史总积分:387
  • 注册:2013年6月15日
发表于:2016-10-18 04:36:33
11楼

谢谢老师分享非常好,,,,,

qyw_63

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 270回
  • 年度积分:210
  • 历史总积分:175
  • 注册:2006年11月09日
发表于:2017-04-16 17:25:49
12楼

谢谢老师分享受益匪浅!!!!!!!!!!!!!!!!

jinlbking

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 24回
  • 年度积分:490
  • 历史总积分:1808
  • 注册:2013年9月24日
发表于:2017-04-21 15:13:43
13楼

这个应该是只能对一个对象进行记录的吧?多个对象要多写几个函数 多定义几个变量

xuangel

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2011年9月26日
发表于:2017-06-10 22:20:24
14楼

老师您好,为什么我的运行时长读出来的值很大,类型如何转换?

wx19901012

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 9回
  • 年度积分:0
  • 历史总积分:303
  • 注册:2017年7月06日
发表于:2017-07-07 09:12:23
15楼

老师您好,我也是使用这个方法对存入ACCESS数据库的历史数据进行查询的,但是用KVADODBGRID控件查询数据时,查询的时间很长得一分钟才能查询出来,我一分钟会有100条记录存入数据库,是因为数据库数据量大导致查询时间长吗?

chemiszhou

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 760回
  • 年度积分:0
  • 历史总积分:140
  • 注册:2011年11月30日
发表于:2017-07-21 10:26:30
16楼


引用 huoshi 的回复内容: 谢谢老师分享受益匪浅!!!!!!!!!!!!!!!!


xlbxlb

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 71回
  • 年度积分:0
  • 历史总积分:66
  • 注册:2017年7月22日
发表于:2017-07-23 20:01:43
17楼

学习!!!!!!!!!!!!!!!!!

yzh_2005

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 42回
  • 年度积分:0
  • 历史总积分:96
  • 注册:2005年6月12日
发表于:2017-12-05 13:20:18
18楼

谢谢楼主分享,赞一个。

junzi202

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 102回
  • 年度积分:0
  • 历史总积分:139
  • 注册:2017年12月13日
发表于:2017-12-19 16:05:21
19楼

谢谢楼主分享,学习一下

junzi202

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 102回
  • 年度积分:0
  • 历史总积分:139
  • 注册:2017年12月13日
发表于:2017-12-25 10:06:36
20楼

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


热门招聘
相关主题

官方公众号

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