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