s7-200
S7-200 的秒脉冲的设定比较的简单有如下几个方法:
方法一:可以用系统单元进行设定
Clock_60s SM0.4 时钟脉冲接通30秒,关断30秒,工作周期时间为1分钟
Clock_1s SM0.5 时钟脉冲接通0.5秒,关断0.5秒,工作周期时间为1秒
系统内部分别有 秒脉冲和分脉冲 SM0.4工作周期为1分钟 SM0.5工作周期为1秒 在应用时直接写入就可以 注意在秒脉冲指令的后面用上升沿或者下降沿,这样两个上升沿(下降沿)之间的时间 就是要得到的周期.
方法二:自己编写延时程序
自己编写延时程序,并设定好延时时间,当时间到后便执行存储程序块调用,该方法受程序循环时间的影响,不是特别精确,如果是要求不太严格的情况下可以使用本方法。
此方法就是编写一个程序让这个程序做为子程序 被调用
方法三:用系统时钟加比较器
此方法比较另类,比较复杂,具体编程如下.
先设定一个系统读取实时时钟 设定启始地址比如 VB100 然后看 各个位的定义 VB105 就是秒 再用比较 用VB105+1 比较VB105进行比较 如果相等为真 那就是1秒 注意:这个比较要进行范围锁定,这个方法我试过是可以用的
1 月 (1-12) 当前月份 (BCD值)
2 日期 (1-31) 当前日期 (BCD值)
3 小时 (0-23) 当前小时 (BCD值)
4 分钟 (0-59) 当前分钟 (BCD值)
5 秒 (0-59) 当前秒 (BCD值)
6 00 保留 ?始终设置为00
7 星期几 (1-7) 当前是星期几,1=星期日 (BCD值)
S7-300
S7-300的秒脉冲的设定比较的复杂但是方法很多(这里将着重介绍CPU设定):
方法一:CPU 用时钟存储器
硬件组态中CPU属性"Cycle/Clock Memory"中"Clock Memory"设定的Memory Byte,可以看下帮助,每一位都有固定频率
在"Propreties"窗口中点击"Cycle/Clock Memory"(循环/时钟存储器)选项卡,可以设置"Scan cycle monitoring time"(以ms为单位的扫描循环监视时间),默认值为150ms.如果实际的循环扫描时间超过设定值.CPU将进入STOP模式.
"Scan cycle Load from Communication "用来限制通信处理占扫描周期的百分比,默认值为20%
时钟脉冲是一些可供用户程序使用的占空比为1:1的方波信号,一个字节的时钟存储器的每一位对应的一个脉冲如下:
位 7 6 5 4 3 2 1 0
周期/s 2 1.6 1 0.8 0.5 0.4 0.2 0.1
频率/Hz 0.5 0.625 1 1.25 2 2.5 5 10
如果要使用时钟脉冲,首先要选中"Clock Memory'(时钟存储器)选项,然后设置时钟存储器(M)的字节地址.假设设置的地址为100(即MB100),有上表可知,M100.7周期为2s,如果用M100.7的常开的触点来控制Q0.0的线圈,Q0.0将以2s的周期闪烁(亮1s,熄灭1s).
"OB85-Call up at I/O access error"用来预设置CPU对系统修改过程映像时发生的I/O访问错误的响应.如果希望在出现错误时调用OB85,建议选择"Only for incoming and out going error"(仅在错误产生和消失),相对于"On each individual access"(每次单独的访问),不会增加扫描循环时间.
方法二:自己编写延时程序,并设定好延时时间,当时间到后便执行存储程序块调用,该方法受程序循环时间的影响,不是特别精确,如果是要求不太严格的情况下可以使用本方法。
方法三:利用等时中断组织块来实现等时中断,如在OB35中调用存储程序块,实现等时存储,该方法较精确。
方法四:可以利用SFC1读取CPU时钟,通过时钟值的差额计算可以实现等时间隔存储。(此方法与我介绍的S7-200 的第三种方法相似在此就不具体写编程方法了)
方法五:如果用外部等时间间隔触发信号的话,利用硬件中断实现也是可以的。
注意:没有什么特殊的情况下 建议用方法1,2 ,3 方法1最实用 正常情况下 方法一最适合使用用起来简单方便大家只要把 各个位对应的周期记住就可以了
|