1.功能
循环中断 OB 在经过一段固定的时间间隔后执行相应的中断 OB 中的程序。
S7-1200 最多支持 4 个循环中断 OB ,在创建循环中断 OB 时设定固定的间隔扫描时间。在 CPU 运行期间,可以使用“SET_CINT”指令重新设置循环中断的间隔扫描时间、相移时间;同时还可以使用“QRY_CINT”指令查询循环中断的状态。循环中断 OB 的编号必须为30~38,或大于、等于123。
2.循环中断 OB 的使用
例如:运用循环中断,使 Q0.0 500ms输出为1,500ms输出为0,即实现周期为1s的方波输出。具体实现过程如下:
2-1创建循环中断 OB30
2-2当循环中断执行时,Q0.0 以方波形式输出
2-3在 OB1 中编程调用“SET_CINT”指令,可以重新设置循环中断时间,例如:CYCLE=1s(即周期为2s);调用“QRY_CINT”指令可以查询中断状态。在“指令->扩展指令->中断->循环中断”中可以找相关指令
2-4程序下载后,可看到 CPU 的输出 Q0.0 指示灯0.5s亮,0.5s灭交替切换;当 M100.0 由0变1时,通过“SET_CINT”将循环间隔时间设置为1s,这时,可看到 CPU 的输出 Q0.0 指示灯1s亮,1s灭交替切换。
2-5当使用多个时间间隔相同的循环中断事件时,设置相移时间可使时间间隔相同的循环中断事彼此错开一定的相移时间执行。请通过如下两幅图例理解相移时间的概念。
无相移时间:
有相移时间:
如果以相同的时间间隔调用优先级较高和优先级较低的循环中断 OB ,则只有在优先级较高的 OB 完成处理后才会执行优先级较低的 OB 。低优先级 OB 的执行起始时间会根据优先级较高的 OB 的处理时间而延迟,如果希望以固定的时间间隔来执行优先级较低的 OB ,则优先级较低的 OB 需要设置相移时间,且相移时间应大于优先级较高的 OB 的执行时间。
2-6如何设置相移时间
2-7使用循环中断需要注意什么?
1、循环中断 + 延时中断数量 <= 4;
2、循环间隔时间1~60000ms,通过指令“SET_CINT”设置错误的时间将报错16#8091;
3、CPU 运行期间,可通过“SET_CINT”指令设置循环中断间隔时间、 相移时间;
4、如果“SET_CINT”指令的使能端 EN 为脉冲信号触发;则 CPU 的操作模式从 STOP 切换到 RUN 时执行一次,循环中断间隔时间将复位为 OB 块属性中设置的数值;
5、如果循环中断执行时间大于间隔时间,将会导致时间错误。