在STEP7V5.x中,如何计算终端设备(例如水泵)的运行时间? 点击:2048 | 回复:2



阿水--王者之师

    
  • 精华:27帖
  • 求助:376帖
  • 帖子:1725帖 | 22281回
  • 年度积分:58
  • 历史总积分:98503
  • 注册:2007年3月22日
发表于:2017-04-10 21:10:21
楼主

说明 可以使用 CPU 的系统时间来计算运行时间。系统时间是一个可以从 0 最大计数到 2147483647 ms 的计时器 。如果到达最大值,将从 0 重新开始计算(溢出)。 调用 SFC 64 "TIME_TCK",可以通过输出管脚 "RET_VAL" 读出当前系统时间。

可以使用系统时间计算终端设备的运行时间。使用指令 SFC64"TIME_TCK" 实现该功能。

指令
可以使用 CPU 的系统时间来计算运行时间。系统时间是一个可以从 0 最大计数到 2147483647 ms 的计时器 。如果到达最大值,将从 0 重新开始计算(溢出)。 调用 SFC 64 "TIME_TCK",可以通过输出管脚 "RET_VAL" 读出当前系统时间。


图. 1

为了计算两个事件(例如终端设备的启动和停止)之间的时间,需要两次调用 SFC 64。 如此就可以通过 DINT 的相减获得两次返回值(数据类型:Time) 的差值,这样就提供两次块调用之间的时间。最小时间步长和相应的系统时间精度如下:

  • S7-300: 10 ms

  • S7-400: 1 ms

系统时间仅受 CPU 的操作状态影响,但独立于循环周期时间。

使用FB205计算运行时间的例程

  1. 当上升沿信号触发参数引脚"startTime" ,激活 SFC 64 "TIME_TCK" 将系统时钟读入临时缓冲区。

  2. 当上升沿信号触发参数引脚 "endTime" 之后,再次激活 SFC 64 "TIME_TCK" 将系统时钟读入临时缓冲区。

  3. 当另外一个上升沿信号触发参数引脚 "getdiffTime"时,两次系统时间的差值被计算出,其结果也就是时间差值输出到管脚 "outDiffTime"。 




图. 2

注意
上述例子显示了如何使用 FB205 计算设备运行时间,该时间必须小于系统所能记录的最大时间2147483647 ms。因为系统时间最大为 2147483647 ms ,相对应的最大运行时间为 24 天 + 20 小时 + 31 分钟 + 23 秒 + 647 微秒。 如果要使用更长运行时间的终端设备,必须通过检查系统时间的多次溢出来扩展  STEP 7 程序。

 



楼主最近还看过



yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10219回
  • 年度积分:3353
  • 历史总积分:48938
  • 注册:2005年4月22日
发表于:2017-04-11 10:34:01
1楼

西门子官网的资料搬过来有什么意义呢?

为何直接说明引用西门子官网呢?

西门子官网该文档地址:https://support.industry.siemens.com/cs/document/640451/%E5%9C%A8step7-v5-x-%E4%B8%AD%EF%BC%8C%E5%A6%82%E4%BD%95%E8%AE%A1%E7%AE%97%E7%BB%88%E7%AB%AF%E8%AE%BE%E5%A4%87(%E4%BE%8B%E5%A6%82%E6%B0%B4%E6%B3%B5)%E7%9A%84%E8%BF%90%E8%A1%8C%E6%97%B6%E9%97%B4%EF%BC%9F?dti=0&lc=zh-CN

yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10219回
  • 年度积分:3353
  • 历史总积分:48938
  • 注册:2005年4月22日
发表于:2017-04-11 10:35:12
2楼

期待你下次将这篇文章从西门子搬过来:

如何通过 STEP7 V5.5 将字符串转换为单字符字节?



热门招聘
相关主题

官方公众号

智造工程师