quote:以下是引用稻田守望者在2008-12-17 15:33:13的发言:
看了各位的观点,我似乎对自己掌握的理论又有些怀疑了,我认为定时器和扫描周期是两个不同的概念,定时器是定时器,扫描周期是扫描周期。定时器只要是满足计时条件便会一直计时,直到到达预设值产生动作输出(到达预设值也可能继续计时,要看所用计数器类型或PLC类型);动作输出后怎么利用这一输出就要看编程者的意图了,利用的好于环、成功与失败,这时才和扫描周期联系上了。定时器能不能被有效的利用,能不能达到编程者的目的,主要看编程者的水平或能力了,“编程者”这个角色将定时器和扫描周期联系了起来,定时器和扫描周期是两个独立的不同的概念,就如同汽车和汽油一样,汽车和汽油的有机结合,公路上才有的形形色色奔跑的汽车。
其实你的想法也不是完全不正确的,定时器按在PLC里面的工作机制是分为:硬件计时器与软件计时器的,硬件计时器独立运行,是单独于扫描周期的。定时器只要是满足计时条件便会一直计时,但是只有高端一点的CPU才有此定时器。而软件定时器是与扫描周期密切相关的(如同你以前的认识),软件定时器的机理是,在一个扫描周期结束后或下次扫描到此线圈时,将当前时钟(有可能不是时钟,但是CPU的工作总要有一个CLOCK的)与上个周期中保存的值相比较后更新定时器的值,此种做法的优点是不要另设硬件,但缺点是精度不高,而且如果程序长,扫描周期长的话,计时值也不能太小。
总体来说:定时器的触点与定时器值的更新方式有以下几种:
第一种方式是独立于扫描周期,计时值更新与扫描周期异步,计时值到触点就运行。(如S7-300)
第二种是与扫描周期有关,是在扫描结束(或开始)时更新计时值与触点。(如S7-200的10mS时基类型的定时器)
第三种是与扫描周期有关,但不是在扫描结束时而是在下次扫描到计时器线圈时才做更新.(如S7-200的100mS时基类型的定时器,以及三菱的FX2N等)。
其实所谓的硬件计时器也不一定要由硬件来完成,比如模拟器就没有硬件定时器,但是对于S7-300的CPU不知道其是否支持多线程,如果支持也完全可以异步于扫描周期,但是用多线程实时性和精度都会有相应的损耗。
管理员注:本帖已被纳入此次探讨整理结果,请
点此详阅。