如何用SFC1(READ_CLK)读取时间和日期以及如何用SFC0(SET_CLK)设定用SFC1(READ_CLK)读取时间和日期的使用说明使用系统功能SFC1(READ_CLK)可以读出CPU的系统时间。系统功能SFC1的输出参数“CDT”接收的时间和日期的格式为“DATE_AND_TIME”。数据类型“DATE_AND_TIME”的时间和日期是以BCD码的格式存储在8个字节里。该数据类型显示的范围是:DT#1990-1-1-0:0:0.0到DT#2089-12-31-23:59:59.999下表给出了实例表示2004年8月5日,星期四,8点12分5.250秒。并且给出了每个字节所包含的时间和日期数据的内容。字节内容例子0年B#16#041月B#16#082日B#16#053小时B#16#084分钟B#16#0125秒B#16#056毫秒的百位和十位数值B#16#257(高4位)毫秒的个位数值B#16#05中的BCD码“0”7(低四位)星期:1:星期日,2:星期一,3:星期二,4:星期三,5:星期四,6:星期五,7:星期六B#16#05中的BCD码“5”更多的关于“DATE_AND_TIME”数据类型的信息可以通过STEP7在线帮助获得,如下:DATE_AND_TIME数据类型的格式下面的STEP7程序(图01)是通过地址寄存器AR1读时间和日期。FC1中调用系统功能SFC1读出CPU的当前时间。小时和分钟可以显示在数字显示器上。图01说明:“LAR1P##Date_Time”通过上面指令将临时变量“Date_Time”的起始地址装载到地址寄存器AR1中。通过间接寻址装载命令可以分别访问年、月、日、小时等。例如:“LB[AR1,P#3.0]//Readhours”(读取小时数)读出的数据赋值给输出字节用于显示。THour//forQB3(赋给输出字节3)由于字节7中的高四位是用于表示毫秒的个位数值的,低四位是用于表示星期的,鉴于显示的原因,如图01例程中,使用语句“LW#16#FFF0”和“LB#16#F”分别通过字与(“UW”即“AW”)的操作指令将AW6和AB8输出地址中相应的值屏蔽掉。否则图02中AW6的值将显示为W#16#7853(而3是表示星期数的),同样AB8的值将显示B#16#53(5表示毫秒值)。在“监视/修改变量”中您可以显示输出字节的数据。图02为“监视/修改变量”中对应2004年8月24日,星期二,14点3分19.785秒的显示示例。图02用SFC0(SET_CLK)设定系统时钟的使用说明使用SFC0“SET_CLK”(设定系统时钟)可以设定CPU的时间和日期。CPU的时钟将以设定的时间和日期运行。用以下语句:“LAR1P##Date_Time”临时变量“Date_Time”的起始地址被装载到地址寄存器AR1中。通过间接寻址指令将设定数据从功能块的输入变量(类型:字节)装载并传输到变量“DATE_AND_TIME”中的年、月、日、小时等各自的字节中。例如:L#Year//输入变量,类型:字节//输入变量“年”如,“B#16#05”表示2005。TB[AR1,P#0.0]//输入变量“Year”的内容传送到字节0//“DATE_AND_TIME”变量的字节0。在如上例程中您能看到数据类型“DATE_AND_TIME”的格式。更多的关于“DATE_AND_TIME”数据类型的信息可以通过STEP7在线帮助获得,如下:DATE_AND_TIME数据类型的格式随后调用SFC0,在输入端“PDT”处,用参数表示的临时变量“Date_Time”的数值被传送到SFC0。图03在“监视/修改变量”中您可以指定时间和日期的值。在OB1中通过MB0,MB1,MB2等地址对年、月、日等参数进行修改。图04给出了示例:2004年8月24日,星期二,14点03分。图04