您现在的位置是:首页 > PLC技术 > PLC技术
S7-300/400延时中断组织块
来源:艾特贸易2017-06-05
简介PLC 中的普通定时器的工作与扫描工作方式有关,其定时精度受到不断变化的循环周期的影响。延时中断组织块的延迟时间为 1~60000ms ,延时精度为 1ms ,优于定时器的精度。 S7 提供了
PLC中的普通定时器的工作与扫描工作方式有关,其定时精度受到不断变化的循环周期的影响。延时中断组织块的延迟时间为1~60000ms,延时精度为1ms,优于定时器的精度。
S7提供了4个延时中断OB( OB20~ OB23),它们用SFC 32“SRT_DINT”启动,延时时间在SFC 32中设置,启动后经过设定的延时时间之后触发中断,调用SFC 32指定的OB。需要延时执行的操作放在OB中,例如立即输出一个数字量信号。必须将延时中断OB作为用户程序的一部分下载到CPU。
CPU 316及以下的CPU只能使用OB20,其他CPU可以使用的日期时间中断OB的个数与CPU的型号有关。
如果延时中断已被启动,延时时间还没有到达,可以用SFC 33“CAN_DINT”取消延时中断的执行。SFC 34“QRY DINT”用来查询延时中断的状态字STATUS。
如果有下列任何一种情况发生,操作系统将会调用异步错误OB:
1) OB已经被SFC 32启动,但是没有下载到CPU。
2)延时中断OB正在执行延时,又有一个延时中断OB被启动。
【例6-3】 在主程序OB1中实现下列功能:
1)在I0.0的上升沿用SFC 32启动延时中断OB20,10s后OB20被调用,在OB20中将Q4.0置位,并立即输出。I0.2为1时Q4.0被复位。
2)在延时过程中如果I0.1由0变为1,用SFC 33取消延时中断,停止调用OB20。
项目的名称为“OB20例程”(见随书光盘中的同名例程)。下面是OB1中的程序代码:程序段1:在I0.0的上升沿启动延时中断
A I 0.0
FP M 1.0
JNB m001 //不是I0.0的上升沿时跳转
CALL “SRT_DINT” //启动延时中断OB20
OB_NR :=20 //组织块编号
DTIME :=T#10S //延时时间为10s
SIGN :=MW12 //保存延时中断是否启动的标志
RET_VAL :=MW100 //保存执行时可能出现的错误代码,为0时无错误
m001: NOP 0
程序段2:查询延时中断
CALL“QRY_DINT" //调用SFC 34,查询延时中断OB20的状态
OB_NR :=20 //组织块编号
RET_VAL :=MW102 //保存执行时可能出现的错误代码,为0时无错误
STATUS :=MW4 //保存延时中断的状态字,MB5为低字节程序段3:在10.1的上升沿取消延时中断
A 1 0.1
FP M 1.1 //I0.1的上升沿检测
A M5.2 //延时中断未被激活或已完成(状态字第2位为0)时跳转
JNB m002
CALL “CAN_DINT” //调用SFC 33禁止OB20延时中断
OB_NR :=20 //组织块编号
RET_VAL :=MW104 //保存执行时可能出现的错误代码,为0时无错误
m002: NOP 0
A 1 0.2
R Q 4.0 //0.2为“1”时复位Q4.0
下面是用STL编写的OB20的程序代码:
SET
= Q 4.0 //将Q4.0无条件置位
LQW 4
TPQW 4 //立即输出Q4.0
可以用PLCSIM仿真软件模拟运行上述例程,运行时监视M5.2和M5.4。将程序下载到仿真PLC,进入RUN模式时,M5.4马上变为1状态,表示OB20已经下载到了CPU中。用I0.0启动延时中断后,M5.2变为1状态,延时时间到时Q4.0变为1状态,M5.2变为0状态。在延时过程中用I0.1禁止OB20延时,M5.2也会变为0状态。可以用I0.2复位Q4.0。
点击排行
