[西门子] 西门子S7-200编程技巧-如何产生时钟脉冲

[复制链接]
查看5553 | 回复23 | 2009-5-30 08:54:00 | 显示全部楼层 |阅读模式



简介:在实际应用中经常遇到这样的情况,在一个固定的时间周期内控制某继电器位打开(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
TITLE=主程序:利用定时器中断产生时钟脉冲-Author:Smartsys-
BEGIN
Network 1
LD SM0.1
ATCH INT0, 21
ENI
Network 2
LD SM0.0
LPS
AN M0.0
TON T32, 1000
LPP
A T32
= M0.0
END_ORGANIZATION_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=中断程序:利用定时器中断产生时钟脉冲-Author:Smartsys-
BEGIN
Network 1
LD SM0.0
XORB 2#1, QB0
END_INTERRUPT_BLOCK

这种方法时钟周期可以调整,但打开和关闭时间相同。把程序代码拷贝下来,粘贴到一个文本文件中,然后就可以在Step7-MicroWIN中导入。
前面我们已经介绍了两种方法,下面介绍另外两种方法
第三种方法,利用通电和断电延时定时器来实现,此方法不但可以调整时钟周期,还可以产生打开和关闭时间不同的时钟脉冲。下面给出两段例子程序。
第一段例子程序,我们用两个定时器产生时钟脉冲,实现原理是定时器1计时到位置位输出继电器位,同时启动定时器2开始计时,定时器2计时到位复位输出继电器位,同时启动定时器1开始计时,循环往复。两个计时器预设值的和为时钟周期,分别调整定时器1的预设值或定时器2的预设值,即可实现产生打开和关闭时间不同的时钟脉冲。
ORGANIZATION_BLOCK 主程序:OB1
TITLE=主程序:用两个定时器产生时钟脉冲-Author:Smartsys-
BEGIN
Network 1
LD SM0.0
LPS
AN Q0.0
TON T37, 10
LPP
A T37
S Q0.0, 1
Network 2
LD SM0.0
LPS
A Q0.0
TON T38, 20
LPP
A T38
R Q0.0, 1
END_ORGANIZATION_BLOCK

第二段例子程序,我们用一个定时器同样可以实现上段例子的效果。实现原理是用一个定时器产生一个周期循环,即计时器到位复位重新计时,用一个比较指令,当计时器当前值大于某值时,置位输出继电器,计时器计时到位时复位输出继电器,调整计时器预设值可调整时钟周期,改变比较值,可实现产生打开和关闭时间不同的时钟脉冲。
ORGANIZATION_BLOCK 主程序:OB1
TITLE=主程序:用一个定时器产生时钟脉冲-Author:Smartsys-
BEGIN
Network 1
LD SM0.0
LPS
AN M0.0
TON T37, 30
LRD
AW>= T37, 10
S Q0.0, 1
LPP
A T37
R Q0.0, 1
= M0.0
END_ORGANIZATION_BLOCK

对于一般要求精度不高的应用,我们推荐使用这种方法。


[replyview] 第四种办法,使用高速脉冲输出。 高速脉冲输出功能是指可以在可编程控制器的某些输出端产生高速脉冲,用来驱动负载实现精确控制。 对于西门子S7-200PLC,其开关量输出Q0.0和Q0.1编程时可用作高速脉冲输出。支持两种形式高速脉冲,高速脉冲串输出PTO和宽度可调脉冲输出PWM。我们使用宽度可调脉冲输出PWM也可实现时钟脉冲功能。下面给出程序范例: ORGANIZATION_BLOCK 主程序:OB1 TITLE=主程序:用高速脉冲输出产生时钟脉冲-Author:Smartsys- BEGIN Network 1 LD SM0.1 MOVB 16#DB, SMB67 MOVW 3000, SMW68 MOVW 2000, SMW70 PLS 0 END_ORGANIZATION_BLOCK 此方法一般用于周期较短,控制精度要求较高的场合。把程序代码拷贝下来,粘贴到一个文本文件中,然后就可以在Step7-MicroWIN中导入。 [/replyview]

lin5979 | 2009-6-11 16:06:00 | 显示全部楼层
ok good
fmhcat | 2009-6-15 11:48:00 | 显示全部楼层

了解一下

zmc1916 | 2009-6-19 10:56:00 | 显示全部楼层
好东西
zhqifu | 2009-6-20 00:23:00 | 显示全部楼层
好东西
sunychow | 2009-7-23 09:23:00 | 显示全部楼层
参考一下
aiyuan3222 | 2009-7-25 11:48:00 | 显示全部楼层

这么详细啊,谢谢楼主了,收藏了

lywuzhou | 2009-8-7 13:45:00 | 显示全部楼层
OK
hplcc | 2009-8-9 10:31:00 | 显示全部楼层
谢谢
wangwei4303 | 2009-8-27 22:25:00 | 显示全部楼层
好东西
wangoo1 | 2009-11-19 21:57:00 | 显示全部楼层

了解一下

[em220]
shunzhang | 2010-4-6 14:57:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
wangoo1 | 2010-4-30 07:16:00 | 显示全部楼层
谢谢楼主
zhouzz2010 | 2010-5-28 13:51:00 | 显示全部楼层
了解一下
pilitshfy | 2010-5-29 13:18:00 | 显示全部楼层
hao
lidax999 | 2010-6-1 21:29:00 | 显示全部楼层
了解一下
handong6344 | 2010-6-3 16:54:00 | 显示全部楼层
顶 说的不错值的学习
wangoo1 | 2010-6-14 12:12:00 | 显示全部楼层
好东西
aiyuan3222 | 2010-6-18 11:53:00 | 显示全部楼层
学习了 谢谢楼主发帖啊
siyuan322-2 | 2010-6-18 12:02:00 | 显示全部楼层
好东西 好好看看,谢谢楼主
z0612002136 | 2010-9-4 16:10:00 | 显示全部楼层
支持
yeoman888 | 2011-12-28 23:13:00 | 显示全部楼层
学习啦,谢谢
电工排球 | 2012-4-8 23:09:02 | 显示全部楼层
这个好 不用下载了的 好在我聪明 我拿笔抄的我的本本上了,现在只抄了一半,明早继续的。
以前我总认为中国的所谓知识人爱把简单的问题复杂化 现在遇上这么通透的国人 我就算还是
学不会我也只怨我自己笨 绝不在误会他(她)了
电工排球 | 2012-4-9 07:39:48 | 显示全部楼层
今早抄完了,剩下的就是到实践中去消化吸收了。也不知这个是楼主的原创还是转帖,我感觉反正能明白90%,谢谢了!一部流传至今的《易经》谁也看不懂,一部《论语》可以演绎出千万个版本,要是中国文化都这样?!也就这样了吧!什么计算机、PLC呀就让非中国人来发明创造,我们这些低端用户也只能似懂非懂地去理解了。
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则