1.ATTACH指令与DETACH指令
“将OB附加到中断事件”指令ATTACH和“将OB与中断事件分离”指令DETACH分别用于在PLC运行时建立和断开硬件中断事件与中断OB的连接。
2.组态硬件中断事件
打开项目视图,生成一个名为“硬件中断例程2”的新项目(见随书光盘中的同名例程),CPU的型号为CPU1214C。打开项目视图中的文件夹“\PLC_1\程序块”,双击其中的“添加新块”,生成名为“硬件中断1”和“硬件中断2”的硬件中断组织块OB40和OB41。
选中设备视图中的CPU,再选中巡视窗口的“属性>常规”选项卡左边的“数字量输入”文件夹中的的通道0(即I0.0,见图4-46),用复选框启用上升沿中断功能。单击选择框“硬件中断”右边的按钮,将OB40(硬件中断1)指定给I0.0的上升沿中断事件。出现该中断事件时调用OB40。
3.程序设计
要求使用指令ATTACH和DETACH,在出现I0.0上升沿事件时,交替调用硬件中断组织块OB40和OB41,分别将不同的数值写入QB0。
在OB40中,用DETACH指令断开I0.0上升沿事件与OB40的连接(见图4-50),用ATTACH指令建立I0.0上升沿事件与OB41的连接。用MOVE指令给QB0赋值为16#F。
打开OB40,在程序编辑器上面的接口区生成两个临时局部变量RET1和RET2,用来做指令ATTACH和DETACH的返回值的实参。返回值是指令的状态代码。
打开指令列表中的“扩展指令”窗格的“中断”文件夹,将其中的指令DETACH拖放到程序编辑器,设置参数OB_NR(组织块的编号)为40。
图4-50 OB40的程序
双击中断事件EVENT左边的问号,然后单击出现的按钮(见图4-51),选中出现的下拉式列表中的中断事件“上升沿0”(I0.0的上升沿事件),其代码值为16#C0000108。在PLC默认的变量表的“系统常量”选项卡中,也能找到“上升沿0”的代码值。DETACH指令用来断开I0.0的上升沿中断事件与OB40的连接。如果没有指定参数EVENT的实参,当前连接到OB_NR指定的OB40的所有中断事件将被断开连接。
图4-50中的ATTACH指令将参数OB_NR指定的OB41连接到EVENT指定的事件“上升沿0”。在该事件发生时,将调用OB41。参数ADD为默认值0时,指定的事件取代连接到原来分配给这个OB的所有事件。(www.xing528.com)
图4-51 设置指令的参数
下一次出现I0.0上升沿事件时,调用OB41(见图4-52)。在OB41的接口区生成两个临时局部变量RET1和RET2,用DETACH指令断开I0.0上升沿事件与OB41的连接,用ATTACH指令建立I0.0上升沿事件与OB40的连接。用MOVE指令给QB0赋值为16#F0。
图4-52 OB41的程序
4.仿真实验
打开仿真软件S7-PLCSIM,下载所有的块,仿真PLC切换到RUN模式。打开SIM表1,生成I0.0和QB0的SIM表条目(见图4-53)。
图4-53 S7-PLCSIM的SIM表1
两次单击I0.0对应的小方框,在I0.0的上升沿,CPU调用OB40,断开I0.0的上升沿事件与OB40的连接,将该事件与OB41连接。将16#0F写入QB0,后者的低4位为1。
两次单击I0.0对应的小方框,在I0.0的上升沿,CPU调用OB41,断开I0.0的上升沿事件与OB41的连接,将该事件与OB40连接。将16#F0写入QB0,后者的高4位为1。
连续多次单击I0.0对应的小方框,由于OB40和OB41中的ATTACH和DETACH指令的作用,在I0.0奇数次的上升沿调用OB40,QB0被写入16#0F(低4位为1),在I0.0偶数次的上升沿调用OB41,QB0被写入16#F0(高4位为1)。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。