0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

GetError与GetErrorID指令的区别与应用场景分析

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 作者:机器人及PLC自动化 2022-03-14 17:55 次阅读

GetError 与 GetErrorID 指令的使用

在 STEP7 11 中,可以通过GetError (获取本地错误信息)或者GetErrorID (获取本地错误ID )指令查询块内出现的错误。

8f2980d4-9384-11ec-952b-dac502259ad0.jpg请注意:GetError 和 GetErrorID 均支持块内的错误处理。当在程序块中调用GetError 或GetErrorID 指令后,如果该程序块发生错误,CPU则将忽略任何预定义的系统响应。也就是说CPU 会忽略此错误,而且CPU 的Error 灯(红色)也不会亮,CPU 也不会停机。所以说该指令在某种程度上也起到了抑制程序错误的作用,同时有一定的风险存在。

建议该指令在程序块中的最后一个网络中调用, 这样可以诊断整个程序块中的错误,如果在程序中间调用该指令,则后面的程序如果有错误,CPU 也会忽略错误,不会停机,也没有相关报错,将不利于问题的诊断

1. GetError 与 GetErrorID 的调用

编程界面下, 点击右侧 “指令-> 基本指令-> 程序控制操作” 中可以找到GetError及GetErrorID 两个指令。(见下图1)

8f370164-9384-11ec-952b-dac502259ad0.jpg

图1.

2. GerError 指令的使用

GetError:使用“获取本地错误信息”指令,可以查询块内出现的错误。如果在块执行期间出现错误,则发生的第一个错误的详细信息将保存在输出 ERROR 中。消除第一个错误后,该指令会在Error 处输出下一个错误的信息。仅当使能输入 EN 的信号状态为“1”且显示了错误信息时,才置位“获取本地错误信息”指令的使能输出 ENO。

GetError 指令的输出参数Error 的数据类型为ErrorStruct(见图2),请注意:常规的变量类型中并未包含此类型。

8f4d4a6e-9384-11ec-952b-dac502259ad0.jpg

图2

定义Error 变量的步骤:

1.需要创建一个全局数据块并定义变量,例如变量名为Error,在DB 块中手动输入" Errorstruct ",该变量类型无法通过下拉列表选择(见图3)。

8f5f0826-9384-11ec-952b-dac502259ad0.jpg

图3

通常输入“ E ” 时就可以看见该变量类型,可以直接点选。(见图4)

8f852164-9384-11ec-952b-dac502259ad0.jpg

图4.

2. 定义后的Error 结构如下:(见图5),详细的参数介绍请参考该指令的帮助文件。(选中块, 按键盘上功能键 F1 )

8fa2ee10-9384-11ec-952b-dac502259ad0.jpg

图5.

3. 定义完成后可以直接在引脚输入所创建的DB 块的名称,即可在下拉框中找到所定义的Error 变量( 见图6)。

8fb9a74a-9384-11ec-952b-dac502259ad0.jpg

图6.

直接选择Error 即可完成输出参数的定义(图7)。

8fe10a9c-9384-11ec-952b-dac502259ad0.jpg

图7.

可以通过打开DB 块,监控Error的状态判断程序是否报错。详细报错信息请参考该块的帮助(选中块, 按键盘上功能键 F1 )

例如: 在FC1 中编程调用一个不存在的地址 DB1.DBX0.0,此时GetError 指令执行, cpu 运行正常, 没有error 灯亮,诊断缓冲区也不会报错( 见图8 )。

8ffbe268-9384-11ec-952b-dac502259ad0.jpg

图8.

8f2980d4-9384-11ec-952b-dac502259ad0.jpg 注意:在TIA Protal v11 中,如果程序中使用了未定义的变量或未创建的变量,编译将会报警,但程序可以下载, 未定义变量不能通过变量分配,见下图9。

902a707e-9384-11ec-952b-dac502259ad0.jpg

图9.

此时监控DB 块中Error 变量的状态, 根据监视值查询帮助可以知道 FC1 中调用的全局数据块 DB1 中,偏移地址0 不存在(图10)。

90429974-9384-11ec-952b-dac502259ad0.jpg

图10.

3. GetErrorID 的使用

GetErrorID:使用“获取本地错误 ID”指令(见图11),可以查询块内出现的错误。如果在块执行过程中系统信号出错,会将发生的第一个错误的 ID 保存在输出 ID 的变量中。ID 输出中只能指定 WORD 数据类型的操作数(见图12)。消除第一个错误后,该指令才会输出发生的下一个错误的ID。仅当“获取本地错误 ID”指令的输入的信号状态为“1”且显示了错误信息时,才置位该指令的输出。

90664edc-9384-11ec-952b-dac502259ad0.jpg

图11

907f3ece-9384-11ec-952b-dac502259ad0.jpg

图12

下表列出了GetRrrorID 指令的输出参数 ID 可以输出的值对应的报错信息。(GetError 指令输出结构变量中的ErrorID适用于下表)

ID ID 说明
0 0

无错误

2503 9475

指针无效

2505 9477

在用户程序中调用“Stop”指令 (SFC46)

2520 9504

STRING 无效

2522 9506

读取错误:操作数超出有效范围

2523 9507

写入错误:操作数超出有效范围

2524 9508

读取错误:操作数无效

2525 9509

写入错误:操作数无效

2528 9512

读取错误:数据对齐

2529 9513

写入错误:数据对齐

252C 9516

指针无效

2530 9520

写入错误:数据块

2533 9523

使用了无效指针

2534 9524

块编号错误 FC

2535 9525

块编号错误 FB

2538 9528

访问错误:DB 不存在

2539 9529

访问错误:使用了错误 DB

253A 9530

全局数据块不存在

253C 9532

故障信息或函数不存在

253D 9533

系统函数不存在

253E 9534

故障信息或函数块不存在

253F 9535

系统块不存在

2550 9552

访问错误:DB 不存在

2551 9553

访问错误:使用了错误 DB

2575 9589

程序嵌套深度出错

2576 9590

本地数据分配出错

2942 10562

读取错误:Input

2943 10563

写入错误:Output

常问问题

90976b5c-9384-11ec-952b-dac502259ad0.jpg GetError 与GetErrorID 的区别?

:GetError 与GetErrorID 区别在于 GetError 可以得到比较详细的信息,如块编号,偏移地址等, 便于问题的快速诊断及定位。GetErrorID 指令仅输出简单报错信息。

如果程序比较复杂,建议使用GetError 指令可以更快捷的帮助查找程序错误 。

90976b5c-9384-11ec-952b-dac502259ad0.jpg 是否可以在一个块中( FC 或 FB )中不同的网络段中(Network)多次调用 GetError 或 GetError ID 指令?

:可以。在一个块中不同的网络段中调用多次GetError 指令或 GetErrorID 指令,可以诊断一个块中不同网络段中的错误(见图13)。

90bf08f6-9384-11ec-952b-dac502259ad0.jpg

图13.

当然也可以在一个块中的最后一个网络只调用一次,如果程序中存在多处错误,发生的第一个错误的详细信息将输出至输出参数Error 或 ID 处, 当第一个错误消失后,第二个错误的错误信息才被输出至输出参数。

90976b5c-9384-11ec-952b-dac502259ad0.jpg 是否可以在 OB1 中调用GetError 或 GetError ID 指令?

答:可以,使用方法与在FC 或 FB 中调用类似。

情况一:OB1 程序中出错:

如果OB1 中的程序出错,例如调用未组态硬件的 I 地址,但未调用GetError 指令,CPU error 灯会红色闪烁,诊断缓冲区报错(见图14), 但CPU不会停机( 仅限于CPU 固件版本v2.0 以上版本,固件版本为V1.0 的CPU 在此种情况下会停机)

90f54470-9384-11ec-952b-dac502259ad0.jpg

图14.

此时如果在OB1 中最后一条网络调用GetError 或GetErrorID 指令,则诊断缓冲区的报错信息消失, CPU 指示灯恢复正常。

情况二:OB1 本身的网络中没有错误, 但在 OB1 中调用的块中存在错误, 例如FC1中存在错误:

1 )如果OB1 中无条件调用的块例如FC1 出错,OB1的其它网络没有错误, FC1 中有错误但并没有调用Get Error 指令,CPU error 灯也会红色闪烁,诊断缓冲区报错(见图15),但CPU不会停机( 仅限于CPU 固件版本v2.0 以上版本,固件版本为V1.0 的CPU 在此种情况下会停机),当在FC1 调用GetError 指令后, CPU 报错信息消失,指示灯恢复正常。

91165534-9384-11ec-952b-dac502259ad0.jpg

图15.

2 )如果OB1 中有条件调用块,例如FC1, 但FC1 在OB 1 中的执行条件没有满足,则 CPU 不会报错。一旦FC1 调用条件满足被执行,且FC1 中的错误一直存在,则CPU error 灯也会闪,诊断缓冲区报错(见图15), 但CPU不会停机( 仅限于CPU 固件版本v2.0 以上版本,固件版本为V1.0 的CPU 在此种情况下会停机) 。

3) 如果OB1 中调用的块FC 有错误,在OB1 中调用了GetError 指令,但出错的块 FC1 中未调用 GetError 指令,则CPU 也会出现 指示灯Error 红色闪烁,诊断缓冲器报错。见图16。

913b9290-9384-11ec-952b-dac502259ad0.jpg

图16.

总结:由此可见, GetErrorID 或GetError 指令是基于块的指令,只能诊断调用它的块中的错误,如果出错的程序中未调用该指令,则无法诊断该块中的错误。

审核编辑:郭婷


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10434

    浏览量

    206520

原文标题:S-1500 :GetError 与 GetErrorID 指令的使用

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    NanoEdge AI的技术原理、应用场景及优势

    能耗并提高数据安全性。本文将对 NanoEdge AI 的技术原理、应用场景以及优势进行综述。 1、技术原理 NanoEdge AI 的核心技术包括边缘计算、神经网络压缩和低功耗硬件设计。边缘计算
    发表于 03-12 08:09

    this的使用场景及与C,Java中的this的区别

    【JS】this有哪些使用场景?跟C,Java中的this有什么区别?如何改变this的值?
    发表于 03-11 10:17

    =>的使用场景有哪些

    使用场景
    发表于 10-27 13:25

    小容量OLT应用场景分析

    是2U高的紧凑型OLT形态。盒式OLT一般是固定式设备,线卡不可插拔,成本低;而2U高OLT一般具备电信级的保护,具备良好的电源、风扇、主控板冗余等能力。  二、小容量OLT应用场景分析  下面将按照
    发表于 12-03 14:29

    volatile关键字应用场景及示例

    volatile关键字1.应用场景2.示例1.应用场景volatile关键字分析,往往应用在三种场合1)多线程编程共享全局变量的时候,该全局变量要加上volatile进行修饰,让编译器不要优化该变量
    发表于 08-24 07:21

    ARM的技术特征是什么?应用场景有哪些?

    ARM的技术特征是什么?应用场景有哪些?
    发表于 11-05 07:32

    DC-DC和LDO二者的区别和应用场景

    本质不同。要想了解二者的区别和应用场景,需从原理上进行分析。一、LDOⅠ 原理  LDO,全称低压差线性稳压器(Low Dropout Regulator),属于线性电源,应用时所需要的外接元件较...
    发表于 11-11 09:00

    几种LED调光协议分析及具体应用场景介绍

    市面上主流几种LED调光协议分析及具体应用场景介绍目前国内外的LED驱动已经不仅仅满足照明需求,更多是去追求各种不同场景的应用,搭配各种数字协议,实现某种特定的功能,比如在汽车大灯的应用中,未为兼容
    发表于 12-31 08:04

    MS9331的应用场景是什么?

    MS9331的应用场景是什么?
    发表于 02-11 06:41

    SMT组装工艺流程的应用场景(多图)

    工艺流程的应用场景。 一、单面纯贴片工艺 应用场景: 仅在一面有需要焊接的贴片器件。 二、双面纯贴片工艺 应用场景: A/B面均为贴片元件。 三、单面混装工艺 应用场景: A面有
    发表于 10-17 18:10

    labview 和 wincc 的区别 使用场景

    labview 和 wincc 的区别 使用场景 都是上位机软件,都可以做监控软件 wincc的名气也比较大 对比的资料较少 写这些文章的人,从自己的从事的行业出发,带有自己的思维 使用的场景 肯定
    发表于 10-27 18:01

    GetErrorGetErrorID指令的使用

    在 STEP7 11 中,可以通过GetError (获取本地错误信息)或者GetErrorID (获取本地错误ID )指令查询块内出现的错误。
    的头像 发表于 01-29 10:57 912次阅读

    阻感负载与电感负载的区别及应用场景

    阻感负载与电感负载的区别及应用场景 阻感负载和电感负载是电路中非常重要的两种负载类型。它们在电子工程中有着不同的作用和应用场景。本文将详细介绍阻感负载和电感负载的区别,并从理论和实际应
    的头像 发表于 11-09 16:58 564次阅读

    上位机和plc有啥区别 上位机和PLC的应用场景

    以及它们的应用场景。 上位机和PLC的区别可以从以下几个角度来描述: 1. 功能差异:上位机通常是指运行在PC或服务器上的软件系统,它可以提供强大的计算和数据处理能力,并且可以用于复杂的控制算法和大数据分析。PLC(Progra
    的头像 发表于 11-22 16:51 4259次阅读

    应变片1/4桥、半桥、全桥的区别及其应用场景

    应变片1/4桥、半桥、全桥的区别及其应用场景 应变片是一种利用应变效应制造电场的器件,可将机械变形转化为电信号。它广泛应用于传感器、开关、位移检测等领域。根据应变片的电桥结构和应用场景的不同,可以
    的头像 发表于 02-04 14:48 2403次阅读