S7-400 CPU可以使用的时间中断OB(OB10~OB17)的个数与CPU的型号有关。大多数S7-300 CPU只能使用OB10。可以用组态或编程的方法来启动时间中断。
可以设置在某一特定的日期和时间产生一次时间中断,也可以设置从设定的日期时间开始,周期性地重复产生中断,例如每分钟、每小时、每天、每周、每月、月末、每年产生一次时间中断。可以用专用的SFC28~SFC30来设置、取消和激活时间中断。
1.基于硬件组态的时间中断
要求在到达设置的日期和时间时,用Q4.0自动起动某台设备。用新建项目向导生成一个名为“OB10L1”的项目(见随书光盘中的同名例程),CPU模块的型号为CPU 315-2DP。
打开硬件组态工具HW Config,双击机架中的CPU,打开CPU的属性对话框。在“时间中断”选项卡(见图4-32),设置自动起动设备的日期和时间,执行方式为“一次”。用复选框激活中断,按“确定”按钮结束设置。单击工具栏上的 按钮,保存和编译组态信息。
图4-32 组态时间中断
在SIMATIC管理器中生成OB10,下面是用语句表编写的OB10的程序,设置的时间到时,将需要起动的设备对应的输出点Q4.0置位:
下面是OB1中的程序,用I0.0将Q4.0复位:
A I 0.0
R Q 4.0
打开PLCSIM,生成QB4的视图对象。下载所有的块和系统数据后,将仿真PLC切换到RUN-P模式。时间中断在PLC暖启动或热启动时被激活,在PLC启动过程结束之后才能执行。达到设置的日期和时间时,可以看到Q4.0变为1状态。
做实验时可以设置比当前的日期时间稍晚一点的日期和时间,以免等待的时间太长。
2.用SFC控制时间中断(www.xing528.com)
可以在用户程序中调用SFC来设置和激活时间中断。用新建项目向导生成一个名为“OB10_2”的项目(见随书光盘中的同名例程)。在OB1中调用SFC31“QRY_TINT”来查询时间中断的状态(见图4-33),读取的状态字用MW8保存。
IEC功能FC3“D_TOD_TD”用于合并日期和时间值,它在程序编辑器左边窗口的文件夹“\库\Standard Library\IEC Function Blocks”中。首先生成OB1的临时局部变量(TEMP)“DT1”,其数据类型为DateLAndLTime,“D_TOD_TD”的执行结果用DT1保存。
在I0.0的上升沿,调用SFC28“SET_TINT”和SFC30“ACT_TINT”来分别设置和激活时间中断OB10。在I0.1的上升沿,调用SFC29“CAN_TINT”来禁止时间中断。
各SFC的参数OBLNR是组织块的编号,SFC28“SET_TINT”用来设置时间中断,它的参数SDT是开始产生中断的日期和时间。PERIOD用来设置执行的方式,W#16#0201表示每分钟产生一次时间中断。RET_VAL是执行时可能出现的错误代码,为0时无错误。
下面是OB10中将MW2加1的STL程序:
L MW 2
+ 1
T MW 2
图4-33 OB1的程序
3.仿真实验
打开仿真软件PLCSIM,生成IB0、MB9和MW2(见图4-34)的视图对象,MB9是SFC31读取的状态字MW8的低位字节。下载所有的块后,将仿真PLC切换到RUN-P模式,M9.4变为1状态,表示已经下载了OB10。令I0.0为1状态,M9.2变为1状态,表示时间中断已被激活,如果设置的是已经过去的日期和时间,CPU将会每分钟调用一次OB10,将MW2加1。两次单击I0.1对应的小方框,在I0.1的上升沿,时间中断被禁止,M9.2变为0状态,MW2停止加1。两次单击I0.0对应的小方框,在I0.0的上升沿,时间中断被重新激活,M9.2变为1状态,MW2每分钟又被加1。
图4-34 PLCSIM
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。