PLC S7-1200中断组织块实训与综合设计:循环中断OB30、硬件中断OB40、诊断OB82/插拔OB83/机架OB86、启动OB100与抢答器传送带彩灯
本篇为《电气控制与 PLC(西门子 S7-1200 / TIA 博途)》第八章"中断组织块与综合程序设计"的课堂实训整理。上半部分讲六类组织块(OB)的作用、编号与博途建块/组态方法,重点是循环中断 OB30、硬件中断 OB40/OB41、错误处理 OB82/OB83/OB86、启动 OB100;下半部分是四个综合程序设计大题:锅炉引风机/鼓风机顺序启停、四人抢答器、传送带行程开关顺序控制、8 路彩灯循环,并串讲交叉引用、多重背景 FB、自锁互锁等工程要点。与此前"用户程序结构(FC/FB/DB/OB 概念、时间中断与延时中断)"一篇互补,本篇侧重中断 OB 的实操配置与综合应用题。个别 OB 编号、定时器号、I/O 地址以教材和博途实际组态为准,已标注【以教材为准】。
一、核心结论(先记住这 22 条)
- 组织块(OB)是操作系统与用户程序之间的接口,由 CPU 在特定事件或状态下自动调用;用户程序通过编写不同 OB 来响应"循环扫描、启动、中断、错误"等事件。
- OB1 是程序循环组织块(主程序),CPU 处于 RUN 时从上到下循环扫描执行 OB1。
- S7-1200 常见中断/事件类 OB:启动组织块、时间中断、延时中断、循环中断、硬件中断,以及诊断错误、插拔、机架故障等错误处理组织块。
- 循环中断 OB(默认 OB30)按固定的时间间隔被周期性调用,与 OB1 的扫描周期无关;在其属性中可设置"循环时间(周期)"。
- 用循环中断让 Q0.0 每 500ms 翻转一次,即可得到0.5s 为 1、0.5s 为 0、周期 1s 的方波;改循环时间即改方波周期。
- QRY 是中断查询指令,可实时查询某中断(如循环中断、时间中断)的当前状态(启用/禁用等),也可按指定日期时间查询。
- 硬件中断 OB(编号从 OB40 开始)在发生硬件事件时执行,事件包括数字量输入的上升沿/下降沿、高速计数器事件等;它会中断正常循环程序、优先执行,用于快速响应(如立即停止关键设备)。
- 用ATTACH 指令把硬件事件(输入通道)与硬件中断 OB 关联,DETACH 解除关联;还要在 CPU 属性的数字量输入通道里启用上升沿/下降沿检测。
- 硬件中断例:I0.0 上升沿触发 OB40 让 MW200 加 1,I0.1 上升沿触发让 MW200 减 1,每来一个沿动作一次。
- 诊断错误中断 OB82在模块出现诊断事件(模块烧毁、短路、测量值超量程等)时调用;若程序中没有下载 OB82,CPU 会进入 STOP(停机)。
- 插拔中断 OB83在 RUN 状态下插拔模块/导轨(设备不支持热插拔时)触发;没有 OB83 可能导致 CPU 异常停机。
- 机架故障 OB86在 CPU 检测到分布式机架或分布式 I/O 站通讯丢失(站故障)时调用;缺失时 CPU 同样会停机。
- 启动组织块(默认 OB100)只在 CPU 从 STOP 切换到 RUN 时执行一次,执行完后才进入 OB1 循环,常用于上电初始化(如用 MOVE 给某 MW 送初始值)。
- 启动 OB 执行期间不更新过程映像,读到的是过程映像的规定(初始)值——了解即可。
- **交叉引用(Cross-reference)**可查看任一变量(停止按钮、TON 定时器、电机线圈等)在哪些程序段、哪些块中被读/写,是排查与统一控制多台设备的重要调试工具(教材约 161 页)。
- 多台相同电动机可用一个功能块 FB(如 FB2)+ 多次调用统一实现启停逻辑;实例多、变量多时用**多重背景(Multi-instance)**集中管理背景数据,避免地址冲突。
- 注意 M 区地址重叠:MW20 包含 M20.0、M20.1 等位,用 MOVE 向 MW/M 位复制数据时不要让多个线圈占用重叠地址。
- 引风机/鼓风机顺序控制:开机先开引风机、延时 10s(T37)再自动开鼓风机;停机先停鼓风机、延时 20s(T38)后再停引风机。
- 启动(常开)按钮是瞬动信号,PLC 扫描下只接通一个扫描周期,必须用线圈自身常开触点自锁(启保停)才能保持输出;停止按钮常用常闭(低电平有效)。
- 工程上定时器触点一般不直接驱动输出负载,而是先驱动中间继电器 M,再由 M 去驱动输出 Q,逻辑更规范、便于扩展。
- 四人抢答器核心:主持人开始后用 T37 限定 10s 抢答窗口;先抢者用中间继电器自锁,并把其常闭触点串入其余三人支路实现互锁;灯亮 3s、音响响 2s,由定时器常闭触点定时切断。
- 传送带顺序控制靠行程开关 SQ1~SQ5 作为输入,按工艺顺序逐台启动/停止电机并循环;8 路彩灯用 0.1s 定时器(T33/T37)配合移位/循环指令让 Q0.0~Q0.7 依次点亮。
二、知识结构
S7-1200 中断组织块实训与综合程序设计(第8章) | |- 1. 组织块 OB 总览(操作系统调用用户程序的接口) | |- 程序循环 OB1(主循环扫描) | |- 启动 OB100(STOP->RUN 执行一次,初始化) | |- 时间中断 OB10~OB17(设定日期/时刻) | |- 延时中断 OB20~OB23 | |- 循环中断 OB30~OB38(固定周期,重点) | |- 硬件中断 OB40~OB47(上升/下降沿、高速计数,重点) | `- 错误处理:诊断 OB82、插拔 OB83、机架故障 OB86(缺失则停机) | |- 2. 循环中断 OB30 实训:建块->设循环时间->Q0.0 方波->QRY 查询 |- 3. 硬件中断 OB40/OB41:ATTACH 关联、CPU 通道启用沿检测、MW 加减 |- 4. 错误处理 OB82/OB83/OB86 与启动 OB100 | |- 5. 调试与结构化:交叉引用、多重背景 FB、MOVE 与地址重叠 | `- 6. 综合程序设计四大题 |- 锅炉引风机/鼓风机顺序启停(T37 10s、T38 20s、自锁、常闭停止) |- 四人抢答器(10s 限时、先抢自锁互锁、灯 3s、音响 2s) |- 传送带行程开关顺序控制(SQ1~SQ5、M1/M2/M3、循环) `- 8 路彩灯循环(Q0.0~Q0.7、0.1s、移位/循环指令)三、详细知识点
(一)组织块(OB)与中断总览
组织块是 CPU 操作系统与用户程序之间的接口。操作系统按照不同的事件(开始运行、循环扫描、定时时间到、硬件沿信号、模块出错等)去调用对应的 OB;用户把要在该事件下执行的程序写进相应 OB 即可。S7-1200 常用的组织块类别(第八章选择题高频):
| 类别 | 典型编号【以教材为准】 | 何时被调用 | 本次要求 |
|---|---|---|---|
| 程序循环组织块 | OB1 | CPU 在 RUN 时循环扫描执行 | 主程序 |
| 启动组织块 | OB100(默认) | STOP→RUN 时执行一次 | 初始化 |
| 时间中断组织块 | OB10~OB17 | 按设定的日期/时刻(可一次性或周期)执行 | 了解/会查 |
| 延时中断组织块 | OB20~OB23 | 由指令启动、延时设定时间后执行 | 前序课已讲 |
| 循环中断组织块 | OB30~OB38 | 按固定时间间隔周期性执行 | 重点实训 |
| 硬件中断组织块 | OB40~OB47 | 数字量沿、高速计数器等硬件事件触发 | 重点实训 |
| 诊断错误中断 | OB82 | 模块诊断错误(短路、烧毁、超量程等) | 重点 |
| 插拔中断 | OB83 | RUN 中插拔模块/导轨 | 了解 |
| 机架故障组织块 | OB86 | 分布式机架/I/O 站通讯丢失 | 了解 |
选择题常让按顺序填写:“①程序循环、②时间中断、③延时中断、④循环中断、⑤硬件中断、⑥启动”,要能把名称与触发条件一一对应。
(二)循环中断 OB30 实训:用 Q0.0 输出周期 1s 方波
1. 控制要求
让输出 Q0.0 前 500ms 输出为 1、后 500ms 输出为 0,即 0.5s 高电平、0.5s 低电平交替,得到周期为 1s 的方波。该功能当然也能用定时器在 OB1 里"0.5s 高—0.5s 低"循环编程实现,但用循环中断更直接:让 OB 每隔 500ms 自动执行一次,在 OB 内对 Q0.0 取反即可。
2. 博途建块步骤
- 在项目树中展开该 PLC →程序块 → 添加新块;
- 选择组织块 OB,在列表中选择循环中断(Cyclic interrupt),默认编号OB30;
- 在弹出的组态/属性中设置循环时间(周期)= 500ms;编程语言选梯形图 LAD(课堂未选 SCL);
- 打开 OB30,在其中编写让 Q0.0 交替(取反)的程序;
- OB30 会由系统每隔 500ms 自动调用一次,与 OB1 扫描周期长短无关。
3. 修改循环时间与现象
- 在 OB30 的属性("循环时间/时间间隔"项)里可把周期改为 1s、2s 等,界面显示的时间单位注意是 ms/μs;
- 程序下载后观察 CPU 上Q0.0 指示灯:0.5s 亮、0.5s 灭交替闪烁;若把循环时间改为 1s,则变成 1s 亮、1s 灭(周期 2s)。
- 还可用一个 M 点(如某 M 位由 0 变 1)来切换/使能不同的循环时间,实现方波周期在线切换。
4. QRY 中断查询指令
- QRY(Query,查询中断)指令用于实时查询某个中断组织块(中断对象)的状态(是否启用、当前状态等);
- 既可以查询当前实时状态,也可以设定到某个日期/时间(课堂举例"设定到某年 10 月 12 号")查询时间类中断;
- 在循环中断组态/指令旁配合使用,可在程序中读出中断是否正常运行。具体引脚(EN、STATUS、中断对象编号)以博途帮助和教材为准【以教材为准】。
(三)硬件中断 OB40 / OB41 实训
1. 作用与触发事件
硬件中断 OB 在发生相关硬件事件时执行,可快速响应并优先运行硬件中断程序(例如立即停机、立即停止某些关键设备)。常见事件:
- 数字量输入通道的上升沿事件、下降沿事件;
- 高速计数器(HSC)事件。
事件发生时,硬件中断 OB 会中断正在执行的正常循环程序(OB1)而优先执行,执行完再返回断点。硬件中断 OB 编号从OB40开始。
2. 关联事件与 OB:ATTACH / DETACH
- 用ATTACH(连接中断)指令把某个硬件事件(输入通道)与指定的硬件中断 OB 关联起来;用 DETACH 解除关联;
- 也可在设备组态中直接把通道事件分配给 OB。
3. 实训例:I0.0、I0.1 上升沿让 MW200 加/减 1
- 新建硬件中断组织块OB40:当硬件输入I0.0 出现上升沿时触发 OB40,在 OB40 中写
MW200 := MW200 + 1(INC 加 1); - 再建OB41(或在同一 OB 中区分事件):当I0.1 上升沿时执行
MW200 := MW200 - 1(DEC 减 1); - 这样每来一次 I0.0 上升沿 MW200 加 1、每来一次 I0.1 上升沿减 1。
4. 在 CPU 属性中启用沿检测(关键组态)
- 打开CPU 的设备组态 → 属性 → 常规 → 数字量输入;
- 选择对应通道,勾选启用上升沿检测(需要时再启用下降沿检测);
- 把"通道 1 上升沿"等事件与前面建立的硬件中断 OB(OB40/OB41)关联;
- 下载硬件组态与程序,在线监控 MW200,验证每次按按钮(产生一个上升沿)数值加/减 1。
(四)错误处理组织块 OB82 / OB83 / OB86 与启动 OB100
1. 诊断错误中断 OB82
- 当模块产生诊断错误事件时调用,例如:某模块烧毁、模块短路、信号超出该模块测量范围(上/下限)等硬件/诊断故障;
- 如果程序中没有下载 OB82,发生这类错误时 CPU 会直接进入 STOP(停机);因此一般把 OB82 当作"错误处理/容错程序",在其中安排报警、安全停机或记录等,保证 CPU 不停机。
2. 插拔中断 OB83
- 当 CPU 处于 RUN 时插拔模块/导轨(尤其较低端、不支持热插拔的设备)会触发;
- 若没有 OB83,运行中插拔可能导致 CPU 异常停机(现象类似系统重启)。建立 OB83 可让系统按用户逻辑处理插拔事件。
3. 机架故障组织块 OB86
- 当 CPU 检测到分布式机架、分布式 I/O 站(PROFINET/PROFIBUS 从站)通讯丢失或重新上电恢复时调用 OB86;
- 同样,若未在 PLC 中创建 OB86,出现站故障时 CPU 会停机。
4. 启动组织块 OB100
- CPU从 STOP 切换到 RUN 时执行一次启动 OB,执行完毕后才开始循环执行 OB1;
- 默认启动 OB 为OB100,一般一个项目只需一个;
- 典型用途是初始化:例如在 OB100 中用MOVE把初始值(如 100)送入某个 MW,把计数器、标志位清零/置初值;
- 添加路径:添加新块 → 组织块 →启动(Startup)。
- 注意:启动 OB 执行过程中不刷新过程映像,读到的是过程映像规定值(此点了解即可)。
记忆规律:错误类 OB(82/83/86)的共同意义是"容错"——下载了它们,对应故障发生时 CPU 进 OB 处理而不停机;没下载就停机。
(五)交叉引用、多重背景 FB 与地址重叠(调试与结构化编程)
1. 交叉引用(Cross-reference)
- 在博途中对任意变量(如停止按钮、TON 定时器、电动机线圈)右键 →交叉引用(或工具菜单里的交叉引用),可列出该变量在哪些块、哪些程序段被访问(读/写);
- 用途:在多台电动机、多个定时器的复杂程序中快速定位、统一修改与排错(课堂对照教材约161 页的电动机启停例子演示)。
2. 多重背景与 FB 复用
- 多台电动机的启停逻辑完全相同,可只写一个功能块FB(如 FB2,电动机控制 FB),在主程序 OB1 中对每台电动机各调用一次 FB2,为每次调用分配背景数据;
- 随着设备/变量增多,为每次调用都单独建背景 DB 容易造成数据块与地址管理混乱,此时采用多重背景(Multi-instance):把多个实例的背景数据集中放到一个(上层)背景 DB 中统一管理。
3. MOVE 传送与 M 区地址重叠
- MOVE把源操作数传送到目的地址,可一次写到多个目标;课堂示例把 M20.0/MW20 的值复制到多个 M 位;
- 注意地址重叠:一个 MW(字)含两个 MB、16 个位,例如 MW20 含有 M20.0、M20.1……M21.7。程序段 1 若对 MW20 写值、程序段 2 又使用 M20.0/M20.1 等位线圈,就会出现重叠访问,要避免无意冲突;
- 用软件的"重叠访问"提示/交叉引用检查可发现这类问题。
(六)综合例 1:锅炉引风机、鼓风机顺序控制(梯形图大题)
1. 控制要求
- 开机:按下启动按钮,首先启动引风机;延时10s后自动启动鼓风机;
- 停机:按下停止按钮,先关断鼓风机;再延时20s后关闭引风机。
2. I/O 与定时器分配(课堂方案,编号【以教材为准】)
| 元件 | 地址 | 说明 |
|---|---|---|
| 启动按钮 SB1 | I0.0(常开) | 启动 |
| 停止按钮 SB2 | I0.x(常用常闭,低电平有效) | 停止 |
| 引风机接触器 | Q0.0 | 先开、后停 |
| 鼓风机接触器 | Q0.1 | 延时 10s 开、先停 |
| 启动延时定时器 | T37(TON,10s) | 引风机运行 10s 后接通鼓风机 |
| 停止延时定时器 | T38(TON,20s) | 鼓风机停后 20s 停引风机 |
3. 程序逻辑(启保停 + 两级延时)
- 启动引风机:按 I0.0 → Q0.0 得电,并用Q0.0 常开触点自锁保持;同时启动 T37 定时 10s;
- 10s 后开鼓风机:T37 定时到,其常开触点闭合→ Q0.1 得电并自锁,鼓风机启动;
- 停止时先停鼓风机:按下停止按钮(常闭),先切断 Q0.1 支路,鼓风机立即停;同时启动 T38 定时 20s;
- 20s 后停引风机:T38 定时到,其常闭触点断开Q0.0 自锁回路,引风机失电停止。
4. 关键考点
- 为什么必须自锁:PLC 里常开启动按钮是瞬动的——按下时只接通一个扫描周期、松手即断开,若没有 Q0.0 自身常开触点自锁,线圈无法长时间保持;
- 停止按钮常开/常闭:常用常闭按钮(低电平有效),未按时回路通、按下时回路断;若题目改用常开按钮,则在程序里取反(用常闭触点)即可,功能等价;考试加不加上升沿 P/下降沿 N 不影响本题结果(自锁已负责保持),P/N 主要用于捕捉瞬动;
- 中间继电器规范:定时器/触点一般不直接驱动输出负载,先驱动中间继电器 M(由按钮/触点带 M 线圈自锁),再用 M 触点驱动 Q 输出;直接接 Q 逻辑上也成立,但工程上不规范、不利于扩展与保护。
(七)综合例 2:四人抢答器(课程设计大题)
1. 控制要求
- 主持人 1 名、参赛者 4 名(A、B、C、D);
- 主持人宣布题目并按下开始按钮后,10s 以内抢答有效;10s 后若无人抢答,则本题结束、所有按钮无效;
- 每人一个抢答按钮、一个指示灯,只有最先按下按钮者抢答有效,其余三人无效;
- 抢答有效时:该选手指示灯亮 3s,同时音响(喇叭)响 2s。
2. I/O 与内部元件分配(课堂方案,编号【以教材为准】)
| 元件 | 地址 | 说明 |
|---|---|---|
| 主持人开始按钮 | I0.0 | 开始并启动 10s 限时 |
| 4 名选手抢答按钮 | I0.1~I0.4 | 一人一个 |
| 4 名选手指示灯 | Q0.0~Q0.3 | 一人一个,亮 3s |
| 音响(喇叭) | Q0.4 | 响 2s |
| 抢答允许标志 | M0.0 | 10s 窗口内为 1 |
| 4 名选手锁存标志 | M0.1~M0.4 | 先抢者自锁 |
| 限时定时器 | T37(10s) | 10s 到关闭抢答窗口 |
| 音响定时器 | T38(2s) | 2s 后停音响 |
| 灯定时器 | 另一定时器(3s) | 3s 后灭灯,编号以教材为准 |
3. 程序逻辑
- 开始与限时:主持人按 I0.0 → M0.0 自锁,同时 T37 开始 10s 计时;把T37 常闭触点串入 M0.0/抢答总回路,10s 到 T37 常闭断开,M0.0 失电,四个选手支路全部失效(10s 后抢答无效);
- 单人锁存:每个选手支路 = M0.0 常开(必须在 10s 窗口内)串本选手按钮 I0.x,驱动本选手 M0.x 并自锁;
- 互锁(核心):把其余三名选手 M0.x 的常闭触点串入本选手支路。任一选手最先按下,其 M0.x 得电、常闭断开,其余三人支路被切断,后按者无效——这与正反转控制中"把各自常闭串到对方支路"的互锁完全同理;
- 灯亮 3s:先抢者 M0.x 得电 → 其指示灯 Q0.x 亮,在灯支路串入"3s 定时器的常闭触点",3s 到自动断开灭灯;
- 音响响 2s:把四人 M0.x 常开并联去驱动音响 Q0.4,并串T38(2s)常闭触点,任一人抢到即响,2s 到 T38 常闭断开、音响停;
- 用中间继电器 M锁存抢答状态、再驱动 Q 输出,而不是按钮直接带灯/喇叭,便于复位与扩展。
设计要点口诀:主持人定时开窗(M0.0 + T37)→ 先抢者自锁 → 常闭互锁封死他人 → 定时器常闭定时关灯关音响。
(八)综合例 3:传送带行程开关顺序控制
1. 控制要求(多台传送带/小车)
- 初始状态各电动机均停止;按下启动按钮 I0.0 后:
- 电动机 **M1(Q0.0)**首先启动运行;
- 工件(小车)碰到行程开关SQ1→ 电动机 **M2(Q0.1)**启动;
- 碰到SQ2→M1 停止;
- 碰到SQ3→ 电动机 **M3(Q0.2)**启动;
- 碰到SQ4→M2 停止;
- 碰到SQ5→M3 停止;之后循环往复工作;
- 按下停止按钮整体停止并复位,可重新开始。
2. 实现要点
- 把每个行程开关 SQ 当作一个数字量输入(如 SQ1=I0.1、SQ2=I0.2、SQ3=I0.3、SQ4/SQ5 依次对应后续输入点,具体编号以题图为准【以教材为准】);
- 工件碰到行程开关时其常开触点闭合(常闭触点断开),用它去接通/断开相应电机的自锁支路;
- 每台电机仍用"启保停"自锁保持,按工艺顺序由前一个 SQ 启动下一台、由相应 SQ 停掉前一台;
- 停止按钮用常闭(低电平有效),按下后切断所有支路、复位中间标志,实现一个循环周期结束后重新启动。
(九)综合例 4:8 路彩灯循环
1. 控制要求
- 8 路彩灯接Q0.0Q0.7(H1H8);按下启动按钮后,按H1→H2→…→H8的顺序依次点亮,相邻彩灯间隔 0.1s,并循环;按下停止按钮复位。
2. 实现要点
- 用 100ms 定时器(T33/T37,设定 0.1s,考试直接写 0.1s)产生节拍;
- 每个 0.1s 节拍用移位/循环移位指令(或依次自锁的中间继电器 M0.1、M0.2……)把点亮位依次向后移:Q0.0 先亮 → 0.1s 后 Q0.1 亮 → …… → Q0.7 亮,再循环回 Q0.0;
- 启动后用中间继电器 M0.0 自锁保持整个循环,停止按钮切断 M0.0 并复位输出。
(十)第八章选择题/理论考点
- 能按触发条件判别组织块类型:程序循环(OB1)、时间中断、延时中断、循环中断、硬件中断、启动(OB100);
- 全局变量 vs 背景数据块:全局变量(全局地址 M/I/Q 等)可被所有块访问、使用直接、速度快;FB 的局部变量保存在**背景数据块(背景 DB)**中,靠背景 DB 号区分不同实例;
- 错误处理 OB(82/83/86)"有则容错、无则停机"的结论;
- 课堂教师对部分选择题给了参考答案(如若干题选"正确"、个别选"最后一个/第二个/C"等),因录音无法还原完整题干与选项,本稿不逐一罗列选项答案,请以教材第八章习题与博途实测为准【以教材为准】。
四、典型例题与解题方法汇总
| 例题 | 核心方法 |
|---|---|
| 用循环中断做方波 | 添加循环中断 OB30、设周期 500ms,OB 内对 Q0.0 取反 → 周期 1s 方波;改周期即改方波周期 |
| 查询中断状态 | 用 QRY 指令查询循环/时间中断的实时状态或指定日期时间状态 |
| 上升沿计数 | 建硬件中断 OB40/OB41,CPU 通道启用上升沿检测,ATTACH 关联事件,OB 内 MW±1 |
| 模块故障不停机 | 下载诊断 OB82(插拔 OB83、机架 OB86),在其中安排容错处理 |
| 上电初始化 | 在启动 OB100 中用 MOVE 给 MW/标志位送初值(只执行一次) |
| 引风机/鼓风机 | 启保停自锁 + T37(10s 启动)+ T38(20s 停止);先开引风、先停鼓风 |
| 四人抢答器 | M0.0+T37 限 10s 窗口;先抢者 M0.x 自锁、常闭互锁;灯 3s、音响 2s 定时器常闭切断 |
| 传送带顺序控制 | SQ1~SQ5 作输入,按工艺顺序启/停 M1/M2/M3 并循环,停止按钮常闭复位 |
| 8 路彩灯 | 0.1s 定时器(T33/T37)+ 移位/循环指令驱动 Q0.0~Q0.7 依次点亮 |
| 多台电机统一编程 | 一个 FB(FB2)多次调用 + 多重背景,交叉引用排查,注意 M 区地址重叠 |
综合大题通用解题步骤:
- 读清工艺要求,列出"谁先动、延时多久、谁后动、停止顺序";
- 做I/O 分配表(输入按钮/行程开关、输出电机/灯/喇叭、中间继电器 M、定时器 T);
- 对需要保持的输出一律加自锁(启保停);对互斥对象加互锁(常闭串入对方支路);
- 用 TON 定时器实现各级延时,用其常开接通后续、常闭切断前级;
- 瞬动按钮(开始、抢答、行程开关)配合上升沿/自锁;停止按钮优先常闭、低电平有效;
- 输出尽量由中间继电器 M 驱动;最后在博途中编译、下载、PLCSIM 或上机验证时序。
五、术语、编号与指令速查表
| 名称 | 编号 / 标识 | 作用 |
|---|---|---|
| 程序循环组织块 | OB1 | 主程序,RUN 时循环扫描 |
| 启动组织块 | OB100(默认) | STOP→RUN 执行一次,初始化 |
| 时间中断 OB | OB10~OB17 | 设定日期/时刻执行 |
| 延时中断 OB | OB20~OB23 | 指令启动后延时执行 |
| 循环中断 OB | OB30~OB38 | 固定周期循环执行(实训用 OB30) |
| 硬件中断 OB | OB40~OB47 | 上升/下降沿、高速计数事件触发 |
| 诊断错误中断 | OB82 | 模块诊断错误;缺失则 CPU 停机 |
| 插拔中断 | OB83 | RUN 中插拔模块/导轨 |
| 机架故障 OB | OB86 | 分布式机架/I/O 站丢失 |
| QRY | 指令 | 查询中断实时/指定时间状态 |
| ATTACH / DETACH | 指令 | 连接 / 解除硬件事件与中断 OB |
| MOVE | 指令 | 数据传送(可多目标) |
| TON(T37/T38/T33) | 定时器 | 接通延时;100ms 时基可做 0.1s 节拍 |
| INC / DEC | 指令 | 字加 1 / 减 1(硬件中断例用) |
| 自锁(启保停) | 电路 | 启动常开 + 自身常开自锁 + 停止常闭 |
| 互锁 | 电路 | 对方常闭触点串入本支路 |
| 多重背景 | FB 机制 | 多个 FB 实例共用背景 DB,避免冲突 |
| 交叉引用 | 调试工具 | 查变量在各块/程序段的使用情况 |
六、实训操作与上机要求
- 会在博途中"添加新块 → 组织块",分别建立循环中断 OB30、硬件中断 OB40/OB41、启动 OB100 及错误处理 OB82/OB83/OB86,并正确设置循环时间、编程语言(LAD)。
- 会在CPU 设备组态 → 属性 → 数字量输入通道中启用上升沿/下降沿检测,并用 ATTACH 把通道事件与硬件中断 OB 关联。
- 会用 QRY 查询中断状态;下载后通过 CPU 面板 Q 点指示灯、在线监控 MW 验证循环中断方波与硬件中断计数。
- 会用交叉引用查看变量、用多重背景 FB 统一编写多台电动机控制,并能识别 M 区地址重叠。
- 四个综合大题(引风机/鼓风机、抢答器、传送带、彩灯)要求能独立完成 I/O 分配、画梯形图、说明时序,并在 PLCSIM 或真机上仿真验证;可作为实验报告题目。
七、待核对与以教材为准的地方
- 各类 OB 的具体编号范围(时间中断 OB10~17、延时 OB20~23、循环 OB30~38、硬件 OB40~47 等)随 CPU 型号/固件与教材版本略有差异,以所用 S7-1200 教材和博途实际可选编号为准。
- 综合例题中的定时器号(T37/T38/T33)、I/O 与 M 地址为课堂口述记录,不同题图分配不同,做题时以题目给出的 I/O 图/表为准;本稿地址仅用于说明逻辑。
- 抢答器"灯 3s"所用定时器编号、传送带 SQ4/SQ5 对应的具体输入点,录音未能清晰还原,已标【以教材为准】,请对照教材题图。
- QRY、ATTACH/DETACH 等指令的引脚参数(EN、STATUS、OB_NR、中断对象编号)以博途在线帮助与教材为准。
- 第八章选择题的具体选项答案录音未完整还原,本稿只给知识点判别方法,不杜撰选项。
八、复习自测(25 题,含答案与提示)
1. 组织块 OB 的本质是什么?由谁调用?
答:OB 是操作系统与用户程序之间的接口,由 CPU 操作系统在特定事件/状态下自动调用,用户在对应 OB 中写要执行的程序。
2. OB1 是什么?何时执行?
答:程序循环组织块(主程序),CPU 在 RUN 状态下从上到下循环扫描执行。
3. S7-1200 常见的中断/事件类组织块有哪六类?
答:启动、时间中断、延时中断、循环中断、硬件中断,以及诊断错误/插拔/机架故障等错误处理组织块。
4. 循环中断 OB 多久执行一次?与 OB1 扫描周期有关吗?
答:按在其属性中设定的固定循环时间(如 500ms)周期性执行一次,与 OB1 扫描周期长短无关。
5. 如何用循环中断让 Q0.0 输出周期 1s 的方波?
答:建循环中断 OB30、循环时间设 500ms,在 OB30 中对 Q0.0 取反,则 0.5s 为 1、0.5s 为 0,周期 1s。
6. 把 OB30 循环时间由 500ms 改为 1s,方波如何变化?
答:变成 1s 亮、1s 灭,方波周期由 1s 变为 2s。
7. QRY 指令的作用是什么?
答:查询中断组织块(中断对象)的实时状态,也可按指定日期/时间查询时间类中断状态。
8. 硬件中断 OB 由哪些事件触发?编号从几开始?
答:数字量输入的上升沿/下降沿、高速计数器等硬件事件;编号从 OB40 开始。
9. 硬件中断 OB 与正常循环程序的执行优先级关系?
答:硬件事件发生时,硬件中断 OB 中断正在执行的 OB1 循环程序、优先执行,执行完再返回。
10. 用什么指令把硬件事件与硬件中断 OB 关联?解除用什么?
答:ATTACH 关联、DETACH 解除。
11. 写出 I0.0 上升沿让 MW200 加 1 的实现要点。
答:建硬件中断 OB40,在 CPU 属性数字量输入通道启用 I0.0 上升沿检测并关联 OB40,OB40 内写 MW200 加 1(INC)。
12. 除了写 OB40 和 ATTACH,还必须做哪一步硬件组态?
答:在 CPU 设备组态→属性→数字量输入对应通道中启用上升沿(需要时下降沿)检测。
13. OB82 是什么中断?举两类触发事件。
答:诊断错误中断;如模块烧毁/短路、信号超出模块测量范围(超量程)等诊断事件。
14. 程序中没有下载 OB82,发生诊断错误时 CPU 会怎样?
答:CPU 直接进入 STOP(停机);下载 OB82 后可在其中容错处理而不停机。
15. OB83、OB86 分别在什么情况下触发?
答:OB83 在 RUN 中插拔模块/导轨时触发;OB86 在分布式机架或分布式 I/O 站通讯丢失/恢复时触发。
16. 错误处理类 OB(82/83/86)的共同意义是什么?
答:容错——下载并编写后,对应故障发生时 CPU 进入 OB 处理而不停机;缺失则可能停机。
17. 启动 OB 默认是哪个?何时执行、执行几次?主要用途?
答:OB100;CPU 从 STOP 切到 RUN 时执行一次,执行完才进 OB1;用于上电初始化(如 MOVE 送初值、清零)。
18. 启动 OB 执行期间过程映像是否更新?
答:不更新,读到的是过程映像规定(初始)值(了解)。
19. 交叉引用有什么用处?
答:查看某变量在哪些块、哪些程序段被读/写,便于在多设备复杂程序中定位、统一修改与排错。
20. 多台相同电动机为什么适合用一个 FB 多次调用?什么是多重背景?
答:启停逻辑相同,写一个 FB(如 FB2)重复调用即可;多重背景是把多个 FB 实例的背景数据集中到一个背景 DB 中管理,避免数据块/地址混乱冲突。
21. MW20 与 M20.0 同时使用要注意什么?
答:地址重叠——MW20 含有 M20.0 等位,对 MW20 写值会影响这些位,避免多个线圈/传送占用重叠地址。
22. 简述引风机/鼓风机的启停顺序与所用定时器。
答:开机先开引风机 Q0.0,T37 延时 10s 后自动开鼓风机 Q0.1;停机先停鼓风机,T38 延时 20s 后再停引风机。
23. 启动按钮为什么必须自锁?停止按钮为何常用常闭?
答:启动按钮是瞬动信号,只通一个扫描周期,需用自身常开触点自锁保持;停止按钮用常闭(低电平有效),未按时通、按下时断,符合急停/停止的安全习惯。
24. 四人抢答器如何保证"只有最先按下者有效",并实现灯 3s、音响 2s?
答:主持人开始后 M0.0 自锁并由 T37 限定 10s 窗口;每人用 M0.x 自锁,并把其余三人 M0.x 常闭串入本支路实现互锁,先抢者封死他人;灯支路串 3s 定时器常闭、音响 Q0.4 支路串 T38(2s)常闭,定时到自动熄灭/停响。
25. 8 路彩灯循环和传送带顺序控制分别靠什么实现顺序/节拍?
答:彩灯用 100ms 定时器(T33/T37,0.1s)产生节拍,配合移位/循环指令让 Q0.0~Q0.7 依次点亮并循环;传送带用行程开关 SQ1~SQ5 作为输入触点,按工艺顺序逐台启动/停止 M1/M2/M3 并循环,停止按钮常闭复位。