PCS 7 V6.0 或者更高的版本中,如何确定控制器 (PLC) 中的本地时间(Local Time)?

说明:
从 PCS 7 V6.0,控制器使用 UTC时间 (Coordinated Universal Time)。
可能有在控制器 (PLC) 中读取本地时间的需求,例如,一个泵依据这个时间打开或关闭。功能块 LOC_TIME (FC60) 可以用来确定控制器 (PLC) 中的本地时间。n

功能块LOC_TIME (FC60) 存放在标准库中。在 CFC 编辑器中,你可以在 "Libraries > Standard Library > Miscellaneous Blocks > TIMEFUNC > LOC_TIME" 选择该功能块,并把它放在 CFC 图中。n

PCS 7 V6.0 或者更高的版本中,如何确定控制器 (PLC) 中的本地时间(Local Time)?
Fig. 01n

功能块LOC_TIME (FC60) 在输出引脚 "LT" 提供了数据类型为 "DATE_AND_TIME" 的本地时间。必须等待该功能块执行完毕并且不报告任何错误后,方可在程序中使用该本地时间("LT")。可以通过评估功能块输出 "RET_VAL" (数据类型 "INT") 来查看是否存在错误信息。输出引脚 "SUMMER" (数据类型为 "BOOL") 包括了夏令/冬令时的信息。更为详细的信息可以参考功能块的在线帮助 (F1 键)。n

更多信息见下表。

序号. 描述
1 LOC_TIME 块的功能: n

  • LOC_TIME 内部使用了 S7 CPU的 time-of-day status。n
  • 并不是所有 S7 CPUs支持 time-of-day status.n
  • 也可以把当前的 time-of-day status 显示在 SIMATIC Manager 中。在组件视图下选择相应的 S7 CPU,在右键弹出中选择 "PLC > Set Time of Day...". 项, "Set Time of Day"窗口打开。点击 "More >>" 按钮显示 time-of-day status 。

    PCS 7 V6.0 或者更高的版本中,如何确定控制器 (PLC) 中的本地时间(Local Time)?
    Fig. 02

  • 通常,S7 CPU 的 time 和 time-of-day status 来自于时间同步,控制器 (PLC) 通常是时间同步的从站。这种情况下,UTC 时间、时区信息和冬令、夏令时信息被保存在控制器 (PLC)中。功能块 LOC_TIME (FC 60) 使用这些信息来计算本地时间并且显示冬令/夏令时。
2 在 CFC 中加入 LOC_TIME 功能块

下面情况可以在 CFC 中加入标准库中的 LOC_TIME (FC 60)功能块。

  • 在程序中块号已经被占用
    这种情况发生在块号被另一个库中其它功能块占用。 (例如 "CFC Library > ELEMENTA > COMPARE > CMP_R").

    PCS 7 V6.0 或者更高的版本中,如何确定控制器 (PLC) 中的本地时间(Local Time)?
    Fig. 03
    这种情况下必须重新指定 LOC_TIME 的块号,指定到离线块文件夹中另一个可用的块号。

  • 块号超出了用户区域
    功能块LOC_TIME (FC 60) 内部使用了标准库中的 IEC功能块
    • FC 1 (AD_DT_TM)
    • FC 3 (D_TOD_DT)
    • FC 7 (DT_DAY)

    这些块被称为引用块(referenced blocks)。如果该块号或者相应的引用块的块号超出了为其它应用所保留的块号范围,那么块被插入时,会异常终止并且提示错误消息。

    PCS 7 V6.0 或者更高的版本中,如何确定控制器 (PLC) 中的本地时间(Local Time)?
    Fig. 04

    这种情况下,在 CFC 中使用菜单命令"Options > Customize > Compile/Download..." 打开 "Settings for Compilation/Download" 对话框。改变保留的 FC 块号。

    PCS 7 V6.0 或者更高的版本中,如何确定控制器 (PLC) 中的本地时间(Local Time)?
    Fig. 05

  • 一个引用块不可用
    .如果LOC_TIME (FC 60) 的引用块 (FC 1, FC 3 and FC 7) 不在 S7 program 的块文件夹中,那么当试图从标准库中把该块插入到 CFC 中,就会收到一条错误消息提示相应引用的块不可用。

    PCS 7 V6.0 或者更高的版本中,如何确定控制器 (PLC) 中的本地时间(Local Time)?
    Fig. 06

    拷贝这些引用块到S7 程序块的块文件夹中。例如,通过把这些功能块拖放到 CFC 中然后删掉。

    PCS 7 V6.0 或者更高的版本中,如何确定控制器 (PLC) 中的本地时间(Local Time)?
    Fig. 07

    现在可以把功能块 LOC_TIME (FC 60) 插入到 CFC 中。

    注意:

    • 然而,当把 LOC_TIME (FC 60) 放在主数据库中,然后把它们插入到 CFC中,那么引用块 (在此例中是 FC 1, FC3 和 FC 7) 被自动拷贝到相应 S7 程序的块文件夹中。这种情况下,前面提到的错误消息就不会出现。
    • 通常,建议在一个主数据库中集中管理多项目中用到的块。关于创建和使用主数据库的信息可以参考 PCS 7 的在线帮助 "Configuration - Engineering System > Creating the PCS 7 Configuration > Creating the master data library" or in the configuration manual "PCS 7 - Configuration Manual Engineering System".
3 LOC_TIME 块的硬件兼容性
如果你使用CP 443-1EX02-0EX0 模块,在一些特定的环境下使用 LOC_TIME (FC 60) 块得到的本地时间可能不同于真正的本地时间。更多的信息请参考 ID 25702851.

注意:
FC60是一个没有背景DB块的功能块。要把FC60的结果保存到DB中,将FC60的输出“LT”连接到DB块中。出于这点需要使用DB或FB。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论