描述:
S7-1200 PLC 调试阶段经常会发生时间错误。以下条件可以触发时间错误:n
- 超出最大扫描周期n
- 调用正在执行的 OB 块n
- 队列溢出n
- 中断装载过多导致中断丢失
如果 OB 80 已经下载,所有时间错误事件都会触发 OB 80 的执行。OB 80 包含的启动信息可以用来诊断哪个事件和组织块触发时间错误。
如果 OB 80 没有下载,当最大周期时间超出时,CPU 会忽略该错误。n
理解时间错误事件
序号 | 理解时间错误事件 |
1. | “超出最大周期时间” 如果循环程序超出最大周期时间,反应如下: n
操作系统会根据组态的上限值,即“最大周期时间”来监测循环程序的执行时间。n 在 S7-1200 PLC 属性中可以找到“最大周期时间”。n
|
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. | 添加“时间错误中断”组织块
说明
|
2. | 监控“时间错误中断”组织块的启动信息
|
3. | 通过“时间错误”组织块来评估时间错误事件 “时间错误中断”组织块启动信息如下: "fault_id" (BYTE)
"csg_OBnr "(OB-ANY) "csg_prio" (UINT) |
表 02
要求
- S7-1200 PLC
- 以太网电缆
- PG / PC
- STEP 7 Basic V10.5
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc333187.html