如何利用西门子S7-200产生时钟脉冲
在实际应用中经常遇到这样的情况,在一个固定的时间周期内控制某继电器位打开(ON)一段时间,关闭(OFF)一段时间。比如,用开关量输出驱动指示灯闪烁或驱动蜂鸣器发出时断时续的响声。 总结了在西门子S7-200程序中4种实现此功能的方法。下面分别介绍一下: 第一种方法,使用特殊存储器位SM。 特殊存储器位SM0.4提供1分钟时钟脉冲,该脉冲在1分钟的周期内关闭(OFF)30秒,打开(ON)30秒。 特殊存储器位SM0.5提供1秒钟时钟脉冲,该脉冲在1秒钟的周期内关闭(OFF)0.5秒,打开(ON)0.5秒。 特殊存储器位SM0.6提供扫描周期时钟脉冲,该脉冲为一次扫描打开,然后下一次扫描关闭。 这种方法使用简单,但时钟周期和开关时间固定,很多情况下不能满足要求。 第二种方法利用时基中断程序 时基中断包括定时中断和定时器中断。 定时中断可用来支持一个周期性的活动,周期时间以1ms为计量单位,周期时间可从5ms~255ms。对于定时中断0,把周期时间写入SMB34,对于定时中断1,把周期时间写入SMB35。每当达到定时时间值,相关定时器溢出,执行中断处理程序。 定时器中断可以利用定时器来对一个指定的时间段产生中断。这类中断只能使用1ms通电和断电延时定时器T32和T96。当所用定时器的当前值等于预设值时,在主机正常的定时刷新中,执行中断。下面分别给出程序例子: ORGANIZATION_BLOCK 主程序:OB1 TITLE=主程序:利用定时中断产生时钟脉冲-Author:Smartsys- BEGIN Network 1 LD SM0.1 MOVB 100, SMB34 ATCH INT0, 10;将中断事件(EVNT)与中断例行程序号码(INT)相联系,并启用中断事件。 ENI;允许中断 END_ORGANIZATION_BLOCK INTERRUPT_BLOCK INT_0:INT0 TITLE=中断程序:利用定时中断产生时钟脉冲-Author:Smartsys- BEGIN;开始 Network 1 LD SM0.0 INCB VB0 Network 2 LDB>= VB0, 10 XORB 2#1, QB0 XORB VB0, VB0 END_INTERRUPT_BLOCK ORGANIZATION_BLOCK 主程序:OB1 这种方法时钟周期可以调整,但打开和关闭时间相同。把程序代码拷贝下来,粘贴到一个文本文件中,然后就可以在Step7-MicroWIN中导入。 第二段例子程序,我们用一个定时器同样可以实现上段例子的效果。实现原理是用一个定时器产生一个周期循环,即计时器到位复位重新计时,用一个比较指令,当计时器当前值大于某值时,置位输出继电器,计时器计时到位时复位输出继电器,调整计时器预设值可调整时钟周期,改变比较值,可实现产生打开和关闭时间不同的时钟脉冲。 对于一般要求精度不高的应用,我们推荐使用这种方法。 |