首页 理论教育 编程错误的诊断方法优化方案

编程错误的诊断方法优化方案

时间:2023-06-28 理论教育 版权反馈
【摘要】:由于FC1中的编程错误,CPU视图对象上的SF LED亮。图7-37 PLCSIM与诊断缓冲区选中“诊断缓冲区”选项卡的3号事件“读取时发生区域长度错误”,下面的窗口是事件的详细信息:读访问全局数据块的DBW4,错误出现的块为FC1,要求调用处理编程错误的OB121,但是没有找到OB121。图7-38 模块信息中的堆栈编程错误一般出现在程序的编写和调试阶段。编程错误引起停机,有利于查找错误。

编程错误的诊断方法优化方案

1.程序结构

出现编程错误时,CPU的操作系统将调用OB121。用新建项目向导生成一个名为“OB121”的项目,可以选任意型号的CPU。生成数据块DB1,DB1中只有自动生成的一个整数(INT)占位符变量,DB1的长度为2B。

生成FC1,在FC1中输入下面的程序,该程序中有一个编程错误,第一条指令访问的地址超出了DB1的地址范围。

978-7-111-53570-6-Chapter07-57.jpg

在OB1中用I0.0调用FC1(见图7-36)

2.仿真实验

978-7-111-53570-6-Chapter07-58.jpg

图7-36 OB1的程序

打开PLCSIM,将用户程序下载到CPU,将仿真PLC切换到RUN-P模式。

在PLCSIM中生成IB0的视图对象。单击I0.0对应的小方框,将I0.0置为1状态,OB1调用FC1。由于FC1中的编程错误,CPU视图对象上的SF LED亮。CPU要求调用OB121,因为没有生成和下载OB121,CPU自动切换到STOP模式。RUN LED熄灭,STOP LED亮。

在SIMATIC管理器中执行菜单命令“PLC”→“诊断/设置”→“模块信息”,打开模块信息对话框(见图7-37)。(www.xing528.com)

978-7-111-53570-6-Chapter07-59.jpg

图7-37 PLCSIM与诊断缓冲区

选中“诊断缓冲区”选项卡的3号事件“读取时发生区域长度错误”,下面的窗口是事件的详细信息:读访问全局数据块的DBW4,错误出现的块为FC1,要求调用处理编程错误的OB121,但是没有找到OB121。图7-37左下角的小图是3号事件详细信息的下半部分。事件2显示“因编程错误导致STOP模式(未装载或无法装载OB)”。

单击对话框中的“跳转到”按钮,将会打开出错的FC1,显示出错的程序段,光标在出错的指令上。打开“模块信息”对话框的“堆栈”选项卡(见图7-38),B堆栈(块堆栈)中是与编程错误有关的块OB1和FC1,由此可以看到出错时用户程序的调用路径。

选中OB1,单击该选项卡的“L堆栈”按钮,可以看到事件发生时OB1的局部数据。

单击“堆栈”选项卡的“I堆栈”按钮,打开中断堆栈,可以看到程序执行被中断时累加器、地址寄存器和状态字的内容,当时打开的数据块为DB1,其大小为2B。在“中断点”区可以看到FC1的执行被中断。单击“帮助”按钮,可以得到有关的帮助信息。

返回SIMATIC管理器,生成OB121(可以是一个空的块),下载到CPU后切换到RUN-P模式。令I0.0为1状态,调用FC1时出现编程错误,SF LED亮,但是CPU不会进入STOP模式。

978-7-111-53570-6-Chapter07-60.jpg

图7-38 模块信息中的堆栈

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

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

我要反馈