在《求个最简洁的》题目下,我有一个写给<winter938 >网友参考的程序片断(如图1所示)。其程序的构思虽比较简单,但是也有些人在阅读时不动脑筋而对程序的功能理解出了偏差。现在我用图解的方式来讲解,尽量用初学者都能懂的形式把程序的功能讲清楚。
下面这个图1 就是用于实现(在PLC进入RUN状态已达3秒之后)“在任意不足3秒的时间段内,若X1输入的脉冲前沿达到3个,则输出Y1,从X1的任意一个输入脉冲前沿起,3秒以内达不到有3个输入脉冲前沿出现,则停止Y1。”这一目标功能的程序片断:
(图1)
这个片断虽不够是“最简洁的”,但是,它却是能正确实现上述目标功能的程序片断。在程序构思上比较符合一般人的思维顺序,比较容易使人理解。
两个相同分辨率的计时器在程序中一前一后的两个时刻驱动,不仅仅是要相隔50mS稍多1点的时差,才会有可能发生两计时器一个处在时钟信号的“ON半周”,另一个处在“OFF半周”的情形。即便是只相隔“千分之一毫秒”,也有可能发生一个处在“ON半周”而另一个处在“OFF半周”从而俩计时器对第1个时钟脉冲来说一个计了数而另一个却没有计到这个脉冲,造成两个计时器当前值相差1个时基单位!只不过发生这种情况的几率太小,我们业余的条件下无法用简陋的实验器材来可靠的检测到这种情况。但是,我们可以把检测条件稍微的放宽一点来检测出“小于50毫秒的时差,两计时器当前值相差1个时钟单位”的事实依据:
把上面的实验程序稍微的改动一下,就能在FX1s系列的PLC上检测出驱动时差4mS 的两计时器的当前值相差1个时钟单位。修改后的测试程序如下:
T1滞后于T0的驱动时差仅为4毫秒,其当前值的第1次加“1”却比T1要晚50mS稍多一点 !