1. 延时中断OB块的功能
简单来说延时中断OB块就是,延时中断 OB块 在经过一段指定的时间延时后,才执行相应的 OB 块中的程序。
S7-1200 最多支持 4 个延时中断 OB块 ,通过调用“SRT_DINT”指令启动延时中断 OB块 。在使用“SRT_DINT”指令编程时,需要提供 OB 号、延时时间,当到达设定的延时时间,操作系统将启动相应的延时中断 OB块 ;尚未启动的延时中断 OB块 也可以通过“CAN_DINT”指令取消执行,同时还可以使用“QRY_DINT”指令查询延时中断的状态。延时中断 OB 的编号必须为20~23,或大于、等于123,比如OB20。
2.调用延时中断OB块的指令
指令名称
功能说明
SRT_DINT
当指令的使能输入 EN 上生成下降沿时,开始延时时间,超出参数 DTIME 中指定的延时时间之后,执行相应的延时OB 。
CAN_DINT
使用该指令取消已启动的延时中断(由 OB_NR 参数指定
OB 编号)。
QRY_DINT
使用该指令查询延时中断的状态。
3.延时中断 OB 块的执行过程
(1)调用“SRT_DINT”指令启动延时中断;
(2)当到达设定的延时时间,操作系统将启动相应的延时中断 OB块;
(3)图例中,延时中断 OB20 中断程序循环 OB1 优先执行;
(4)当启动延时中断后,在延时时间到达之前,调用“CAN_DINT”指令可取消已启动的延时中断。
4. 延时中断OB块使用示例
例如:当I0.1由1变成0,延时6秒后启动延时中断OB20,并输出Q0.0置位。
(1)按如下步骤创建延时中断 OB20 。如图1
图1
(2)打开 OB20 ,在 OB20 中编程,当延时中断执行时,置位 Q0.0。如图2
图2
(3)在 OB1 中编程调用“SRT_DINT”指令启动延时中断;调用“CAN_DINT”指令取消延时中断;调用“QRY_DINT”指令查询中断状态。在“指令->扩展指令->中断->延时中断”中可以找相关指令,如图3
图3
(4)调用延时中断指令。如图4
“SRT_DINT”指令参数说明:
EN
:=%I0.0
//当 EN 端出现下降沿时,延时计时开始
OB_NR
:=20
//延时时间后要执行的 OB 的编号
DTIME
:=T#5S
//延时时间(1 至 60000 ms)
SIGN
:=W#16#0001
//注:调用时必须为此参数赋值。但是,该值没有任何意义
RET_VAL
:=%MW0
//状态返回值(详细信息请查看在线帮助)
“CAN_DINT”指令参数说明:
EN
:=%I0.1
//当 EN 端出现上升沿时,取消延时中断
OB_NR
:=20
//需要取消的 OB 的编号
RET_VAL
:=%MW2
//状态返回值(详细信息请查看在线帮助)
“QRY_DINT”指令参数说明:
OB_NR
:=20
//需要查询状态的 OB 编号
RET_VAL
:=%MW4
//状态返回值(详细信息请查看S7-1200系统手册的指令参数帮助)
STATUS
:=%MW6
//延时中断的状态(详细信息请查看在线帮助)
图4
(5) 测试结果:
当 I0.1由1变0时,延时6s后延时中断执行,可看到 CPU 的输出 Q0.0 指示灯亮;
当 I0.1由1变0时,在延时的6s到达之前,如果 I0.2由0变1则取消延时中断,OB20 将不会执行。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。