1.附加和分离指令
使用ATTACH和DETACH指令可在运行期间对中断事件所对应的中断程序进行分配。
①ATTACH使中断OB子程序与特定的硬件中断事件相关联,其指令如图7.39所示。
②DETACH使中断OB子程序与特定的硬件中断事件相分离,其指令如图7.40所示。
图7.39 ATTACH指令
图7.40 DETACH指令
附加分离指令引脚说明如表7.29所示。
表7.29 附加分离指令引脚说明
(1)硬件中断事件。
CPU支持以下硬件中断事件。
①上升沿事件:所有内置CPU数字量输入外加任何信号板数字量输入,当数字输入从OFF切换为ON时会出现上升沿,以响应连接到输入的现场设备的信号变化。
②下降沿事件:所有内置CPU数字量输入外加任何信号板输入,当数字输入从ON切换为OFF时会出现下降沿。
③高速计数器(HSC):当前值=参考值(CV=RV)事件(HSC 1至6),当前计数值从相邻值变为与先前设置的参考值完全匹配时,会生成HSC的CV=RV中断。
④HSC方向变化事件(HSC 1至6):当检测到HSC从增大变为减小或从减小变为增大时,会发生方向变化事件。
⑤HSC外部复位事件(HSC 1至6):某些HSC模式允许分配一个数字输入作为外部复位端,用于将HSC的计数值重置为零。当该输入从OFF切换为ON时,会发生此类HSC的外部复位事件。
(2)在设备配置期间启用硬件中断事件。
必须在设备配置中启用硬件中断。如果要在配置或运行期间附加此事件,则必须在设备配置中为数字输入通道或HSC选中启用事件框。
PLC设备配置中的复选框选项:
①数字输入
—启用上升沿检测 —启用下降沿检测
②高速计数器(HSC)
—启用此高速计数器 —生成计数器值等于参考计数值的中断
—生成外部复位事件的中断 —生成方向变化事件的中断
(3)向用户程序添加新硬件中断OB代码块。
默认情况下,第一次启用事件时,没有任何OB附加到该事件。这会通过“HW中断:”设备配置“<未连接>”(<not connected>)标签来指示。只有硬件中断OB能附加到硬件中断事件。所有现有的硬件中断OB都会出现在“HW中断:”下拉列表中。如果未列出任何OB,则必须按下列步骤创建类型为“硬件中断”的OB。
①在项目树的“程序块”(Program Blocks)分支下,双击“添加新块”(Add New Block),选择“组织块(OB)”(Organization Block(OB)),然后选择“硬件中断”。
②可以重命名OB、选择编程语言(LAD或FBD)以及选择块编号(切换为手动并选择与建议块编号不同的块编号)。
③编辑该OB,添加事件发生时要执行的已编程响应。可以从此OB调用最多嵌套四层的FC和FB。
(4)OB_NR参数。
所有现有的硬件中断OB名称都会出现在设备配置“HW中断:”下拉列表和ATTACH/DETACH参数OB_NR下拉列表中。
(5)EVENT参数。
启用某个硬件中断事件时,将为该事件分配一个唯一的默认事件名称。可通过编辑“事件名称:”(Event name:)编辑框更改此事件名称,但必须是唯一的名称。这些事件名称将成为“常量”(Constants)变量表中的变量名称,并出现在ATTACH和DETACH指令框的EVENT参数下拉列表中。变量的值用于标识事件的内部编号。
(6)常规操作。
每个硬件事件都可附加到一个硬件中断OB中,在发生该硬件中断事件时,将排队执行该硬件中断OB。在组态或运行期间可附加OB事件。
用户可以在组态时,将OB附加到已启用的事件或使其与该事件分离。要在组态时将OB附加到事件,必须使用“HW中断:”下拉列表(单击右侧的向下箭头)并从可用硬件中断OB的列表中选择OB。从该列表中选择相应的OB名称,或者选择“<未连接>”(<not connected>)以删除该附加关系。
也可以在运行期间附加或分离已启用的硬件中断事件。在运行期间使用ATTACH或DETACH程序指令(如有必要可多次使用)将已启用的中断事件附加到相应的OB或与其分离。如果当前未附加到任何OB(选择了设备配置中的“<未连接>”(<not connected>)选项或由于执行了DETACH指令),则将忽略已启用的硬件中断事件。(www.daowen.com)
(7)DETACH操作。
使用DETACH指令将特定事件或所有事件与特定OB分离。如果指定了EVENT,则仅将该事件与指定的OB_NR分离;当前附加到此OB_NR的任何其他事件仍保持附加状态。如果未指定EVENT,则分离当前连接到OB_NR的所有事件。
(8)条件代码,如表7.30所示。
表7.30 条件代码
2.起动和取消延时中断指令
通过SRT_DINT和CAN_DINT指令可以起动和取消延时中断处理过程。每个延时中断都是一个在指定的延迟时间过后发生的一次性事件。如果在延迟时间到期前取消延时事件,则不会发生程序中断。SRT_DINT指令如图7.41所示,CAN_DINT指令如图7.42所示。
图7.41 SRT_DINT指令
图7.42 CAN_DINT指令
参数DTIME指定的延迟时间过去后,SRT_DINT会起动执行OB(组织块)子程序的延时中断。CAN_DINT可取消已起动的延时中断。在这种情况下,将不执行延时中断OB。
(1)SRT_DINT参数,如表7.31所示。
表7.31 SRT_DINT参数
(2)CAN_DINT参数,如表7.32所示。
表7.32 CAN_DINT参数
(3)操作。
SRT_DINT指令指定延迟时间、起动内部延迟时间定时器以及将延时中断OB子程序与延时超时事件相关联。指定的延迟时间过去后,将生成可触发相关延时中断OB执行的程序中断。在指定的延时发生之前执行CAN_DINT指令可取消进行中的延时中断。激活延时和时间循环中断事件的总次数不得超过四次。
(4)在项目中添加延时中断OB子程序。
只有延时中断OB可分配给SRT_DINT和CAN_DINT指令。新项目中不存在延时中断OB,必须将延时中断OB添加到项目中。要创建延时中断OB,操作步骤如下。
①在项目树的“程序块”(Program Blocks)分支中双击“添加新块”(Add New Block),选择“组织块(OB)”(Organization Block(OB)),然后选择“延时中断”(Time Delay Interrupt)。
②可以重命名OB、选择编程语言或选择块编号。如果要分配与自动分配的编号不同的块编号,请切换到手动编号模式。
③编辑延时中断OB子程序,并创建要在发生延时超时事件时执行的已编程响应。可从延时中断OB调用其他最多嵌套四层深的FC和FB代码块。
④编辑SRT_DINT和CAN_DINT指令的OB_NR参数时,将可以使用新分配的延时中断OB名称。
(5)条件代码,如表7.33所示。
表7.33 条件代码
3.禁用和启用报警中断指令
使用DIS_AIRT和EN_AIRT指令可禁用和启用报警中断处理过程。
DIS_AIRT可延迟新中断事件的处理。在OB中可以多次执行DIS_AIRT,其执行次数由操作系统进行计数,并存储在整形参数RET_VAL中,只有当参数RET_VAL=0时,才会再次启用中断处理。在通过EN_AIRT指令取消禁用指令之前或者在已完成处理当前OB之前,这些执行中的每一个禁用指令都保持有效。DIS_AIRT指令如图7.43所示,EN_AIRT指令如图7.44所示。
图7.43 DIS_AIRT指令
图7.44 EN_AIRT指令
对先前使用DIS_AIRT指令禁用的中断事件处理,可使用EN_AIRT来启用。每一次DIS_AIRT执行都必须通过一次EN_AIRT执行来取消。例如,如果通过五次DIS_AIRT执行禁用中断五次,则必须通过五次EN_AIRT执行来取消。禁用指令取消后,将立即处理DIS_AIRT生效期间所发生的中断,或者在完成执行当前OB后,立即处理中断。
必须在同一个OB中或从同一个OB调用的任意FC或FB中完成EN_AIRT执行后,才能再次启用此OB的中断。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。