01案例研究
三菱中断有三类,输入中断,定时中断,高速计数器中断。那么现在研究输入中断。
看一段示例程序:
未加中断延时的程序我们可以看到I后面三位数,这是硬件输入中断。
很显然,I是X3上升沿的输入中断,因为I就是上升沿中断,所以后面INCP的P是多余的,会导致按下X3的话,D0没有任何变化,因为I本来就是检测上升沿的,输入中断每个x里面只能有一个沿,所以中断里不要用沿指令,会有问题,这是一个注意的点。
我们主要说的问题是:按下X3,按一次D2会加一次,但是中断里的I中D0会加好多。这是什么原因呢?
因为按钮出现了抖动!
按钮抖动如上图:按钮在按下,再抬起来,从细微的角度看,按钮出现很多次抖动,即按下断开按下断开……,接通了很多次。但是为什么对D2没影响呢?
施耐德急停按钮开关XB2BSC红色蘑菇头1常闭ZB2-BEC紧急停止淘宝¥21.8¥45购买因为D0段程序属于中断,中断是不受扫描周期影响的,一旦触发,任何时候又沿就能触发,所以按的时候出现了很多抖动。这个出现抖动怎么解决呢?
办法一:使用有源器件,不要使用无源器件。这里所说的有源无源,可以理解为电源的意思。无源器件就是按钮,行程开关之类;有源器件如光电开关,接近开关。有源开关里面是电子电路,二极管,三极管之类的,不会出现抖动,如果出现抖动,那可能是损坏了。那么机械开关就不一样了,肯定会出现抖动,现在没有哪个厂商保证自己的无源按钮会不出现抖动,只能最大限度地减少抖动。
沪工感应器E3F-DS30C4M18漫反射光电开关直流三线NPN常开30cm可淘宝¥15购买无源按钮,行程开关有源接近开关办法二:采用中断延时。
通过软件来解决,就是程序里设置,比如,我们可以延时5秒再触发中断,也就是我们认为5秒后,按钮已经处于相对稳定状态,这时候再执行中断。
中断延时应该怎么做呢?
我们使用三菱里面M,D
M代表使用中断延时,D是数据寄存器,储存延时时间。
那么这里D相当于定时器的作用,时间储存在它里面,它的分辨率是10ms,我们通过MOV指令来给D赋值。
如:MOVKD;那么就是1s时间。
加延时中断后的程序从上图可以看出,X3按5次,D2的数值时5,D0的数值时8,相差不是太多,而D1在X2按下1次,就已经达到7,与未加中断延时的程序对比一下,还是很明显的。
02总结
虽然可以通过中断延时来减少按钮抖动的干扰,但是我们可以看出,采用中断本来要的就是速度,要的就是立刻执行,这就相当于立刻执行然后现在有了延时了,这是有悖于中断初衷的。所以第二种办法为了准确,尽量不要用,从根本上解决,还是用有源开关是最好的,第二种只能是辅助,因为它需要延时。
学习PLC步进电机丝杆滑台套装套件带编码器驱动器淘宝¥购买