西门子 PLC 的循环中断 OB35 应用
在工业自动化控制中,某些任务对时间精度要求极高,例如 PID 闭环控制、高速计数处理或特定频率的脉冲输出。主程序循环 OB1 的执行时间是不固定的,受程序长度和指令复杂度影响,无法满足毫秒级的精准定时需求。西门子 PLC 提供的循环中断组织块 OB35 专门用于解决这一问题。它能按照预设的时间间隔优先执行,确保关键逻辑的稳定运行。本指南将手把手教你如何在 TIA Portal 中配置并使用 OB35。
准备工作
在开始之前,请确保你具备以下软硬件环境:
- 安装好西门子博途软件
TIA Portal(推荐 V15 及以上版本)。 - 准备一台支持中断功能的 PLC,如
S7-1200或S7-1500系列。 - 准备好编程电脑与 PLC 之间的通讯连接(网线或 MPI/DP 电缆)。
- 明确需要定时执行的任务周期,例如
100ms或10ms。
第一步:创建循环中断组织块
打开 你的 TIA Portal 项目,进入 左侧项目树中的 程序块 文件夹。双击 添加新块 图标,弹出 新建块对话框。
- 选择 块类型为
组织块 (OB)。 - 点击 组织块名称下拉菜单,找到 并 选择
OB35 - 循环中断。 - 确认 语言类型为
梯形图 (LAD)或SCL,根据你的习惯设定。 - 点击
确定按钮 完成 创建。
此时,项目树中会出现一个名为 OB35 的块。这是系统预留的中断接口,无需手动调用,PLC 运行时会自动管理。
第二步:设置中断循环时间
默认的循环时间可能不符合你的工艺要求,需要 修改为特定值。
- 双击 项目树中的
OB35打开 编辑器。 - 点击 编辑器上方的
属性标签页。 - 找到
常规分类下的属性列表。 - 定位 到
循环中断设置项。 - 修改
循环间隔参数。例如,输入100并 选择 单位ms。
这意味着 OB35 内的程序每隔 100ms 会被 CPU 强制执行一次,无论主程序 OB1 运行到哪里。设置完成后,按下 Ctrl + S 保存 配置。
第三步:编写中断程序逻辑
OB35 内部的空间宝贵,务必 只放置时间敏感的关键代码。
- 切换 回
程序视图。 - 拖动 所需的指令到
OB35的网络中。 - 编写 具体控制逻辑。例如,实现 一个累加计数器:
// 在 OB35 中每隔 100ms 执行一次
"Global_DB".Counter_Value := "Global_DB".Counter_Value + 1;
- 避免 在
OB35中使用耗时指令,如大量通信读取、复杂数学运算或文件操作。 - 禁止 在中断程序中等待输入信号,这会阻塞中断返回。
逻辑编写完毕后,点击 编译按钮 检查 是否有错误。
第四步:下载与监控
配置完成后,需要 将程序下载到 PLC 并验证效果。
- 选中 项目树中的
程序块文件夹。 - 点击 工具栏上的
下载图标(或 按下F3)。 - 选择 目标设备,点击
开始搜索。 - 勾选 需要下载的块,点击
下载。 - 确认 停机提示,点击
继续完成 下载。 - 点击
监视按钮 开启 在线状态查看。 - 观察
OB35内的计数器变量,验证 数值是否按预期频率增加。
OB1 与 OB35 的核心区别
理解两者的差异有助于合理分配程序任务。下表列出了关键参数的对比:
| 特性 | OB1 (主循环) | OB35 (循环中断) |
|---|---|---|
| 执行机制 | 循环扫描,时间不固定 | 定时触发,时间固定 |
| 优先级 | 最低 (等级 1) | 较高 (等级 12) |
| 典型周期 | 10ms - 100ms 波动 | 固定 1ms - 60s 可设 |
| 适用场景 | 逻辑控制、通信、人机交互 | PID 控制、高速处理、精准计时 |
| 超时影响 | 看门狗报错停机 | 触发时间错误中断 (OB80) |
中断执行流程示意
为了更直观地理解 OB35 如何打断主程序,请参考以下执行流程图。当到达设定时间时,CPU 会暂停当前任务,优先处理中断。
图中显示,OB1 是持续运行的基线。一旦满足时间条件,流程立即跳转至 OB35。执行完毕后,流程返回 OB1 暂停处继续运行。这种机制保证了定时任务的优先级。
常见故障与排查
在使用过程中,可能会遇到中断未执行或报错的情况,请按以下步骤排查。
- 检查 循环时间设置。如果设置时间小于 CPU 处理最小周期,会 导致时间错误。
- 查看 诊断缓冲区。若发生时间超载,系统 会 调用
OB80时间错误中断。 - 确认
OB80是否存在。如果没有下载OB80,严重错误 会导致 PLC 停机。 - 优化
OB35程序长度。确保指令执行时间远小于中断周期。 - 计算 最大负载。公式如下:
$$ T_{load} = \frac{T_{exec}}{T_{cycle}} \times 100\% $$
其中 $T_{exec}$ 是 OB35 执行耗时,$T_{cycle}$ 是设定周期。确保 $T_{load}$ 低于 50% 以预留安全余量。
- 禁用 未使用的中断。若不需要
OB35,务必 在项目树中 删除 该块,防止 CPU 尝试调用空块产生警告。 - 重启 PLC 测试。某些配置更改 需要 断电重启后才能生效。
记录 每次修改后的系统响应时间,建立 性能基线以便后续维护。若发现周期抖动过大,检查 是否有其他高优先级中断(如硬件中断)占用了资源。

暂无评论,快来抢沙发吧!