循环中断组织块用于按时间间隔循环执行中断程序,例如周期性执行闭环控制PID控制程序,间隔时间从cpu从STOP切换到RUN开始计算。S7-300大多数只能使用OB35,其余CPU可以实用的循环中断OB的个数和CPU型号有关。时间间隔不能小于5ms。时间间隔过短,还没有执行完循环中断程序又开始调用它,将会产生时间错误时间,调用OB80,如果没有调用OB80,CPU将进入STOP。
举例说明:
硬件组态如下:采用CPU315-2DP,双击硬件组态中的CPU,打开属性对话框,由【周期性中断】选项卡可知只能使用OB35。
3、时间中断组织块
300CPU只能使用OB10,400CPU可以使用OB10~17,可以设置在某一个特定的日期时间产生一次时间中断,也可以设置从设定日期时间开始,周期性的重复产生中断,可以用SFC28~SFC30设置、取消和时间中断。
1)、基于硬件组态的时间中断
要求在到达设置的日期和时间时,用Q4.0自动启动某台设备。具体如下:
硬件组态:打开CPU属性中的“时刻中断”选项卡,设置执行启动设备的日期和时间,执行为“一次”。
2)用SFC控制时间中断
除了在硬件组态功能中设置和时间中断外,也可以在用户程序中调用SFC来设置和时间中断,
在I0.0的上升沿调用SFC28和SFC30分别来设置和时间中断OB10。用I0.1调用SFC29来禁止时间中断。各SFC的参数中的RET_VAL是执行时可能出现的错误代码,为0时无错误,OB_NR是组织块编号,SFC28用来设置时间中断,它的参数SDT是开始产生中断的日期和时间。PERIOD用来设置执行,w#16#0201表示每分钟产生一次中断。
4、硬件中断组织块
OB40~47用于快速响应模块、通信模块和功能模块的变化,具有硬件中断功能的上述模块将中断传送给到CPU时,将触发硬件中断,S7-300只能用OB40。
)编写OB40程序
判断是哪个模块的哪个点产生中断,执行相应的操作。
3)禁止和硬件中断
OB1程序在I0.2的上升沿调用SF0OB40对应的硬件中断,I0.3的上升沿调用SFC39禁止OB40对应的硬件中断,SFC的MODE为2时,OB_NR为实参的OB的编号
5、延时中断组织块
PLC的普通定时器的工作和扫描工作有关,其定时精度较差,需要高精度的延时,应使用延时中断OB,用SFC32启动延时中断,延时时间1~60000ms,精度为1ms,
硬件组态
OB40程序:在I0.0的上升沿出发硬件中断,CPU调用OB40,在OB40中调用SFC32启动延时中断,延时10s,从LD12开始8B临时局部变量是调用OB40的日期时间,用MOVE指令讲起中的后4个字节LD16保存到MD20中。
10s延时时间到,CPU调用SFC32的OB20.在OB20中用MOVE保存调用OB20的日期时间的后4个字节,将Q4.0置为,并通过PQB4立即输出。
用I0.2将Q4.0复位,在OB1调用SFC34来查询延时中断的状态字,查询结果用MW8保存,其低字节为MB9,OB_NR的实参是延时中断OB的编号。RET_VAL为SFC执行时的错误代码,为0时无错误。