当前位置:机电之家首页 >> 电工园地>> 培训教程 >> 培训资料 >> 一段错误程序引起的对S7-200定时器的思考
一段错误程序引起的对S7-200定时器的思考

     网友squall001发帖问:用T37的TON定时器,把他嵌套在FOR循环里面,但是在循环断开后定时器的当前值不会回零,这是怎么回事? 
     下面是他的源程序:
LD     I0.0
FOR    VW100, 1, 100
LD     SM0.0
TON    T37, 35
LD     T37
+I     1, VW102
NEXT

     为了便于观察,我把定时器的设定值改为30000,运行和监控上述程序。
     下面是我看到的现象:
     1)接通I0.0的常开触点,定时器的当前值以100为单位增大,实际的定时时间为30s(30000/100=300ms)。
     2)30s后,T37的常开触点闭合,每个扫描周期VW102的值加100。
     3)断开I0.0的触点,停止执行循环程序,VW102的值保持不变。接通I0.0的触点,VW102的值在保持值的基础上继续增大。
     4)因为T37的线圈用一直接通的SM0.0的常开触点控制,T37的线圈不会断开,它不能复位。
     上述现象的解释如下:
     1)作为应用指令,FOR指令的调用条件不满足时(I0.0为0状态),循环程序不会被执行(一次也没有执行),其中的定时器指令也没有执行,因此它的当前值和VW102的值保持不变。
     2)作为普通的定时器,T37在它的线圈指令被执行时进行定时。循环条件满足时,每次扫描要执行100次T37的线圈指令,因此T37的定时速度比普通情况要快100倍。
     3)30s后,T37的常开触点闭合,每个扫描周期要执行100次“+I”指令,所以每个扫描周期VW102的值加100。
     4)任何情况T37的线圈都不会断电,所以它的当前值不会回零。这个例子提示我们,除了考虑定时器线圈通电工作,一定要考虑定时器复位的条件,否则你的定时器就只能用一次。 
     显然定时器线圈指令不应放在循环程序里,一个扫描周期不应多次执行同一个定时器的线圈指令。 
     下面是S7-200的系统手册介绍的分辨率对定时器的影响: 
     对于1 ms分辨率的定时器来说,定时器位和当前值的更新不与扫描周期同步。对于大于1ms的程序扫描周期,定时器位和当前值在一次扫描内刷新多次。 
     对于10ms分辨率的定时器来说,定时器位和当前值在每个程序扫描周期的开始刷新。定时器位和当前值在整个扫描周期过程中为常数。在每个扫描周期的开始会将一个扫描累计的时间间隔加到定时器当前值上。 
     对于分辨率为100 ms的定时器,在执行指令时对定时器位和当前值进行更新;因此,确保在每个扫描周期内,程序仅为100毫秒的定时器执行一次指令,以便使定时器保持正确计时。

作者:未知 点击:2422次 [打印] [关闭] [返回顶部]
本文标签:一段错误程序引起的对S7-200定时器的思考
* 由于无法获得联系方式等原因,本网使用的文字及图片的作品报酬未能及时支付,在此深表歉意,请《一段错误程序引起的对S7-200定时器的思考》相关权利人与机电之家网取得联系。
关于“一段错误程序引起的对S7-200定时器的思考”的更多资讯

电子样本

中基斯顿摆线液压马达
:余翰林
:18857411608
:宁波中基斯顿液压机械有限公司
个人求购

朱经理 【求购】  壁挂式楼梯  2025-3-13
谷经理 【求购】  紫日变频器  2025-3-13
王经理 【求购】  金桥焊条  2025-3-13
吴经理 【求购】  电机驱动  2025-3-13
张小姐 【求购】  条形编码带  2025-3-13
 【求购】  激光打印机  2025-3-13
郭啸天 【求购】  切割保护膜  2025-3-12
杜经理 【求购】  电子远程水...  2025-3-12
VIP公司推荐