登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:西门子PLC SFC0/1读取和设定系统时间的说明

点击:17332 回复:6

使用系统功能 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秒。 并且给出了每个字节所包含的时间和日期数据的内容。
附件
更多的关于“DATE_AND_TIME”数据类型的信息可以通过 STEP 7 在线帮助获得,如下:  
DATE_AND_TIME 数据类型的格式
09-08-30 15:32
下面的 STEP 7  程序(图  01)是通过地址寄存器 AR1 读时间和日期。 FC1 中调用系统功能 SFC1 读出 CPU 的当前时间。 小时和分钟可以显示在数字显示器上。
附件
说明:
   “LAR1  P##Date_Time”  
通过上面指令将临时变量“Date_Time”的起始地址被装载到地址寄存器 AR1 中。 通过间接寻址装载命令可以分别访问年、月、日、小时等。
例如:
   “L  B[AR1, P#3.0] //Read hours” (读取小时数)
读出的数据赋值给输出字节用于显示。
   T  "Hour"  // for AB3 (赋给输出字节 3)
由于字节 7 中 的高四位是用于表示毫秒的个位数值的,低四位是用于表示星期的,鉴于显示的原因,如图 01 例程中,使用语句“L  W#16#FFF0”和“L  B#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秒的显示示例。
附件
09-08-30 15:35
用 SFC0 (SET_CLK)设定系统时钟的使用说明
使用  SFC0 “SET_CLK” (设定系统时钟)可以设定 CPU 的时间和日期。 CPU 的时钟将以设定的时间和日期运行。 用以下语句:
   “LAR1  P##Date_Time”  
临时变量“Date_Time”的起始地址被装载到地址寄存器 AR1 中。通过间接寻址指令将设定数据从功能块的输入变量(类型:字节)装载并传输到变量“DATE_AND_TIME”的中的年、月、日、小时等各自的字节中。
例如:
L  #Year
//输入变量,类型:字节
//输入变量“年”如, “B#16#05”表示 2005.
T  B[AR1,P#0.0]
//输入变量“Year”的内容传送到字节 0
//“DATE_AND_TIME”变量的字节0。
在例程中描述的如上您所看到的数据类型“DATE_AND_TIME”的格式。 更多的关于“DATE_AND_TIME”数据类型的信息可以通过 STEP 7 在线帮助获得,如下:
DATE_AND_TIME 数据类型的格式
随后调用 SFC0 ,在输入端“PDT”参数化的临时变量“Date_Time”的数值被传送到 SFC0。
附件
在“监视/修改变量” 中您可以指定时间和日期的值。输入的年、月、日等是在 OB1 中使用 MB0, MB1, MB2 等参数化的。图  04 给出了例子:2005年1月3日,星期一,16点26分40.20秒。
附件
09-08-30 15:37
详细拜读了,非常感谢 等不能传大图 或者把程序上传一下?谢谢!我觉得我可能是有点 BEN的-------------
09-08-30 15:52
千万不要说这个字.知识是死的,人是活的.我相信只要多用时间去摸索,多实践,人总是会不断进步的.所以动动脑筋,多试试.
09-08-30 16:02
我发现了 地址用    DB11.符号    就行 好像不能直接用地址  DB11.DBX0就不行   好奇怪呀
09-09-02 13:38

引用 lhw982117910 在 2009/8/30 15:37:39 发言【内容省略】

有用,好谢谢!
19-04-15 22:38

工控新闻

更多新闻资讯