成都西门子PLC模块授权代理商
西门子PLC硬件中断组织块怎么解决
硬件中断组织块(OB40~OB47)用于快速响应信号模块(SM,即输入/输出模块)、通信处理器(CP)和功能模块(FM)的信号变化。具有硬件中断功能的上述模块将中断信号传送到CPU时,将触发硬件中断。绝大多数S7-300 CPU只能使用OB40,S7-400 CPU 可以使用的硬件中断OB的个数与CPU的型号有关。
为了产生硬件中断,在组态有硬件中断功能的模块时,应启用硬件中断。产生硬件中断时,如果没有生成和下载硬件中断组织块,操作系统将会向诊断缓冲区输入错误信息,并执行异步错误处理组织块OB80。
硬件中断 OB 默认的**级为16~23,可以修改 S7-400的**级。
硬件中断被模块触发后,操作系统将用OB40的局部变量向用户提供模块的起始和模块中产生硬件中断的点的编号。如果在处理硬件中断的同时,又出现了其他硬件中断事件,新的中断按以下方法识别和处理如果正在处理某一中断事件,又出现了同一模块同一通道产生的完全相同的中断事件,新的中断事件将丢失,即不处理它。
在图4-46中数字量输入模块输入信号的一个上升沿时触发中断,由于正在用OB40处理中断,2个和3个上升沿产生的中断信号丢失。
如果正在处理某一中断信号时,同一模块其他通道或其他模块产生了中断事件,新的请求将被记录,空闲后再执行该中断。当前的中断组织块执行完后,再处理被记录的中断。
1.硬件组态
生成一个名为“OB40例程”的项目(见随书光盘中的同名例程),CPU模块的型号为CPU315-2DP。选中SIMATIC管理器左边的300站对象,双击右边窗口的“硬件”图标,打开硬件组态工具HW Config(见图4-47)。将硬件目录中名为“DI4xNAMUR,Ex”的4 点DI模块插入4号槽,16点D0模块插入5号槽。
图4-47 组态硬件中断
自动分配的DI模块的字节地址为0。双击该模块,打开它的属性对话框(见图4-47的右图)。用复选框启用硬件中断,设置10.0产生上升沿中断,10.1产生下降沿中断。
2. 编写OB40中的程序
OB40中的程序(见图4-48)判断是哪个模块的哪个点产生的中断,然后执行相应的操作。临时局部变量OB40_MDL_ADDR和OB40_POINT_ADDR分别是产生中断的模块的起始字节地址和模块内的位地址,数据类型分别为WORD和DWORD,这两个变量不能直接用于整数比较指令和双整数比较指令。
首先用MOVE指令将它们保存到MW6和MD8,才能用比较指令判别是哪一个模块和哪一点产生的中断。在10.0的上升沿将Q4.0置位,在10.1的下降沿将Q4.0复位。
图4-48 OB40中的程序
3.硬件中断的实验
打开PLCSIM(见图4-49),下载所有的块,将PLC切换到RUN-P模式。执行PLCSIM的菜单命令“Execute”(执行)→“Trigger Error OB”(触发错误OB)→“Hard-ware Interrupt(OB40-OB47)…”,打开“Hardware Interupt OB(40-47)”对话框(见图4-49右上方的小图),在文本框“Module address”(模块地址)内输入模块的起始地址0,在文本框“Module status(POINT_ADDR)”(模块状态(位地址))内输入模块内的位地址0。
单击“Apply”(应用)按钮,触发I0.0的上升沿中断,CPU调用OB40,Q4.0被置为1状态,同时在“Intermupt OB”(中断 OB)显示框内自动显示出对应的OB 编号40。将位地址(POINT_ADDR)改为1,模拟I0.1产生的中断,单击“Apply”按钮,在松开按钮时,Q4.0被复位为0状态。单击“0K”按钮,将执行与“Apply”按钮同样的操作,同时关闭对话框。
4.禁止和硬件中断
图4-50是OB1中的程序,在10.2的上升沿调用SFC40(EN_IRT)OB40对应的硬件中断,在I0.3的上升沿调用SFC39(DIS_IRT)禁止OB40对应的硬件中断。SFC中的MODE为2时,OB_NR的实参为0B的编号。
单击两次PLCSIM中I0.3对应的小方框,OB40被禁止执行。这时用图4-49右上角的对话框模拟产生硬件中断,不会调用OB40。单击两次10.2对应的小方框,OB40被允许执行,又可以用10.0和10.1产生的硬件中断来控制Q4.0了。
浔之漫智控技术(上海)有限公司专注于西门子等