您现在的位置是:首页 > PLC技术 > PLC技术

S7-300/400的硬件中断组织块

来源:艾特贸易2017-10-11

简介硬件中断组织块 (OB40~OB47) 用于快速响应信号模块( SM ,即输入 / 输出模块)、通信处理器 (CP) 和功能模块 (FM) 的信号变化。具有硬件中断功能的上述模块将中断信号传送到 CPU 时,将触

    硬件中断组织块(OB40~OB47)用于快速响应信号模块(SM,即输入/输出模块)、通信处理器(CP)和功能模块(FM)的信号变化。具有硬件中断功能的上述模块将中断信号传送到CPU时,将触发硬件中断。绝大多数S7 - 300 CPU只能使用OB40S7 - 400 CPU可以使用的硬件中断OB的个数与CPU的型号有关。

    为了产生硬件中断,在组态有硬件中断功能的模块时,应启用硬件中断。产生硬件中断时,如果没有生成和下载硬件中断组织块,操作系统将会向诊断缓冲区输入错误信息,并执行异步错误处理组织块OB80

    硬件中断OB默认的优先级为16~ 23,可以修改S7 - 400的优先级。

    硬件中断被模块触发后,操作系统将用OB40的局部变量向用户提供模块的起始地址和模块中产生硬件中断的点的编号。如果在处理硬件中断的同时,又出现了其他硬件中断事件,新的中断按以下方法识别和处理:如果正在处理某一中断事件,又出现了同一模块同一通道产生的完全相同的中断事件,新的中断事件将丢失,即不处理它。

    在图4-46中数字量输入模块输入信号的第一个上升沿时触发中断,由于正在用OB40处理中断,第2个和第3个上升沿产生的中断信号丢失。

硬件中断信号的处理

    4-46    硬件中断信号的处理

    如果正在处理某一中断信号时,同一模块其他通道或其他模块产生了中断事件,新的请求将被记录,空闲后再执行该中断。当前的中断组织块执行完后,再处理被记录的中断。

    1.硬件组态

    生成一个名为“OB40例程”的项目(见随书光盘中的同名例程),CPU模块的型号为CPU 315 -2DP。选中SIMATIC管理器左边的300站对象,双击右边窗口的“硬件”图标,打开硬件组态工具HW Config(见图4-47)。将硬件目录中名为“DI4xNAMUREx”的4DI模块插入4号槽,16DO模块插入5号槽。

组态硬件中断

    4-47    组态硬件中断

    自动分配的DI模块的字节地址为0。双击该模块,打开它的属性对话框(见图4-47的右图)。用复选框启用硬件中断,设置I0.0产生上升沿中断,I0.1产生下降沿中断。

    2.编写OB40中的程序

   OB40中的程序(见图4-48)判断是哪个模块的哪个点产生的中断,然后执行相应的操作。临时局部变量OB40_MDL_ADDROB40_POINT_ADDR分别是产生中断的模块的起始字节地址和模块内的位地址,数据类型分别为WORDDWORD,这两个变量不能直接用于整数比较指令和双整数比较指令。

    首先用MOVE指令将它们保存到MW6MD8,才能用比较指令判别是哪一个模块和哪一点产生的中断。在I0.0的上升沿将Q4.0置位,在I0.1的下降沿将Q4.0复位。

OB40中的程序

    4-48    OB40中的程序

    3.硬件中断的仿真实验

    打开PLCSIM(见图4-49),下载所有的块,将仿真PLC切换到RUN -P模式。执行PLCSIM的菜单命令“Execute”(执行)→“TriggerError OB”(触发错误OB)→“Hard-ware Interrupt( OB40 - OB47)…”,打开“HardwareInterrupt OB  (40 - 47)”对话框(见图4-49右上方的小图),在文本框“Moduleaddress”(模块地址)内输入模块的起始地址0,在文本框“Module status(POINT_ADDR)  (模块状态(位地址))内输入模块内的位地址0

    单击“Apply”(应用)按钮,触发I0.0的上升沿中断,CPU调用0840Q4.0被置为1状态,同时在“InterruptOB”(中断OB)显示框内自动显示出对应的OB编号40。将位地址( POINT_ADDR)改为1,模拟I0.1产生的中断,单击“Apply”按钮,在松开按钮时,Q4.0被复位为0状态:单击“OK”按钮,将执行与“Apply”按钮同样的操作,同时关闭对话框。

Execute菜单中的命令和模拟硬件中断的对话框

    4-49    Execute菜单中的命令和模拟硬件中断的对话框

    4.禁止和激活硬件中断

    4-50OB1中的程序,在I0.2的上升沿调用SFC 40(EN_IRT)激活OB40对应的硬件中断,在I0.3的上升沿调用SFC 39(DIS_IRT)禁止OB40对应的硬件中断。SFC中的MODE2时,OB_NR的实参为OB的编号。

    单击两次PLCSIMI0.3对应的小方框,OB40被禁止执行。这时用图4-49右上角的对话框模拟产生硬件中断,不会调用OB40。单击两次I0.2对应的小方框,OB40被允许执行,又可以用I0.0I0.1产生的硬件中断来控制Q4.0了。

OB1中激活和禁止硬件中断的程序

    4-50    OB1中激活和禁止硬件中断的程序