二、组织块(OB)深度解析(系统核心)
组织块是 PLC 系统事件的 “响应中心”,不同 OB 对应特定触发条件,决定程序的执行时机与优先级,核心覆盖循环、启动、中断三大类。
2.1 程序循环组织块(OB1)
OB1 是用户程序的主入口,处于第 1 优先级组,CPU 在 RUN 模式下按扫描周期循环执行,是周期性任务的核心载体。
2.1.1 核心特性与触发机制
•触发条件:CPU 处于 RUN 模式时持续循环,每次执行完毕自动重启,支持多程序循环 OB 按编号顺序执行(如 OB1、OB123);
•扫描周期:由“输入读取→程序执行→输出刷新” 全流程耗时决定,默认最大循环时间 150ms;
•超时处理:执行时间超最大值时,若下载 OB80 则调用中断处理,否则 CPU 切换至 STOP 模式。
2.1.2 应用场景与优化技巧
•典型用途:周期性数据采集(如读取温度传感器)、设备状态监控、常规逻辑控制;
•效率优化:
a.复杂逻辑拆分至 FC/FB,OB1 仅保留块调用,避免单次执行时间过长;
b.精确定时任务(如 100ms 采样)移交 OB30-OB38(循环中断 OB),减少 OB1 负担;
c.通过 CPU 属性查看 “当前循环时间”,针对性优化耗时逻辑。
2.2 启动组织块(OB100)
OB100 在 CPU 从 STOP 切换至 RUN 时执行一次,处于第 2 优先级组,专用于系统初始化,执行完毕后移交 OB1 运行。
2.2.1 触发场景与核心功能
•触发条件:CPU 上电启动、手动切换至 RUN 模式、热启动操作;
•核心功能:变量初值赋值(如 MW100:=0)、硬件参数配置(如高速计数器初始化)、保持性数据检查、实时时钟校验。
2.2.2 接口变量与编程示例
OB100 包含两个关键接口变量,用于诊断系统启动状态:
变量名称 | 数据类型 | 描述 |
LostRetentive | Bool | 保持性数据丢失时为 TRUE |
LostRTC | Bool | 实时时钟丢失时为 TRUE |
编程示例:启动时初始化与故障诊断
// 程序段1:保持性数据丢失检测 IF LostRetentive THEN Q0.0 := TRUE; // 输出报警信号 MW100 := 0; // 重置关键变量 END_IF; // 程序段2:实时时钟校准 IF LostRTC THEN "DB_System".RTC := DTL2024-05-20-10:00:00.0; // 重置时钟 END_IF; // 程序段3:变量初始化 "DB_Motor".Speed := 500.0; // 电机速度初值 "DB_Sensor".Enable := TRUE; // 传感器使能 |
2.3 时间错误中断组织块(OB80)
OB80 为最高优先级(第 3 优先级组),当系统出现时间相关错误时触发,可中断所有其他 OB 执行,是系统稳定性的关键保障。
2.3.1 触发条件与接口变量
•触发场景:
a.循环时间超过最大限值;
b.中断 OB(如 OB30)被重复请求且正在执行;
c.中断队列溢出(处理速度低于触发频率)。
•核心接口变量:
变量名称 | 数据类型 | 描述 |
fault_id | Byte | 错误代码(1601 = 循环超时,1602=OB 冲突) |
csg_OBnr | OB ANY | 出错时正在执行的 OB 编号 |
csg_prio | UINT | 错误 OB 的优先级 |
2.3.2 编程示例与 RE_TRIGR 指令
典型应用:处理循环超时并延长监控定时器,避免 CPU 停机。
// 程序段1:错误信息记录 "DB_Diagnose".ErrorID := fault_id; "DB_Diagnose".ErrorOB := csg_OBnr; // 程序段2:重启扫描循环监视定时器 RE_TRIGR(EN := TRUE); // 延长最大循环时间一个周期 |
RE_TRIGR 指令说明:
•功能:重新启动扫描循环监视定时器,单次执行延长一个最大循环时间段;
•场景:长时间任务(如数据批量处理)中定期调用,或 OB80 中应急处理;
•注意:仅可在 OB1 或 OB80 中使用,避免频繁调用导致响应延迟。
2.4 其他常用 OB 块
2.4.1 循环中断 OB(OB30-OB38)
•特性:按固定周期执行(1ms-1min),优先级 1-26 可调,适用于精确定时任务;
•创建步骤:添加新块→选择 “Cyclic interrupt”→设置周期与优先级;
•应用:PID 控制(100ms 周期)、数据采样、定时报警。
2.4.2 硬件中断 OB(OB40-OB47)
•特性:由硬件事件触发(如数字量输入上升沿),优先级 1-26 可调;
•配置流程:创建 OB40→硬件组态中启用输入中断→关联触发点(如 I0.0 上升沿);
•应用:急停信号处理、高速脉冲计数触发。
2.4.3 诊断中断 OB(OB82)
•特性:模块故障时触发(如传感器断线、电源故障);
•接口变量:包含 IO_State(硬件状态)、LADDR(故障地址)等诊断信息;
•应用:故障定位与报警,如记录故障模块地址并触发声光报警。
2.5 OB 块优化使用原则
1.优先级分配:实时性任务(如急停处理)分配高优先级(15-26),常规任务用低优先级(1-10);
2.可中断设置:高优先级 OB 需中断低优先级 OB 时,将低优先级 OB 的 “可中断” 属性设为 “是”;
3.资源管控:避免 OB 数量过多,同类任务合并(如多个定时任务共用一个 OB30,通过计数器区分周期);
4.错误处理:为关键 OB(如 OB1、OB30)配套错误处理逻辑,避免单点故障导致系统停机。
往期推荐