西门子300plc如何利用ob1的临时变量读取cpu系统时钟

西门子300plc如何利用ob1的临时变量读取cpu系统时钟

ID:20362497

大小:88.50 KB

页数:6页

时间:2018-10-12

西门子300plc如何利用ob1的临时变量读取cpu系统时钟_第1页
西门子300plc如何利用ob1的临时变量读取cpu系统时钟_第2页
西门子300plc如何利用ob1的临时变量读取cpu系统时钟_第3页
西门子300plc如何利用ob1的临时变量读取cpu系统时钟_第4页
西门子300plc如何利用ob1的临时变量读取cpu系统时钟_第5页
资源描述:

《西门子300plc如何利用ob1的临时变量读取cpu系统时钟》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、如何用SFC0和SFC1来设置和读取时钟,今天就和大家说一说。首先Date_And_Time是一复杂数据类型,包含8个字节,Byte0-Byte7对应年、月、日、时、分、秒、毫秒、星期,对应关系如下表所示:Byte6和Byte7的高4位组合成毫秒,格式是BCD码,Byte6是高位,Byte7是低位我们可以在DB块里定义time1和time2变量,数据类型是DATE_AND_TIME,如下图:在符号表中定义DB1的符号名为system-time,如下图:然后调用SFC0和SFC1就可以了,大家可以参考下面的程序(可以将程序拷贝到Step7中,然后可

2、以转成梯形图程序),具体使用时间时可以直接寻址DB1.DBB0 – 年  ……DB1.DBB7(低4位) – 星期,DB1.DBB8 – 年 ……DB1.DBB15(低4位) – 星期。OB1:"Main Program Sweep (Cycle)"Network1:      A     M     10.0            JNB   _001               CALL  SFC    0               PDT    :="system-time".time1               RET_VAL:=MW

3、100               _001: NOP   0Network2:      CALL  "READ_CLK"               RET_VAL:=MW102               CDT    :="system-time".time2               NOP   0如果对时间误差的要求到分就可以,所以推荐一种简单的方法,不知大家之前用过没有,就是使用OB1的临时变量OB1_DATE_TIME(在OB1的Interface – TEMP中可以找到),此变量也是DATE_AND_TIME的数据类型,对应的

4、临时变量地址是LB12 – LB19,同样对应年 – 星期,符合上面表格中的结构,我们只需要使用Move指令就可以得到PLC的系统时间了。例如我们可以将LD12 Move 到MD0、LD16 Move 到MD4中,然后在程序中寻址MB0 –MB7就可以了。您可以参考下面的程序(可以将程序拷贝到Step7中,然后可以转成梯形图程序)。需要注意,OB1临时变量读出的时间会受OB1扫描周期的影响,例如OB1扫描周期是15ms左右,那么从OB1中读出的时间精度应该就是15ms左右。OB1:"Main Program Sweep (Cycle)"Netwo

5、rk1:         A(          L     LD    12      T     MD     0      SET         SAVE        CLR         A     BR      )           JNB   _002      L     LD    16      T     MD     4         _002: NOP   0如果需要设置系统时钟,还需要使用SFC0来实现。西门子官网有一篇《如何用SFC1(READ_CLK)读取时间和日期以及如何用SFC0(SET_CLK)设定

6、系统时间》详细说明了如何利用SFC1和SFC0读取和设置PLC的系统时间。这个程序是利用系统功能块读出系统的日期和时间信息(Dateandtime格式,占用8个字节),然后通过将每个字节分解后得到年、月、日、时、分、秒、毫秒、周的具体值。因为毫秒实际使用了12位,周使用了4位,所以毫秒和周的数据一起使用了两个字节,在程序中用字与的办法将其分解出来。整个程序如下:CALL"READ_CLK"//调用系统功能块SFC1RET_VAL:=MW10CDT:=#Date_timeLAR1P##Date_time//利用SFC1读出的日期时间值LB[AR1,

7、P#0.0]T#Year//年LB[AR1,P#1.0]T#Month//月LB[AR1,P#2.0]T#Day//日LB[AR1,P#3.0]T#Hour//时LB[AR1,P#4.0]T#Minutes//分LB[AR1,P#5.0]T#Second//秒LW#16#FFF0LW[AR1,P#6.0]AW//毫秒T#MillisecondLB#16#FLB[AR1,P#7.0]AW//周T#WeekCLR对于时间设置的程序,是将读取时间的步骤反过来,先将数据整合到一个Date_and_time格式的存储器,再用SFC0将这个数值设置为当前时间

8、。程序如下:LAR1P##Date_timeL#YearTB[AR1,P#0.0]L#MonthTB[AR1,P#1.0]L#DayTB

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。