首页 理论教育 如何准确诊断编程错误

如何准确诊断编程错误

时间:2023-06-30 理论教育 版权反馈
【摘要】:生成FC1,在FC1中输入图7-16中的程序,该程序中有一个编程错误,第一条指令访问的地址超出了DB1的地址范围。“诊断缓冲区”的事件列表中的3号事件是“FC1中的区域长度错误”,2号事件指出是编程错误,因为没有下载OB121,CPU切换到STOP模式。令I0.0为1状态,调用FC1时出现编程错误,CPU操作面板中的ERROR LED闪烁后熄灭,但是CPU不会进入STOP模式。编程错误引起停机,有利于查找错误。

如何准确诊断编程错误

1.局部错误处理

S7-1200/1500的局部错误处理是在块中进行错误处理。错误信息存储在系统存储器中,可以对其进行查询和评估,错误评估和错误响应不会中断程序循环。如果没有错误发生,则不执行设计的错误分析和响应函数。

通过局部错误处理可以查询块内发生的错误和评估相关的错误信息。可以为组织块、函数块和函数设置局部错误处理。如果块启用了局部错误处理,那么不会对此块中的错误进行全局错误处理。

在代码块中插入基本指令窗格的“程序控制”文件夹中的“获取本地错误信息”指令GET_ERROR和“获取本地错误ID”指令GET_ERR_ID,编译成功后,选中块的巡视窗口的“属性>常规>属性”,可以看到右边窗口的复选框“处理块内的错误”被自动勾选,该块为局部错误处理。

2.S7-1500的全局错误处理

如果设置了全局错误处理(即非局部错误处理),在处理用户程序指令时发生编程错误,S7-1500 CPU操作系统将调用编程错误组织块OB121。

如果设置了全局错误处理,在执行用户程序指令期间直接访问I/O数据时出错,S7-1500 CPU操作系统将调用I/O访问错误组织块OB122。例如在直接访问输入模块数据时发生读取错误,便会出现这种情况。

从OB121和OB122的局部数据中的启动数据可以获取大量的错误信息。

如果没有下载OB121,出现编程错误时CPU将切换到STOP模式。如果出现I/O访问错误,即使没有下载OB122,CPU也将始终处于RUN模式。

3.演示编程错误的程序结构

出现编程错误时,CPU的操作系统将调用OB121。用新建项目向导生成一个名为“OB121例程”的项目(见随书光盘中的同名例程),CPU为CPU 1511-1PN。生成数据块DB1,右键单击项目树中的DB1,选中快捷菜单中的“属性”,在DB1的属性视图中去掉它的“优化的块访问”属性。在DB1中仅生成了数据类型为Int的变量“变量1”。DB1的长度为2B。

生成FC1,在FC1中输入图7-16中的程序,该程序中有一个编程错误,第一条指令访问的地址超出了DB1的地址范围。在OB1中用I0.0调用FC1(见图7-17)。

编译时出现一个警告,指出图7-16中的地址DB1.DBW4不能通过地址进行访问,该地址在程序中用橘黄色表示。

978-7-111-58719-4-Chapter07-30.jpg(www.xing528.com)

图7-16 FC1的程序

978-7-111-58719-4-Chapter07-31.jpg

图7-17 OB1的程序

4.仿真实验

选中项目视图中的PLC_1,单击工具栏上的“开始仿真”按钮978-7-111-58719-4-Chapter07-32.jpg,出现仿真软件的精简视图和“扩展的下载到设备”对话框。将程序和组态数据下载到仿真PLC,仿真PLC切换到RUN模式。单击精简视图右下角的978-7-111-58719-4-Chapter07-33.jpg按钮,切换到项目视图。双击项目树的“SIM表”(仿真表)文件夹中的“SIM表1”,打开该仿真表。在“地址”列输入IB0。

单击工具栏上的“在线”,双击项目树PLC_1文件夹中的“在线和诊断”,在工作区打开“在线和诊断”视图,选中工作区左边窗口的“诊断缓冲区”(见图7-8)。单击勾选SIM表1中I0.0对应的小方框,I0.0变为1状态,调用FC1。由于FC1中的编程错误,在线的CPU操作面板中的ERROR LED闪烁后熄灭,CPU切换到STOP模式。

“诊断缓冲区”的事件列表中的3号事件是“FC1中的区域长度错误”(见图7-18),2号事件指出是编程错误,因为没有下载OB121,CPU切换到STOP模式。选中3号事件,在“事件详细信息”区域显示“读访问DB区域地址错误”,DB区域地址为4(即DBW4)。

双击诊断缓冲区底部的“在编辑器中打开”按钮,自动打开FC1,显示出错的程序段1,光标自动选中有访问错误的变量DB1.DBW4。

单击工具栏上的“离线”,切换到离线模式。双击“程序块”文件夹中的“添加新块”,生成编程错误组织块OB121,里面没有任何程序。将它下载到仿真CPU,后者切换到RUN模式。令I0.0为1状态,调用FC1时出现编程错误,CPU操作面板中的ERROR LED闪烁后熄灭,但是CPU不会进入STOP模式。

编程错误一般出现在程序的编写和调试阶段。编程错误引起停机,有利于查找错误。建议在程序运行时不要下载OB121,以免程序带病运行。

978-7-111-58719-4-Chapter07-34.jpg

图7-18 诊断缓冲区

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

我要反馈