西门子S71200GetError 与 GetErrorID 指令的使用.docx

上传人:b****0 文档编号:25867758 上传时间:2023-06-16 格式:DOCX 页数:11 大小:1.32MB
下载 相关 举报
西门子S71200GetError 与 GetErrorID 指令的使用.docx_第1页
第1页 / 共11页
西门子S71200GetError 与 GetErrorID 指令的使用.docx_第2页
第2页 / 共11页
西门子S71200GetError 与 GetErrorID 指令的使用.docx_第3页
第3页 / 共11页
西门子S71200GetError 与 GetErrorID 指令的使用.docx_第4页
第4页 / 共11页
西门子S71200GetError 与 GetErrorID 指令的使用.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

西门子S71200GetError 与 GetErrorID 指令的使用.docx

《西门子S71200GetError 与 GetErrorID 指令的使用.docx》由会员分享,可在线阅读,更多相关《西门子S71200GetError 与 GetErrorID 指令的使用.docx(11页珍藏版)》请在冰豆网上搜索。

西门子S71200GetError 与 GetErrorID 指令的使用.docx

西门子S71200GetError与GetErrorID指令的使用

西门子S7-1200GetError与GetErrorID指令的使用

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

请注意:

GetError和GetErrorID均支持块内的错误处理。

当在程序块中调用GetError或GetErrorID指令后,如果该程序块发生错误,CPU则将忽略任何预定义的系统响应。

也就是说CPU会忽略此错误,而且CPU的Error灯(红色)也不会亮,CPU也不会停机。

所以说该指令在某种程度上也起到了抑制程序错误的作用,同时有一定的风险存在。

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

1.GetError与GetErrorID的调用

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

(见下图1)

图1.

2.GerError指令的使用

GetError:

使用“获取本地错误信息”指令,可以查询块内出现的错误。

如果在块执行期间出现错误,则发生的第一个错误的详细信息将保存在输出ERROR中。

消除第一个错误后,该指令会在Error处输出下一个错误的信息。

仅当使能输入EN的信号状态为“1”且显示了错误信息时,才置位“获取本地错误信息”指令的使能输出ENO。

GetError指令的输出参数Error的数据类型为:

ErrorStruct(见图2),请注意:

常规的变量类型中并未包含此类型。

图2

定义Error变量的步骤:

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

图3

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

(见图4)

图4.

2.定义后的Error结构如下:

(见图5),详细的参数介绍请参考该指令的帮助文件。

(选中块,按键盘上功能键F1)

图5.

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

图6.

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

图7.

可以通过打开DB块,监控Error的状态判断程序是否报错。

详细报错信息请参考该块的帮助(选中块,按键盘上功能键F1)

例如:

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

图8.

注意:

在TIAProtalv11中,如果程序中使用了未定义的变量或未创建的变量,编译将会报警,但程序可以下载,未定义变量不能通过变量分配,见下图9。

图9.

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

图10.

 

3.GetErrorID的使用

GetErrorID:

使用“获取本地错误ID”指令(见图11),可以查询块内出现的错误。

如果在块执行过程中系统信号出错,会将发生的第一个错误的ID保存在输出ID的变量中。

ID输出中只能指定WORD数据类型的操作数(见图12)。

消除第一个错误后,该指令才会输出发生的下一个错误的ID。

仅当“获取本地错误ID”指令的输入的信号状态为“1”且显示了错误信息时,才置位该指令的输出。

图11

图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

常问问题

GetError与GetErrorID的区别?

答:

GetError与GetErrorID区别在于GetError可以得到比较详细的信息,如块编号,偏移地址等,便于问题的快速诊断及定位。

GetErrorID指令仅输出简单报错信息。

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

是否可以在一个块中(FC或FB)中不同的网络段中(Network)多次调用GetError或GetErrorID指令?

答:

可以。

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

图13.

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

是否可以在OB1中调用GetError或GetErrorID指令?

答:

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

情况一:

OB1程序中出错:

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

图14.

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

情况二:

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

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

图15.

2)如果OB1中有条件调用块,例如FC1,但FC1在OB1中的执行条件没有满足,则CPU不会报错。

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

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

见图16。

图16.

总结:

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

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1