回复:技术专题探讨-SIMATIC PLC 计时器的使用

四书五经

  • 帖子

    762
  • 精华

    58
  • 被关注

    30

论坛等级:侠圣

注册时间:2005-12-23

普通 普通 如何晋级?

发布于 2008-12-20 22:46:46

0楼

看到第一个问题,我首先想到的是STEP7 MICROWIN帮助里的识别 S7-200 定时器指令一节中,关于S7-200三种分辨率定时器更新方式的介绍。原文如下:
1毫秒分辨率
1毫秒定时器记录自现用1毫秒定时器启用以来1毫秒定时器间隔的数目。执行定
时器指令即开始计时;但是,1毫秒定时器每毫秒更新一次(定时器位及定时器
当前值),不与扫描循环同步。换言之,在超过1毫秒的扫描过程中,定时器位
和定时器当前值将多次更新。

10毫秒分辨率
10毫秒定时器记录自现用10毫秒定时器启用以来10毫秒定时器间隔的数目。执行定时器指令即开始计时;但是,在每次扫描循环的开始更新10毫秒定时器,其方法是以当前值加上积累的10毫秒间隔的数目(自前一次扫描开始算起)(换言之,在整个扫描过程中,定时器当前值及定时器位保持不变)

联想到S7-300/400里S5定时器的最小时基是10MS(也就是说最小分辨率为10MS),开始想S5定时器更新方式可能和200中10毫秒定时器的更新方式差不多,但经过前面兄弟的讨论再加上做实验,应该能够断定S5定时器的更新方式和200中10毫秒定时器的更新方式不一样,而应该和S7200中1MS定时器的更新方式一样,异步更新,与扫描周期没有关系。但S5定时器的最小时基是10MS,它应该是10MS更新一次定时器当前值和定时器位。这样的话就会出现这种情况:当OB1扫描周期远小于10MS时,定时器在一个扫描周期内不会更新状态位,而可能在几个扫描周期后,在OB1的任何位置更新状态位。如当OB1扫到最后时,定时器的当前值为799(以8S为例,时基为10MS),这时OB1检测T3定时器位为FALSE,置位指令不执行。当下一个扫描周期开始时,T3定时器当前值为800,T3定时器位为TURE,T2复位,根据逻辑,T3定时器被复位。OB1扫描到最后,检测T3定时器位仍然为FALSE,所以置位指令还是不执行。而也有可能正好OB1扫描到最后时,定时器当前值正好为800(以8S为例,时基为10MS),这时T3定时器位为TRUE,S指令会置位。这也解释了楼上兄弟说偶尔也看到过S指令置位的情况。但这种概率几乎不可能。当调用SFC47,延长扫描周期时,扫描周期越接近10MS,S指令置位的概率就越大,当扫描周期远大于10MS时,概率几乎100%(也就是说在一个扫描周期内定时器肯定会更新一次)。
其实在STEP7 MICROWIN帮助里有SIEMENS的解决方案,程序如下图所示(程序虽不一样,但原理一样):

管理员注:本帖已被纳入此次探讨整理结果,请点此详阅
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。