西门子博途: 有关处理程序执行错误的示例

发布时间:2024-07-31  

简介

本地错误处理可单独编程,也可与其它代码一起编程。为确保可识别程序中的所有错误,建议使用本地错误处理组合方案,如以下示例所示。


为提高错误分析的准确程度的错误分析,除输出参数 RET_VAL 之外,还可使用指令“GET_ERROR”或“GET_ERR_ID”。这些方案提供有错误代码,并在相应指令的描述中对其进行详细说明。


此外,RET_VAL 输出参数也可能不输出有效错误代码。如果在读取输入参数时发生访问错误(如,指令输出无法入),则这是因为指令执行已中断。此时,建议在用户程序中插入两条指令“GET_ERROR”和“GET_ERR_ID”。这是因为,发生此类错误时,这两条指令将返回可靠的错误信息。


警告
读取输入参数时发生访问错误
RET_VAL 参数未返回有效的错误代码,且诊断缓冲区中未输出任何详细错误信息。

错误的第一个指示符可以是状态字的 BR 位,也可以是使能输出 ENO 。如果返回信号状态“0”,则说明指令执行过程中出错。信号状态为“1”表示无错误,因而无需进行进一步错误分析,但存储器访问错误例外。此时,信号状态为“1”表示发生错误。

操作步骤

以下示例说明了如何在读取输入参数时识别访问错误:

按以下方式声明程序块的块接口:
2c08f8a8-2097-11ee-962d-dac502259ad0.png
2c08f8a8-2097-11ee-962d-dac502259ad0.png
编写以下程序代码:
2c5e90ec-2097-11ee-962d-dac502259ad0.png
2c5e90ec-2097-11ee-962d-dac502259ad0.png

在程序段 1 中,调用指令“MOVE_BLK_VARIANT:块移动”。在 SRC 参数中,使用一个变量索引访问“SrcField”源区域。如果指令成功执行无错误,则使能输出 ENO 将返回信号状态“1”,同时程序执行跳转到程序段 4 中继续执行。

如果指令在执行过程中发生访问错误(如,由变量索引而引发),则程序段 2 中的指令“GET_ERR_ID:获取本地错误 ID”将返回错误 ID。程序段 2 中“UNEQUAL”的错误 ID 将与值“0”进行比较并返回结果 #Test2 = TRUE。在程序段 3 中,“EQUAL”的错误 ID 将与值“0”进行比较,并返回结果 #Test3 = TRUE。

此时,输出参数 RET_VAL 处的 #TagRet_Val 操作数将不返回有效错误代码。

例外

但也有一些指令不适用于以上示例中所列的错误处理方式。具体包括以下指令:

通常不支持 EN/ENO 机制的指令

禁用 ENO 的指令

S_COMP

PEEK、PEEK_BOOL、POKE、POKE_BOOL 和 POKE_BLK

即使发生访问错误,这些指令中的 BR 位或使能输出 ENO 也将设置为 TRUE。

以下示例中说明了如何在 STL 编程语言中编程可靠的错误处理方式:

2caaad74-2097-11ee-962d-dac502259ad0.png

STL 说明
SET // 操作数 #Tag_ErrorID 将初始化为“0”。
L 0
T #Tag_ErrorID


CALL S_COMP // 调用该指令。
src_type := String // 参数 IN1 和 IN2 的数据类型
relation := EQ // 该指令的比较类型
IN1 := #StringArray.THIS[#index] // 对 ARRAY 元素的可变访问。
IN2 := 'STRING' // 将两个值互相比较。
OUT := #TagResult // 如果两个值相等,则操作数 #TagResult 的信号状态为“1”。


A BR // 查询 BR 位。


CALL GET_ERR_ID // 调用该指令。
RET_VAL := #Tag_ErrorID // 发生访问错误时,该指令将输出一个错误代码。

即使 BR 位的信号状态为“1”,也将检测到访问错误。通过评估指令“GET_ERR_ID:获取本地错误 ID”的操作数 #Tag_ErrorID,可查询该错误代码。

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    十字路口交通信号灯设计;任务描述: 某企业承担了一个十字路口交通灯控制系统设计任务,控制要求:东西向绿灯亮 5s 后,黄灯闪烁闪烁5次亮红灯红灯亮后,南北向由红灯变成绿灯,5s 后南北向黄灯闪烁......
    干道为绿灯通行时,支干道必须为红灯禁行;绿灯结束后,主干道进入黄灯闪烁等待状态,支干道红灯;黄灯结束后,主干道变为红灯禁行,支干道变为绿灯通行;支干道绿灯结束后,支干道进入黄灯闪烁等待状态,主干道红灯,如此......
    )   {   unsigned char k;     P1=0x09;  //东西绿灯亮5秒&南北红灯亮       delay5s();   for(k=0;k<5;k++) //东西黄灯闪烁&南北红灯......
    来我们就来实现tx_application_define这个函数。 我们先来规划一下我们将要实现的内容。我们计划实现5个任务,包括启动任务、红灯闪烁任务、绿灯闪烁任务、空闲任务及统计任务。其中......
    ;beiG=1;   nanR=1;nanY=1;nanG=0;   shumaguan(a);   break;   case 2: //东西向黄灯闪烁,绿灯关闭   if(a%2!=0......
    , "Please Check! ", RED); delay_ms(500); LED0_TOGGLE(); /*红灯闪烁 */ } /*打印SD卡相关信息 */ show_sdcard_info......
    量较大且不美观,这种情况下比较适合采用无线通信方式。本方案以威纶通触摸屏和2台西门子S7-200SMART为例,介绍触摸屏与多台 PLC的无线Ethernet通信实现过程。在本方案中采用了欧美系PLC无线......
    !电池<6.4V,绿灯闪烁,需更换电池。 2、DC归零调整 确保钳口闭合,不附任何导体。连接电流钳到你要测量的器件。按下按钮④,使之归零。红灯⑤亮大约 3 秒钟,表明该仪器已归零。如果......
    被复位后会执行LED0=0的程序,然后进入while(1)中执行LED0=1的程序,可看到红灯在不断闪烁。 调试碰到的问题:当将服务函数的喂狗程序注释掉以后,红灯常亮,与预期的红灯闪烁不符。 查明原因:之前......
    。 模组性能参数 拾音器使用介绍 拾音器 开机键:短按开关机 电源指示灯:4个LED灯,低电时红灯闪烁闪烁5分钟后自动关机 TYPE-C:充电口,4个指示灯依次闪烁,充满全部长亮,电池......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>