GetError 与 GetErrorID 指令的使用
在 STEP7 11 中,可以通过GetError (获取本地错误信息)或者GetErrorID (获取本地错误ID )指令查询块内出现的错误。
请注意:GetError 和 GetErrorID 均支持块内的错误处理。当在程序块中调用GetError 或GetErrorID 指令后,如果该程序块发生错误,CPU则将忽略任何预定义的系统响应。也就是说CPU 会忽略此错误,而且CPU 的Error 灯(红色)也不会亮,CPU 也不会停机。所以说该指令在某种程度上也起到了抑制程序错误的作用,同时有一定的风险存在。
建议该指令在程序块中的最后一个网络中调用, 这样可以诊断整个程序块中的错误,如果在程序中间调用该指令,则后面的程序如果有错误,CPU 也会忽略错误,不会停机,也没有相关报错,将不利于问题的诊断。
1.GetError 与 GetErrorID 的调用
在编程界面下, 点击右侧 “指令-> 基本指令-> 程序控制操作” 中可以找到GetError及GetErrorID 两个指令。(见下图1)
2. GerError 指令的使用
GetError :使用“获取本地错误信息”指令,可以查询块内出现的错误。如果在块执行期间出现错误,则发生的第一个错误的详细信息将保存在输出 ERROR 中。消除第一个错误后,该指令会在Error 处输出下一个错误的信息。仅当使能输入 EN 的信号状态为“1”且显示了错误信息时,才置位“获取本地错误信息”指令的使能输出 ENO。
GetError 指令的输出参数Error 的数据类型为:ErrorStruct(见图2),请注意:常规的变量类型中并未包含此类型。
定义Error 变量的步骤:
1. 需要创建一个全局数据块并定义变量,例如变量名为Error,在DB 块中手动输入" Errorstruct ",该变量类型无法通过下拉列表选择(见图3)。
通常输入“ E ” 时就可以看见该变量类型,可以直接点选。(见图4)
定义后的Error 结构如下:(见图5),详细的参数介绍请参考该指令的帮助文件。(选中块, 按键盘上功能键 F1 )
3. 定义完成后可以直接在引脚输入所创建的DB 块的名称,即可在下拉框中找到所定义的Error 变量( 见图6)。
直接选择Error 即可完成输出参数的定义
可以通过打开DB 块,监控Error的状态判断程序是否报错。详细报错信息请参考该块的帮助(选中块, 按键盘上功能键 F1 )
例如: 在FC1 中编程调用一个不存在的地址 DB1.DBX0.0,此时GetError 指令执行, cpu 运行正常, 没有error 灯亮,诊断缓冲区也不会报错
注意:在TIA Protal v11 中,如果程序中使用了未定义的变量或未创建的变量,编译将会报警,但程序可以下载, 未定义变量不能通过变量分配,见下图
此时监控DB 块中Error 变量的状态, 根据监视值查询帮助可以知道 FC1 中调用的全局数据块 DB1 中,偏移地址0 不存在