首页 理论教育 扩展指令中的程序控制指令优化方案

扩展指令中的程序控制指令优化方案

时间:2023-06-29 理论教育 版权反馈
【摘要】:本小节中的指令在STEP 7右边的任务卡的“扩展指令”窗口的文件夹“程序控制”中。该指令仅在优先级为1的程序循环OB和它调用的块中起作用;该指令在OB80中将被忽略。图5.2RE_TRIGR与STP指令在组态CPU时,可以用参数“循环时间”设置最大扫描循环时间,默认值为l50 ms。图5.4定义ErrorStruct数据GET_ERR_ID 指令用来报告错误的 ID(标识符)。将它们放在被调用块的最后一个程序段,以报告被调用块的最后执行状态。

扩展指令中的程序控制指令优化方案

本小节中的指令在STEP 7右边的任务卡的“扩展指令”窗口的文件夹“程序控制”中。

1.RE_TRIGR指令

监控定时器又称看门狗(Watchdog),每次扫描循环它都被自动复位一次,正常工作时最大扫描循环时间小于监控定时器的时间设定值,它不会起作用。

以下情况扫描循环时间可能大于监控定时器的设定时间,监控定时器将会起作用。

(1)用户程序很长。

(2)一个扫描循环内执行中断程序的时间很长。

(3)循环指令执行的时间太长。

可以在程序中的任意位置使用指令 RE_TRIGR(重新触发循环时间监视)来复位监控定时器(见图5.2)。该指令仅在优先级为1的程序循环OB和它调用的块中起作用;该指令在OB80中将被忽略。如果在优先级较高的块中(例如硬件中断、诊断中断和循环中断OB)调用该指令,使能输出ENO被置为0,则不执行该指令。

图5.2 RE_TRIGR与STP指令

组态CPU时,可以用参数“循环时间”设置最大扫描循环时间,默认值为l50 ms。

2.STP指令

STP指令的EN输入为l状态时,使PLC进入STOP模式。STP指令使CPU集成的输出、信号板和信号模块的数字量输出或模拟量输出进入组态时设置的安全状态。可以使输出冻结在最后的状态,或用替代值设置为安全状态。默认的数字量输出状态为FALSE,默认的模拟量输出值为0。

3.GET_ERROR与GET_ERR_ID指令

GET_ERROR指令用来提供有关程序块执行错误的信息。用输出参数ERROR(错误)显示发生的程序块执行错误(见图5.3),并且将详细的错误信息填入预定义的ErrorStruct(错误结构)数据类型(见表5.1)。可以用程序来分析错误信息,并作出适当的响应。当第一个错误消失时,指令输出下一个错误的信息。(www.xing528.com)

图5.3 读取错误信息的指令

在块的界面定义一个名为ERROR1的变量(见图5.4)来作参数ERROR的实参,用下拉式列表设置接数据类型为ErrorStruct。也可以在数据块中定义ERROR的实参。

图5.4 定义ErrorStruct数据

GET_ERR_ID 指令用来报告错误的 ID(标识符)。如果块执行时出现错误,且指令的EN输入为 1 状态时,则出现的第一个错误ID保存在指令的输出参数“ID”中,ID的数据类型为Word。当第一个错误消失时,指令输出下一个错误的ID。

作为默认的设置,PLC对程序块执行出现错误的响应方式是将错误记录在诊断缓冲区,并使CPU切换到STOP模式。

如果在代码块中调用GET_ERROR与GET_ERR_ID指令,当出现错误时PLC不再作出上述的响应,详细的错误信息将由GET_ERROR指令的输出参数ERROR来提供,错误的标识符(ID)在GET_ERR_ID指令的输出参数ID指定的地址中。通常第一条错误是最重要的,后面的错误均由第一条错误引起。

如果GET_ERROR或GET_ERR_ID指令的ENO为l状态,则表示出现了代码块执行错误,有错误数据可用。如果ENO为0状态,则表示没有代码块执行错误。

可以用GET_ERROR和GET_ERR_ID的ENO来连接处理错误的程序。

GET_ERRORR和GET_ERR_ID可以用于从当前执行的块(被调用的块)发送错误信息给调用它的块。将它们放在被调用块的最后一个程序段,以报告被调用块的最后执行状态。

4.ErrorStruct数据类型的结构(见表5.1)

表5.1 ErrorStruct数据类型的结构

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈