原装西门子CPU1214C模块


6ES72141BG400XB0 CPU 1214C   AC/DC/Rly,14输入/10输出,集成2AI

6ES72141AG400XB0 CPU 1214C   DC/DC/DC,14输入/10输出,集成2AI

6ES72141HG400XB0 CPU 1214C   DC/DC/Rly,14输入/10输出,集成2AI


有需要的新老顾客欢迎上门提货谈生意(老顾客注意公司地址更改)


联系人 :康 奎(业务经理)发布


相关技术:

如何处理 S7-1200 CPU 诊断到的时间错误?

  • 文档

  •  

  • 涉及产品


描述:
S7-1200 PLC 调试阶段经常会发生时间错误。以下条件可以触发时间错误:

  • 超出扫描周期

  • 调用正在执行的 OB 块

  • 队列溢出

  • 中断装载过多导致中断丢失

如果 OB 80 已经,所有时间错误事件都会触发 OB 80 的执行。OB 80 包含的启动信息可以用来诊断哪个事件和组织块触发时间错误。
如果  OB 80 没有,当周期时间超出时,CPU 会忽略该错误。

理解时间错误事件
 

序号理解时间错误事件
1.“超出周期时间”
如果循环程序超出周期时间,反应如下:
  1. 当周期时间次超过周期监控时间,系统尝试启动“时间错误中断”组织块(OB 80)。
    如果 CPU 中没有“时间错误中断”组织块,CPU 会产生一个错误并继续执行用户程序。

  2. 如果在同一个程序周期中“超出周期时间”事件发生两次,并且没有复位周期计时器,那么无论 OB 80 是否,CPU 切换到 SITOP 模式。
    可以通过“RE_TRIGR”指令重启CPU周期监控来预防 CPU 切换到 SITOP 模式。

操作系统会根据组态的上限值,即“周期时间”来监测循环程序的执行时间。

在 S7-1200 PLC 属性中可以找到“周期时间”。

  • 浏览 S7-1200 PLC 的项目树

  • 双击“设备组态”条目

  • 在“设备 & 网络”选择 S7-1200 PLC 

  • 在“属性”标签页中浏览“周期时间”条目


图 01

2.“调用正在执行的 OB”
调用的 OB 正在被执行。可能适用于时间延迟中断组织块和周期中断组织块。
 3.“队列溢出”
组织块队列中发生溢出。每个中断优先级组中都有一个队列。当一个中断事件发生时,相应的队列已满,那么时间错误事件产生。
4.“中断装载过多导致中断丢失”
由于过多的中断需要装载导致中断丢失。

表 01

“RE_TRIGR”指令
“RE_TRIGR”指令(重新触发周期时间监控)用来复位测量周期时间的定时器。该指令必须在程序的循环组织块中执行,如果在其他块(比如 OB 80)内执行的话,该指令将被忽略。如果同一程序循环中扫描周期时间被超过两次,并且没有执行“RE_TRIGR”,那么 CPU 会立即切换到 STOP 模式。

添加“RE_TRIGR”指令:

  • 浏览指令窗“扩展指令”>“程序控制”>“RE_TRIGR”

  • 拖拽该指令到程序循环组织块的网络中


图 02

说明
使用“RE_TRIGR”需要注意。重复执行“RE_TRIGR”会导致无限循环或非常长的扫描周期。无限循环会导致周期程序不会结束,输出映像区不被写入。因此输出端无法确定输出状态。

通过“时间错误”组织块来评估时间错误事件
如果之前提到的事件发生,操作系统会调用“时间错误中断”OB 80。
 

序号通过“时间错误”组织块来评估时间错误事件
1.添加“时间错误中断”组织块
  • 浏览“项目树”查找“添加新块”条目。

  • 在“添加新块”窗口点击“组织块”按钮。

  • 从列表中选择“时间错误中断”组织块。

  • 点击“确定”按钮。

说明
程序中只能使用“时间错误中断”组织块。


图 03

2.监控“时间错误中断”组织块的启动信息
  • 在 S7-1200 PLC“项目树”下双击“时间错误中断”组织块。

  • 浏览指令窗“指令”>“传送”>“传送”。

  • 拖拽传送指令到“时间错误中断”组织块的网络中。

  • 将“fault_id”变量的数值传送到全局变量(比如“Data_block.by_fault_ID”)。

  • 将其他需要监控的变量用同样的办法编程,请参照图 04 中的例子。


图 04
 3.通过“时间错误”组织块来评估时间错误事件
“时间错误中断”组织块启动信息如下:

"fault_id" (BYTE)
“fault_id”识别错误类型。

  • 0x01:超出周期时间

  • 0x02:调用正在执行的 OB 块

  • 0x07:队列溢出

  • 0x09:中断装载过多导致中断丢失

"csg_OBnr "(OB-ANY)
错误发生时所执行的组织块的编号。

"csg_prio" (UINT)
错误发生时所执行组织块的优先级。