- {{item.name}}
如何用 SFC1 (READ_CLK) 读取时间和日期以及如何用 SFC0 (SET_CLK) 设定系统时间?
- 0
- 2224
- 8278
系统功能 SFC1 和SFC0分别用于读取和设置 CPU 的系统时钟。系统时钟存储在数据类型为DATE_AND_TIME的变量里。通过指针访问系统时钟的单个组成元素。
说明
可以使用系统功能 SFC1 (READ_CLK)和SFC0 (SET_CLK)分别读取和设置 CPU 的系统时钟。系统时钟存储在数据类型为“DATE_AND_TIME”的变量里。数据类型DATE_AND_TIME所包含的关于年、月、日、时等信息是以 BCD 码的格式存储在 8 个字节里。该数据类型显示的范围是:
- DT#1990-1-1-0:0:0.0 到 DT#2089-12-31-23:59:59.999
下表给出了实例表示 2014 年1月 2 日,星期四,3点 5 分 11.854 秒对应数据类型DATE_AND_TIME的每个字节所包含的内容。
绝对地址 | 内容 | 例子 |
字节0 | 年 | B#16#14 |
字节1 | 月 | B#16#01 |
字节2 | 日 | B#16#02 |
字节3 | 小时 | B#16#03 |
字节4 | 分钟 | B#16#05 |
字节5 | 秒 | B#16#11 |
字节6+字节7高4位*(字6) | 毫秒 | W#16#8545 |
字节7 (低四位*) | 星期: 1:星期日 2:星期一 3:星期二 4:星期三 5:星期四 6:星期五 7:星期六 | B#16#45 |
*毫秒最大值999的BCD码需要占用12位。因此,毫秒值占用字节6以及字节7的高4位。字节7的剩下低4位用于表示星期。
通过指针访问数据类型DATE_AND_TIME的单个变量。这种读取和设定系统时钟的步骤下面以样例说明,样例在OB1中用了4个网络段的程序。
用SFC1 (READ_CLK)读取系统时钟的说明
1. 调用系统功能SFC1 (READ_CLK)读取系统时钟(图1)。
输出参数“CDT”用于接收CPU的当前系统时钟。用数据数据类型为DATE_AND_TIME的临时变量(此处为"readDateAndTime")连接参数“CDT”。
图.1
2. 用指令"LAR1 P##readDateAndTime"(指针)将临时变量"readDateAndTime"的地址装载到地址寄存器AR1中(图2)。接着,通过间接装载指令访问变量"readDateAndTime"的单个字节/字,并通过提供的操作数显示出来。
3. 例如,访问字节3(小时)并通过操作数”Read”.Hour(此处为DB1.DBB3)输出:
LB[AR1, P#3.0]
T "Read".Hour
4. 用于毫秒和星期的字节6和7存在重叠,因此必须先访问字6获取毫秒并右移4位(SRW4)再输出。为了输出星期,需要用B#16#F屏蔽字节7来获得字节7的低4位。
图.2
用SFC0 (SET_CLK)设定系统时钟的说明
1. 定义一个数据类型为DATE_AND_TIME的临时变量,比如"writeDateAndTime",并用指令"LAR1 P##writeDateAndTime"把这个变量的地址装载到地址寄存器AR1中"(图3)。通过间接寻址把数据装载并传送到用于存储年、月、日、时等的单个字节。
2. 例如,传送用于设置小时的”Write”.Hour(此处为DB2.DBB3)到临时变量"writeDateAndTime"的字节3(小时):
L "Write".Hour
T B[AR1, P#3.0]
3. 用于毫秒和星期的字节6和7存在重叠,因此在传送毫秒的设置值之前需要把操作数(此处为"Write".Millisecond,,DB2.DBW6)左移4位(SLW4)。
4. 无需设置星期,因为它可以由设置的日期推导得出。
图.3
5. 调用系统功能SFC0 (SET_CLK)用于设置系统时钟并把临时变量"writeDateAndTime"赋给输入参数”PDT”(图4)。重要的是SFC0只调用一次,否则系统时钟在每个周期都被设定并将因此停留在设定的时间。
6. 例子中(图4),检测操作数"Write".setCLK(此处为DB2.DBX8.0)的上升沿。当有上升沿时,调用SFC0并以临时变量"writeDateAndTime"中给定的值设定系统时钟。
图.4
更多信息
关于数据类型“DATE_AND_TIME”和系统功能SFC0和SFC1的更多信息参见STEP7的在线帮助。
您可以前往全球资源库查看此文档:https://support.industry.siemens.com/cs/cn/zh/view/21222026
剩余80%未阅读,请登录后下载/查看文档
- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错
- S7-SCL - 可用于从给定日期或者 CPU 硬件时钟的当前日期确定日历日和日历周的工具
- 在 WinCC V7.4、V7.5 图形编辑器中出现“内存不足”的原因是什么以及如何解决这个问题?
- 在哪个S7站可以使用以及如何使用串口通信模块?
- 在STEP 7 (TIA Portal)中,如何为S7-1200/S7-1500编写日出和日落时分别打开和关闭百叶窗的程序?
- 哪些以太网通讯模块CP支持DHCP选项12(客户端名称)及如何组态该功能?
- 如何构建DP/PA link及如何组态DP/PA链路器及 DP/PA耦合器?
- SINAMICS G120 / G120C / G120D / G120P: 用 PROFIBUS 或者PROFINET 循环修改斜坡上升时间和斜坡下降时间。
- WinCC中归档数据片段的时间和尺寸设置
- step7中有关时间和定时器的使用和例程
- 如何同步操作面板与 S7-200/300/400 控制器的日期和时间(更新版)
{{item.nickName}}