如何做设备运行时间统计

软件环境PCS76.0,目前想做一个主机设备运行时间的统计,要求有两个功能:1.实时记录设备运行时间,比如“设备已累计运行*天*小时*分”2.设备运行时间最高记录,比如“设备最高运行时间是*天*小时*分”,请问各位谁有做这个的经验啊,给小弟指导一下。

最佳答案

1.实时记录设备运行时间:
 设备运行一般采用该设备运行信号的上升沿来触发计时。
 设备停止一般采用该设备运行信号的下降沿或停机信号来触发计时。
 记录设备的运行时间需超长计时,一般采用计时器是不适合的,
 你可以这样做:
  1 当设备启动时,首先读取PLC时间,保存
  2 你停止的时候再次读取PLC时间,保存
  以上两步需要使用SFC1
  3 使用标准库中的FC34 “SB_DT_DT”功能块,将两次保存的时间值相减,并保存
  
  有关如期时间格式:
  《step7中有关时间和定时器的使用和例程(2007.09.03)     》下载:
  http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=A0087

 2.设备运行时间最高记录:
 将某设备运行时间存储在一连续区域内,用冒泡法排出从大到小的排序。
 冒泡排序示例:
 假定十个数据,放在DB1中,安放顺序如下:
 DBD0
 DBD4
 …
 DBD36
 下面是西门子的程序
 OPN   DB    1                 /////打开DB1这个数据块
       L     10  ////装载10到MB0中,因为有十个数据,要进行十次排序,9次也可以的
 LL0:  T     MB    0
       L     P#0.0   ////装载地址指针,这是关键,不要搞错了
       LAR1  
       L     9
 LL1:  T     MB    2   ////内部循环,进行9次,直到把最大值排到最后
       L     DBD [AR1,P#0.0]
       L     DBD [AR1,P#4.0]
       <R    
       JC    LL2          ////比较前后两个值,如果前面大于后面的,则前后数据交换
       L     DBD [AR1,P#0.0]
       T     #m_temp
       L     DBD [AR1,P#4.0]
       T     DBD [AR1,P#0.0]
       L     #m_temp
       T     DBD [AR1,P#4.0]
 LL2:  +AR1  P#4.0     ////指针自动进行加4,因为是浮点数,所以要跳过4个字节
       L     MB    2
       LOOP  LL1       ///这个指令自动的将A寄存器里的值减1
       L     MB    0
 LOOP  LL0
 

提问者对于答案的评价:
感觉上可行,还没测试。谢谢各位的热心指点!

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc188055.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年7月26日
下一篇 2017年7月26日

相关推荐