西门子s7-300 cpu系统时钟的类型及用法

作者:老电工时间:2015-10-30 04:26:10

西门子s7-300 cpu系统时钟的类型及用法

西门子s7-300的数据类型分为:基本数据类型、复合数据类型和参数类型,时钟Date_And_Time属于复合数据类型。

Date_And_Time是一复杂数据类型,包含8个字节,Byte0-Byte7对应年、月、日、时、分、秒、毫秒、星期,的数据,占用8个字节。
星期天代码为1,星期一~星期六代码分别是2~7,如:
DT#2004_07_15_12:30:15.200为2004年7月15日12时30分15.2秒。

使用SFC0和SFC1即可设置和读取时钟。

日期和时间(DATE-AND-TIME)
S7-300 PLC的系统时钟使用的是“日期和时间(DATE-AND-TIME)”数据类型。

用于存储年、月、日、时、分、秒、毫秒和星期的数据。占用8个字节,数据类型以BCD形式保存。如:DT#2004_07_15_12:30:15.200为2004年7月15日12时30分15.2秒。

以下实例表示 2004 年 8 月 5 日,星期四,8 点 12 分 5.250 秒。并且给出了每个字节所包含的时间和日期数据的内容。  
字节 内容 例子
0 年 B#16#04
1 月 B#16#08
2 日 B#16#05
3 小时 B#16#08
4 分钟 B#16#05
5 秒 B#16#05
6 毫秒的百位和十位数值 B#16#25
7 (高4位) 毫秒的个位数值 B#16#0

S5T#格式
定时器使用的时间类型有所不同,定时器使用S5T#格式:S5T#aD_bH_cM_dS_eMS,其中a,b,c,d,e分别是日,小时,分,秒和毫秒的数值,输入时可以省掉下划线。
S5TIME时基及相应的时间范围如下:

如下两种格式定义时间值:
1) W#16#wxyz
o w = 时基 (即时间间隔或精度)
o xyz = BCD格式的时间值

这种方式只能用于STL编程。

2) S5T#aH_bbM_ccS_dddMS
o a = 小时, bb = 分钟, cc = 秒, dd = 毫秒
o 这种情况下时基自动选择, 数值为该时基下取整去尾到下一个较低值。
o 您可以输入的最大值为9,990 秒,或2H_46M_30S。
IEC时间-TIME
IEC时间(国际标准),最小时基为1ms,最大计量单位为天(D),有符号,格式为T#0D_1H_1M_0S_0MS。

二、S7-300 CPU的系统时间的设置方法

问题:
S7-300CPU的系统时间怎么设置?
s7-300的时间与实际的时间不同,是不是所有的300CPU的时间都是编程人员自己重新设置?如果是自己设置的,要怎么设置,硬件组态中在哪里设置?

解答:
1、设置CPU时间可以通过SIMATIC Manger-> Set Time Of Day手动设置,也可以调用SFC0 "SET_CLK"块,时间由上位机进行设定。

2、详见:
《S7-300系列PLC CPU系统时间设置技巧》连接:
http://wenku.baidu.com/view/20a03408581b6bd97f19ea49.html

3、相关文档:
读取和比较日期、时间和计数器的技巧和窍门:
http://support.automation.siemens.com/CN/llisapi.dll?func=cslib.csinfo&objId=27832616&nodeid0=10805384&load=treecontent&lang=zh&siteid=cseus&aktprim=0&objaction=csview&extranet=standard&viewreg=CN

打开SIMATIC Manager,在工具栏中点击‘online’工具将CPU在线后,选择菜单PLC--->Diagnostic/Setting---->Set time of Day 打开对话框就可以设置了。

设置CPU时间可以通过SIMATIC Manger-> Set Time Of Day手动设置,也可以调用SFC0 "SET_CLK"块,时间由上位机进行设定。

读取时间调用SFC1 "READ_CLK",返回数据类型为DATE_AND_TIME。

三、S7-300/400读取系统时钟及CPU扫描周期

如何编程或调用那些系统块,能够读取S7-300/400系统时钟及CPU扫描周期,包括最大扫描时间,最小扫描时间,当前扫描时间等。

CPU扫描周期:
在SIMATIC管理器中打开你的项目,选择菜单PLC/Module Information(模块信息),打开CPU的模块信息对话框,选择Scan Cycle Time“扫描循环时间)子项,可以在线检查所选择的CPU的最小循环时间、最大循环时间和当前循环时间。

如图:

S7-300/400读取系统时钟及CPU扫描周期

可查看OB1 变量:
OB1_PREV_CYCLE,INT ,上一次OB1 的循环时间(ms);
OB1_MIN_CYCLE: INT,自CPU 启动,最短一次OB1 的循环时间(ms);
OB1_MAX_CYCLE: INT,自CPU 启动,最长一次OB1 的循环时间(ms);

1.读取S7-300系统时钟

方法一
调用SFC1即可。要先新建一个DATE_TIME的变量;还要在程序编辑窗口点击“PLC——设置时实时钟——”使PLC与PC时间同步。

方法二
OB1中有一个TEMP的临时变量,系统已经把PLC的系统时间放在最后一个变量OB1_DATE_TIME中。
当然这些时间都要经过转换一下才能得到相应的“年、月、日、时、分、秒、毫秒、星期”,看帮助文件吧!

2.CPU扫描周期,包括最大扫描时间,最小扫描时间,当前扫描时间
方法一
在线连接PLC,在硬件窗口查看CPU的模块信息,打开“循环扫描时间”就可以看到了。

方法二
同样在OB1的TEMP变量中OB1_PREV_CYCLE是指上一次OB1 的循环时间(ms);
OB1_MIN_CYCLE是指CPU 启动后,最短一次OB1 的循环时间(ms);
OB1_MAX_CYCLE是CPU 启动后,最长一次OB1 的循环时间(ms);

本站仅提供信息发布平台,文章仅代表作者个人观点。

猜你喜欢

首页 > plc > 西门子plc