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

    文章

    10854

    浏览量

    211583

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

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

收藏 人收藏

    评论

    相关推荐

    USB协议分析仪的技术原理和应用场景

    USB协议分析仪的技术原理和应用场景可以详细阐述如下:技术原理USB协议分析仪的技术原理主要基于以下几个方面: 总线监听:USB协议分析仪通过监听USB总线上的数据传输过程,实时捕获U
    发表于 09-24 14:29

    NFC协议分析仪的技术原理和应用场景

    NFC协议分析仪的技术原理和应用场景可以详细阐述如下:技术原理NFC(Near Field Communication,近场通信)协议分析仪是一种用于分析NFC通信协议和性能的专业设备
    发表于 09-25 14:45

    参数分析仪的技术原理和应用场景

    参数分析仪的技术原理和应用场景因其具体类型和用途的不同而有所差异。以下是对参数分析仪技术原理和应用场景的详细归纳: 技术原理 基于物理性质的测量: 某些参数
    发表于 10-17 14:42

    实时示波器的技术原理和应用场景

    有频谱分析功能,可以将时域信号转换为频域信号,从而显示信号的频谱特性。综上所述,实时示波器凭借其独特的技术原理和广泛的应用场景,在电子工程和通信技术领域发挥着不可替代的作用。
    发表于 10-23 14:22

    射频分析仪的技术原理和应用场景

    射频分析仪是一种功能强大的电子测量仪器,在无线通信、电子测试等领域具有广泛的应用。以下是关于射频分析仪的技术原理和应用场景的详细介绍:一、射频分析仪的技术原理射频
    发表于 11-26 14:32

    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

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

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

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

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

    labview 和 wincc 的区别 使用场景

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

    GetErrorGetErrorID指令的使用

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

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

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

    PLC中ALT和ALTP指令区别

    在PLC(可编程逻辑控制器)编程中,ALT和ALTP是两个重要的指令,它们各自具有独特的功能和应用场景。本文将从多个方面对这两个指令进行详细的分析和比较,以便读者能够更深入地理解它们之
    的头像 发表于 06-17 16:42 3603次阅读

    SUMIF函数的应用场景分析

    SUMIF函数在Excel中是一个强大的数据分析工具,特别适用于需要对数据进行条件筛选并求和的场景。以下是对SUMIF函数应用场景分析: 1. 财务数据
    的头像 发表于 10-30 09:55 315次阅读