硬件中断组织块(OB40~OB47)用于快速响应信号模块(SM,即输入/输出模块)、通信处理器(CP)和功能模块(FM)的信号变化。具有中断能力的上述模块将中断信号传送到CPU时,将触发硬件中断。绝大多数S7-300 CPU只能使用OB40。S7-400 CPU可以使用的硬件中断OB的个数与CPU的型号有关。
产生硬件中断时,如果没有生成和下载硬件中断组织块,操作系统将会向诊断缓冲区输入错误信息,并执行异步错误处理组织块OB80。
1.硬件组态
用新建项目向导生成一个名为“OB40例程”的项目(见随书光盘中的同名例程),CPU模块的型号为CPU 315-2DP。
选中SIMATIC管理器左边的300站对象,双击右边窗口的“硬件”图标,打开硬件组态工具HW Config(见图4-32)。将硬件目录中名为“DI4xNAMUR,Ex”的4点DI模块插入4号槽,16点DO模块插入5号槽。
自动分配的DI模块的字节地址为0。双击该模块,打开它的属性对话框(见图4-32)。用复选框启用硬件中断,设置I0.0产生上升沿中断,I0.1产生下降沿中断。
图4-32 组态硬件中断
2.编写OB40中的程序
OB40中的程序(见图4-33)判断是哪个模块的哪个点产生的中断,然后执行相应的操作。临时局部变量OB40_MDL_ADDR和OB40_POINT_ADDR分别是产生中断的模块的起始字节地址和模块内的位地址,数据类型分别为Word和DWord,这两个变量不能直接用于整数比较指令和双整数比较指令。将它们保存到MW6和MD8后,用比较指令判别是哪一个模块和哪一点产生的中断。在I0.0的上升沿将Q4.0置位,在I0.1的下降沿将Q4.0复位。
3.硬件中断的仿真实验
打开PLCSIM(见图4-34),下载所有的块后,将仿真PLC切换到RUN-P模式。执行PLCSIM的菜单命令“Execute”(执行)→“Trigger Error OB”(触发错误OB)→“Hardware Interrupt(OB40-OB47)…”,打开“Hardware Interrupt OB(40-47)”对话框(见图4-34右上方的小图),在文本框“Module address”(模块地址)内输入模块的起始地址0,在文本框“Module status(POINT_ADDR)”(模块状态(位地址))内输入模块内的位地址0。(www.xing528.com)
图4-33 OB40中的程序
图4-34 Execute菜单中的命令和模拟硬件中断的对话框
单击“Apply”(应用)按钮,触发设置的I0.0的上升沿中断,CPU调用OB40,Q4.0被置为1状态,同时在“Interrupt OB”(中断OB)显示框内自动显示出对应的OB编号40。将位地址POINT_ADDR改为1,模拟I0.1产生的中断,单击“Apply”按钮,在放开按钮时,Q4.0被复位为0状态。单击“OK”按钮,将执行与“Apply”同样的操作,同时关闭对话框。
4.禁止和激活硬件中断
在OB1中编写图4-35中的程序,在I0.2的上升沿调用SFC40(EN_IRT)激活OB40对应的硬件中断,在I0.3的上升沿调用SFC39(DIS_IRT)禁止OB40对应的硬件中断。SFC中的MODE为2时用OB的编号OB_NR指定中断。
点击两次PLCSIM中I0.3对应的小方框,OB40被禁止执行。这时用图4-34右上角的对话框模拟产生硬件中断,不会调用OB40。点击两次I0.2对应的小方框,OB40被允许执行。又可以用I0.0和I0.1来控制Q4.0了。
图4-35 OB1中激活和禁止硬件中断的程序
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。