在下面的项目中,首先将硬件中断组织块OB40分配给I0.0的上升沿中断事件,该中断事件出现时,调用OB40。在OB40中,用DETACH指令断开I0.0上升沿事件与OB40的连接,用ATTACH指令建立I0.0上升沿事件与OB41的连接。
当下一次出现I0.0上升沿事件时,调用OB41。在OB41中,用DETACH指令断开I0.0上升沿事件与OB41的连接,用ATTACH指令建立I0.0上升沿事件与OB40的连接。用这样的方法,可以用OB40和OB41轮流处理I0.0的上升沿中断事件。
1.生成硬件中断组织块
打开STEP 7 Basic的项目视图,生成一个名为“硬件中断2”的新项目。双击项目树中的“添加新块”,添加CPU的型号为CPU 1214C。
打开项目视图中的文件夹"\PLC_1\程序块”,双击其中的“添加新块”,点击打开的对话框中的“组织块”按钮,选中“Hardware interrupt”,将块的名称设置为“Hardware interruptl”,生成硬件中断组织块 OB40。用同样的方法生成名为Hardware interrupt2的硬件中断组织块OB41。
2.组态硬件中断事件
首先选中设备视图中的 CPU,打开巡视窗口的“属性”选项卡,选中左边的“数字输入”文件夹中的通道 0(即 I0.0,见图 5.40),用复选框激活上升沿中断功能。用下拉式列表将OB40指定给I0.0的上升沿中断事件。
3.ATTACH与DETACH指令
指令ATTACH和DETACH分别用于在PLC运行时建立和断开硬件中断事件与中断OB1的连接。
中断分离指令DETACH用来断开硬件中断事件与中断OB的连接(见图5.46),禁止在出现指令指定的硬件中断事件时执行指定的中断 OB。输入参数 OB_NR 是 OB 的编号,EVENT是指定的事件的编号,返回值是执行的条件代码。如果没有指定参数EVENT,当前连接到OB_NR的所有事件将被断开连接。
中断连接指令ATTACH将OB_NR指定的组织块连接到EVENT指定的事件。在指定的事件发生时,将调用指定的OB。如果执行指令时没有OB连接到指定的事件,该指令的功能被忽略。
当参数ADD为0默认值时,指定的事件取代连接到原来指定给这个OB的所有事件。(www.xing528.com)
4.编写组织块的程序
打开 OB40,在程序编辑器上面的界面区生成两个临时局部变量RET1和RET2(见图5.46),用来作指令ATTACH和DETACH的返回值的参数。
打开右边的“扩展指令”窗口的“中断”文件夹,将其中的指令DETACH拖放到程序编辑器,双击参数OB_NR左边的问号,然后点击出现的按钮(见图5.47),出现的下拉式列表显示出已有的硬件中断OB,设置OB_NR的实参为OB_Hardware interrupt1(即OB40)。用同样的方法设置参数EVENT的实参为Rising edge0(代码为16#C0000108)。DETACH指令用来断开I0.0的上升沿中断事件与OB40的连接。
图5.46 OB40的程序
图5.47 用下拉式列表设置指令的参数
用同样的方法生成指令ATTACH,和设置它的参数,建立I0.0的上升沿中断事件与OB41的连接。
如图5.48所示为OB41中的程序,断开I0.0的上升沿中断事件与OB41的连接后,建立起该中断事件与OB40的连接。
图5.48 OB41的程序
将用户程序和组态数据下载到CPU,进入RUN模式后,连续扳动I0.0外接的小开关。由于OB40和OB41中的ATTACH和DETACH指令的作用,在I0.0奇数次的上升沿,QB0被写入16#F(低4位为1),在I0.0偶数次的上升沿,QB0被写入16#F0(高4位为1)。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。