主程序:EI允许中断
X0的上升沿触发中断:复位测量结束为标志Y0,清除D0中的值,然后启动1ms的T246开始定时,退出X0中断程序后,T246继续定时
X1下降沿触发中断,来保存测量值,置位测量结束标志Y0,用Y0的常闭触点断开T246的线圈,用M8000的常开触点将T246复位。
离开X1的中中断程序I100后,在该程序用RST指令对T246的复位有保持功能,需要在用指针I1的表示X0的中断程序开始时,用一直断开的M8000的常闭触点来解除对T246的复位作用,否则T246不能再次定时。T246为1ms,最大设定值为32767,即X0和X1产生中断时间间隔应小于32.767s。
注:三菱PLC不能对中断进行仿真,需要下载到硬件中来操作。
基于中断的彩灯控制
这个就是PLC启动后自动开始进行彩灯移位闪亮。需要下载到硬件中去仿真。
1)源操作数[S]是元件编号个位为0的X,目标操作数[D1] 是元件编号个位为0的Y,目标操作数[D2] 是元件编号个位为0的Y、M和S,n的取值范围是2~8。
2)考虑到输入滤波应答延迟为10ms,对于每一个输出按20ms顺序中断,立即执行。
3)利用本指令通过8点晶体管输出获得64点输入,但读一次64点输入所许时间为20ms×8=160ms,不适应高速输入操作。
4)该指令只有16位运算,占9个程序步。
如下图,是一段程序,有一段主程序,还有2段中断程序I001和I200。假如只有主程序,那么程序结尾就需要一个END指令就可以,如果别别的程序,就需要和下图一样,在主程序区尾端假如一行FEND,主程序结束指令,把主程序和其他程序区分开。
中断程序写在主程序的后面,在左母线的左边输入中断程序的编号,I1代表从这一行开始是I001中断程序(中断指令的编号是3位的,I1就是I001)结束的标准是IRET。第二段中断程序从左母线I200的符号开始,结束时到IRET。这两段中断程序都比较段只有1行程序。
主程序时无时无刻执行的,那么中断程序怎么来触发的呢。首先,看我们程序的第一行,有一条EI指令,代表的是打开中断的功能,这个时候中断就被允许调用了。怎么通过来调用呢?有3种调用的方式。
1、中断的指针
用来指明某一中断源的中断程序入口,执行到中断返回指令IRET,返回中断事件出现时正在执行的程序。中断程序应放在FEND后面。
1)输入中断(I[]0[])
第一个空即I后第一位为产生中断的输入寄存器的软元件号,0后面的空为0或1,0代表下降沿中断,1代表上升沿中断。比如X5的下降沿产生中断,则中断指针为I500。
2)定时器中断(I[][][]),
一般有3点定时器中断,I6** ~ I8**,表达式中的低两位**代表以ms为单位的中断周期,I6,I7,I8开始定时器中断指针分别只能使用一次,定时器中断使PLC以指定的中断循环时间(10~99ms)周期性的执行中断子程序,循环处理某些任务,处理时间不受PLC扫描周期的影响。
本回答被网友采纳HSCS三菱的比较置位指令,高速计数器专用指令。必须是32位的(就是加D)。
C255的当前值设定为10000,当C255的计数值为5000时,Y10立即接通(不受扫描周期的影响)。
追问我在plc上试了,好像不行吗,大师。请在指教。
追答肯定行,估计你弄错了。你编码器怎么接的线?
追问大师你能告诉我你是怎样接线和运行的吗,跪求!
追答我用的编码器是无锡光洋的TRD-J360-RZL的。转一圈360个脉冲。接线方法是白色接PLC的X0,绿色接X1,黄色不接(接上也可以,接在X2,黄色线是Z相信号,也就是复位清零信号),红色接24V电源的正,黑色接负。高速计数器的编号用C251。如果用C255的话,那白色线接X3,绿色接X4,黄色接X5,再加一个开始计数信号X7(X7必须接通,否则转动编码器计数器不会计数)。
本回答被提问者采纳