S7-1200 用户程序结构:FC、FB、OB、DB 与定时器
PLC S7-1200 博途笔记(第八章 用户程序结构 + 第七章习题):FC函数/FB函数块/OB组织块/DB数据块、局部变量#、单实例与多重背景、程序循环OB1与扫描周期、时间中断/延时中断/循环中断、TON/TOF定时器、S置位保持、P/N上下沿、CTU/CTD/CTUD计数器,含走廊灯与三台电机顺序启动例题
本篇前半讲评博途(TIA Portal)第七章课后习题(7-30~7-44),复习常开常闭、NOT 取反、比较、数学运算与移动、TON/TOF 定时器、置位保持、上升沿/下降沿、加/减/加减计数器等基本指令;后半进入第八章新内容——PLC 用户程序结构,系统讲 FC 函数、FB 函数块、OB 组织块、DB 数据块、背景数据块与多重背景、程序循环 OB1 与扫描周期,以及时间中断、延时中断、循环中断等中断组织块,并完成”走廊灯延时熄灭、再按重新计时”和”三台电机顺序启动/停止”两道典型编程题。第七章指令是基础,第八章程序块结构化编程是重点。
一、核心结论(先记住这 18 条)
- S7-1200 用户程序由不同的块(Block)组成,核心是 OB 组织块、FC 函数、FB 函数块、DB 数据块。
- OB 组织块是操作系统与用户程序的接口,由操作系统调用;其中 OB1(Main,程序循环组织块)是主程序,CPU 运行时被周期性循环调用,新建工程时默认生成。
- 一个项目至少有一个程序循环 OB(OB1);可有多个,按 OB 编号由小到大依次执行;程序循环 OB 优先级最低,可被高优先级的中断 OB 打断。
- CPU 执行一次程序循环 OB 所需时间即程序循环扫描周期(课堂举例约 150 ms 量级),普通定时器的定时精度受扫描周期影响。
- FC(函数/功能)是用户编写的、完成特定任务的子程序,有 Input/Output/InOut/Temp 接口参数,没有自己的背景数据块,执行完后内部临时数据全部释放、不保存。
- FC 内的局部变量在程序编辑器中前面自动加
#号;在 OB 中调用 FC 时,框外传入的实参(全局符号)自动加双引号。 - FB(函数块/功能块)也是用户子程序,但拥有自己的背景数据块(Instance DB),可保存数据;其接口除 Input/Output/InOut/Temp 外还有 Static(静态变量),静态变量在执行结束后仍保持。
- FC 适合做纯运算、处理完即释放;FB 适合需要记忆/保持状态(如内含定时器、计数器)的功能封装。
- FB 可被 OB 或其他块调用;调用单个 FB 时系统为每次调用生成一个背景 DB,称单实例。
- 多重背景(Multi-instance):在一个 FB 内多次调用别的 FB(如多个 TON/TOF、多台电机),把它们的背景数据集中存放在外层 FB 的一个背景 DB 中,避免生成大量零散背景 DB,便于管理上百台设备。
- FC/FB 都可用 LAD 梯形图或 SCL 结构化文本(类高级语言)编写;SCL 适合表达数学运算和复杂逻辑。
- TON 是接通延时定时器(输入接通后延时到设定值输出才接通;输入断开立即停止计时并复位);TOF 是断电延时定时器(输入断开后延时一段时间输出才断开),可类比”断电后小车还滑行一段”。
- 定时器有 PT(预设时间)、ET(当前/已计时时间)、Q(输出位)、IN(输入)、R(复位)等端子;ET 实时显示当前计时值,可用 ET 与设定值比较实现区间输出。
- S 置位 / R 复位具有记忆保持功能:置位后即使输入(如 I0.0)断开,该位仍保持上一次状态,直到被复位。
- P 上升沿 / N 下降沿指令检测信号跳变,只在跳变后的一个扫描周期输出脉冲,常用于”按一下触发一次”;可与置位保持配合。
- 计数器:CTU 加计数器、CTD 减计数器、CTUD 加减计数器;PV 预设值、CV 当前值、Q 输出、R 复位、LD 装载;CTD 的 LD 按下后 CV 回到装载值 PV。
- 中断组织块包括时间中断、延时中断、循环中断、硬件中断等;延时中断由硬件/系统级实现,定时精度高于受扫描周期影响的普通定时器,用于高精度延时。
- 时间中断可按每分钟/每小时/每天/每月或指定日期触发,配套 SET(设置)、QRY/QUERY(查询)、ACT(激活)、CAN(取消)指令;延时中断在触发条件(如输入由 1 变 0)后延时固定时间再执行中断 OB,也有启动 SRT、取消 CAN、查询 QRY 指令。
二、知识结构(本节脉络)
1 | |
三、详细知识点笔记
(一)第七章基本指令复习(结合习题)
1. 位逻辑与取反
- 常开触点、常闭触点、输出线圈是最基本的位逻辑元素。
- NOT 为取反指令,把它前面的逻辑运算结果取反:例如 I0.2 接通,经过 NOT 后其后的常闭逻辑状态被翻转(习题 7-36:I0.2 接通时,经 NOT 使对应输出断开)。
2. 比较与数学运算、移动
- 比较指令:对两个数做大于、小于、等于、大于等于、小于等于、不等于比较,条件成立则触点接通(”比大小”)。
- 数学函数:加、减、乘、除等运算;还可以由用户自定义函数关系式(PT/BT 公式)进行计算。
- MOV(移动)指令:把源操作数传送到目的地址。
3. 定时器 TON / TOF
- TON(接通延时,On-Delay):输入 IN 接通后开始计时,当前值 ET 从 0 增加,当 ET ≥ PT(预设时间)时输出 Q 接通并保持;输入 IN 一旦断开,定时器立即停止计时并复位(当前值清零、Q 断开)。
- TOF(断电延时,Off-Delay):输入接通时输出立即接通;输入断开后开始延时,经过 PT 时间输出才断开。可比喻为”断电后小车靠惯性继续滑行一段才停”。
- 端子含义:IN 输入、PT 预设时间、ET 当前已计时时间(实时显示)、Q 输出、R 复位。
- 利用 ET 实时值可做区间判断:如 PT=10 s,另加一条”ET ≥ 5 s 即输出”的比较,则在第 5~10 秒区间输出就接通(习题 7-31 结论)。
4. 置位 S / 复位 R(记忆保持)
- S(Set 置位):一旦条件满足把位置 1 并保持;即使驱动条件(如 I0.0)随后断开,该位仍记住上一次状态、保持为 1,直到 R(Reset 复位)把它清零。
- 因此 S/R 具有记忆功能,是典型的启保停之外的另一种保持手段。
5. 上升沿 P / 下降沿 N
- P(上升沿):检测输入信号由 0 变 1 的跳变,仅在跳变后的一个扫描周期内输出一个脉冲。
- N(下降沿):检测由 1 变 0 的跳变,同样只接通一个扫描周期。
- 常用于按钮”按一下只动作一次”,避免长按期间重复执行;可与 M 中间标志、S 置位组合实现触发保持。
6. 计数器 CTU / CTD / CTUD
- CTU 加计数器:每来一个计数脉冲当前值 CV 加 1,达到预设值 PV 时输出 Q 接通;R 复位清零。
- CTD 减计数器:每来一个脉冲 CV 减 1;LD(装载)端按下时把 CV 重新装载为 PV(回到初始装载值),此时 Q 不接通(习题 7-30:按 I0.3 装载,CV 飞回 PV=3,Q 不接通,选最后一项 D)。
- CTUD 加减计数器:既可加又可减,带加计数端、减计数端、装载 LD、复位 R。
- 公共端子:PV 预设值、CV 当前值、Q 输出、R 复位、LD 装载。
7. 部分习题答案(课堂口径,[以教材/题图为准])
| 题号 | 考点 | 课堂结论 |
|---|---|---|
| 7-30 | CTD 减计数器、LD 装载 | 按装载端 I0.3 后 CV 回到 PV=3,Q 不接通,选最后一项(D) |
| 7-31 | TON 时序、ET 区间 | PT=10 s,加 ET≥5 s 比较,则 5~10 秒区间输出接通,选最后一项 |
| 7-32 / 7-34 | 基本指令时序 | 按题图分析(课堂带过) |
| 7-35 | 指令判断 | 答案 C |
| 7-36 | NOT 取反 | I0.2 接通经取反使其后逻辑断开 |
| 7-37 | 时序/数值 | 答案 005 |
| 7-38 | TON 时序图改错 | B 错:TON 输入断开应停止计时并复位,且 Q 是延时到才接通、不是输入一接通立即变 1 |
| 7-40 | 边沿/置位综合 | 答案 D |
| 7-41 | 置位保持 | 答案 B(第二个) |
| 7-42 | 综合判断 | 答案 C |
| 7-44 | 综合 | 答案第二个 |
7-38 关键辨析:TON 在 I0.0 接通后开始计时,当前值增加到 5 s(PT)时 Q 才接通;输入断开时 TON 停止计时并复位——把 Q 画成输入接通立即变 1、或输入断开仍继续计时的时序图都是错误的。
(二)第八章 用户程序结构:块的分类
S7-1200 在博途中把用户程序组织成若干”块”,主要包括:
- OB(Organization Block,组织块):操作系统与用户程序之间的接口,由操作系统自动调用,决定程序的执行结构(循环、启动、中断)。
- FC(Function,函数/功能):用户编写的子程序,无固定存储区。
- FB(Function Block,函数块/功能块):用户编写的、带背景数据块的子程序。
- DB(Data Block,数据块):存放程序数据的存储区,分全局数据块和 FB 的背景数据块。
- 此外还有交叉引用(Cross-reference)功能,可查看某一变量/地址在程序各处被使用的位置(类似论文里标注引用编号①②③的对应关系)。
(三)FC 函数(功能)
- FC 是用户编写的、用于完成某一特定任务的子程序,包含与调用块交换信息的输入/输出接口参数,执行后把结果返回给调用块(OB 或 FB)。
- FC 的接口区可声明:
- Input(输入):调用时传入;
- Output(输出):执行结果返回;
- InOut(输入输出):既传入又返回;
- Temp(临时变量):仅本次执行有效。
- FC 没有专用的背景数据块,执行完成后其临时数据被全部释放、不保存(类比手机里某些 APP 退出后内存立即释放)。
- FC 内使用的局部变量,程序编辑器自动在变量名前加 **
#**(如#目标1、#pick_one,名称可自行修改);在 OB1 中调用 FC 时,框外连接的全局实参自动加双引号。 - FC 主要用于运算、数据处理等不需要记忆的场合,可被 OB、FB 多次调用,使程序结构化、便于复用。
(四)FB 函数块与背景数据块
- FB 同样是完成特定任务的子程序,但它拥有自己的背景数据块(Instance DB),执行结束后数据仍被保存。
- FB 接口除 Input/Output/InOut/Temp 外,还可有 Static(静态变量),静态变量存储在背景 DB 中、具有保持能力,可减少在块外重复定义大量全局变量。
- 当 FB 中使用 TON/TOF 定时器、计数器等本身需要背景数据的指令时,必须为其分配背景数据;把定时器封装在 FB 中更规范。
- 调用 FB 时(如在 OB1 中调用一个”电动机控制 FB”),系统弹出调用选项对话框,输入背景数据块名称(可用默认名),确认后自动生成该 FB 的背景 DB。
(五)单实例与多重背景(重点/难点)
- 单实例(Single instance):每调用一次 FB,就单独生成一个背景数据块。若一个 FB(如电动机控制块)要控制很多台(上百台)电机,就会生成上百个背景 DB,数据块数量庞大、不便于管理。
- 多重背景(Multi-instance):把多个被调用 FB(或多个定时器/电机实例)的背景数据,集中存放到外层 FB 的同一个背景数据块中,由外层 FB 统一管理,显著减少背景 DB 数量。
- 建立多重背景的一般步骤(博途):
- 添加新块、选择函数块 FB,设置编号与编程语言,确认生成 FB;
- 打开 FB,在接口区声明需要的多重背景(如电动机类型、1 号/2 号电机实例,静态变量类型选为对应 FB);
- 在 OB(主程序)中调用该外层 FB,为不同实例选择对应选项(如 1 号电机选实例一、2 号电机选实例二);
- 所有实例的数据集中在外层 FB 的一个背景 DB 中,主程序中可统一显示/调用多台设备。
- 这样一个程序控制多台甚至上百台电机时,只需要管理少量(甚至一个)背景 DB,结构清晰、便于维护。
(六)编程语言:LAD 与 SCL
- LAD(梯形图):以触点、线圈、功能框图形化表达,直观、接近继电器电路。
- SCL(结构化控制语言):类似高级语言(Pascal 风格),用语句表达运算和逻辑,适合数学计算、循环、复杂条件;FC/FB 均可选用 SCL 编写,在博途中可对 SCL 程序进行仿真调试。
(七)OB 组织块
1. 程序循环组织块 OB1(Main)
- CPU 处于 RUN(工作)状态时,周期性循环执行 OB1,它是主程序;新建工程时默认生成 OB1。
- 一个项目至少有一个程序循环 OB;可以有多个,编号必须符合系统规定,多个程序循环 OB 按编号由小到大依次执行。
- 程序循环 OB 的优先级最低,可被更高优先级的中断组织块中断;优先级数值越大优先级越高。
- CPU 循环执行一次 OB 所需时间称为程序循环扫描周期(课堂举例全程约 150 ms,具体随程序长短变化)。
2. 启动组织块
- 在 CPU 从 STOP 转 RUN 的启动阶段执行一次,用于上电初始化。
3. 中断组织块(时间/延时/循环/硬件中断)
中断 OB 由特定事件触发、可打断 OB1 的循环执行,执行完后返回断点继续。
(1)时间中断(Time-of-day interrupt)
- 可设置在指定的日期时间到达后触发,并可按每分钟、每小时、每天、每月等周期执行;例如设定到 2026 年(或 2036 年)某月某日某时触发一次。
- 配套指令(在扩展指令→中断→时间中断中):
- SET_TOD(设置时间中断):设定触发日期时间;
- ACT(激活时间中断);
- CAN_TOD(取消时间中断);
- QRY_TOD(查询时间中断状态)。
- 建立方式:添加新块→组织块→选择 Time-of-day(时间中断)OB;在程序中用设置指令写入目标时间,触发时执行该 OB(例:每次触发让 MW2 加 1,再传送到 FB 块做累计,可一直累加到设定的若干年后)。
(2)延时中断(Delay interrupt)——高精度延时
- 普通 TON/TOF 定时器的工作与 PLC 循环扫描方式有关,定时精度受扫描周期影响、精度有限。
- 延时中断由系统/硬件级实现:在触发条件出现后,经过设定的精确延时再执行对应的中断 OB,定时精度高,适合需要高精度延时的场合。
- 建立方式:添加新块→组织块→选择延时中断(Delay)OB(如 OB20)。
- 工作过程示例:当输入 I0.0 由 1 变 0(下降沿)时启动延时中断,延时 5 s 后执行 OB20,把 Q0.x 置位(如走廊灯 5 s 后熄灭);若在延时到达前取消(如条件由 0 变回 1),则 OB20 不执行。
- 配套指令:SRT_DLY(启动延时中断)、CAN_DLY(取消)、QRY_DLY(查询状态)。
(3)循环中断(Cyclic interrupt)与硬件中断
- 循环中断 OB:按固定时间间隔周期性执行(如每隔固定毫秒执行一次),用于周期采样、PID 等。
- 硬件中断 OB:由高速 I/O 上的硬件事件(如高速计数、模块报警)立即触发。
四、典型编程例题
例题 1:走廊灯(玄关灯)延时熄灭、再按重新计时
控制要求:来人按一下按钮 I0.0,灯 Q0.0 点亮并保持;点亮 30 s 后自动熄灭;如果在这 30 s 内又有人按一次按钮,则重新从 0 开始计时(30 s 顺延)。
编程思路(梯形图):
- 按钮 I0.0 是常开点动信号,先用上升沿 P检测”按一下”,驱动中间继电器 M0.0 产生一个扫描周期脉冲;
- 用 M0.0 的常开触点去置位(S)Q0.0(或用 M0.0 接通 TON 并自锁),使灯点亮保持;
- 同时用 M0.0 启动(或复位重启)接通延时定时器 TON,PT=30 s;
- 用 TON 延时到后接通的常闭触点串在 Q0.0 的保持回路中:30 s 到,常闭点断开,Q0.0 失电熄灭;
- “再按重新计时”:每次 M0.0 脉冲都对 TON 进行一次复位/重新触发(用 M0.0 常闭点切断定时器输入使其当前值清零,再重新计时),从而实现 30 s 从头开始。
要点:
- 标准写法建议用中间继电器 M0.0 过渡(而不是直接用 Q0.0 触点),逻辑更清晰、规范;
- 定时器线圈、Q 线圈、定时器常闭延时触点的位置要分清:延时闭合的常开点到时间接通,用来断开灯回路时取其常闭触点;
- 上升沿 P 保证按一次只触发一次,避免按住按钮期间反复动作。
例题 2:三台电动机顺序启动、顺序停止
控制要求:按下启动按钮 I0.0 后:
- 第一台电机 Q0.0 立即启动;
- 10 s 后第二台电机 Q0.1 自动启动;
- 再经过 5 s(即启动后 15 s)第三台电机 Q0.2 自动启动,同时第一台电机 Q0.0 停止;
- 之后按工艺要求延时停其余电机(课堂以 T37/T38/T39 三个定时器逐级实现)。
编程思路(分三段写最清楚):
- 第一台电机段:I0.0 启动并自锁 Q0.0(或置位);同时启动定时器 T37,PT=10 s;
- 第二台电机段:T37 延时 10 s 到、其常开触点闭合,启动 Q0.1 并自锁,同时启动 T38,PT=5 s;
- 第三台电机段:T38 再延时 5 s 到、常开触点闭合,启动 Q0.2;同时用 T38(或 T39)触点断开 Q0.0,使第一台停止;后续需要停第二台时再用 T39 定时断开 Q0.1。
要点与课堂纠错:
- 推荐按”第一台/第二台/第三台”分成三个程序段分别写,每段配自己的定时器,逻辑清楚、不易漏;
- 定时器编号(如 T37、T38、T39)和 Q0.0/Q0.1/Q0.2、中间标志 M 要一一对应、在图上标注清楚;
- 注意每台电机”启动谁、停谁”:第三台启动的同时第一台停止,不要误把第二台也停掉;
- 必要时在中间加中间继电器(如 M 位)来统一控制前级,使梯形图更规范。
五、术语与指令速查表
| 术语/指令 | 含义 |
|---|---|
| OB 组织块 | 操作系统与用户程序接口,被系统调用 |
| OB1 / Main | 程序循环组织块、主程序,RUN 时周期循环执行 |
| 扫描周期 | CPU 循环执行一次 OB1 的时间(举例约 150 ms) |
| FC 函数 | 用户子程序,无背景 DB,执行完数据释放 |
| FB 函数块 | 带背景数据块的用户子程序,可保持数据 |
| DB 数据块 | 存放数据,分全局 DB 与背景 DB |
| 接口参数 | Input / Output / InOut / Temp;FB 另有 Static |
# 局部变量 |
FC/FB 内局部变量自动加 #;全局实参加双引号 |
| 单实例 | 每次调用 FB 生成一个独立背景 DB |
| 多重背景 | 多个实例数据集中到一个背景 DB,便于管理多台设备 |
| LAD / SCL | 梯形图 / 结构化文本两种编程语言 |
| TON | 接通延时:IN 接通延时 PT 后 Q 通,IN 断立即复位 |
| TOF | 断电延时:IN 断后延时 PT 才使 Q 断 |
| IN/PT/ET/Q/R | 定时器输入/预设时间/当前时间/输出/复位 |
| S / R | 置位保持 / 复位清零(有记忆) |
| P / N | 上升沿(0→1)/ 下降沿(1→0),接通一个扫描周期 |
| CTU / CTD / CTUD | 加 / 减 / 加减计数器 |
| PV / CV / Q / R / LD | 预设值 / 当前值 / 输出 / 复位 / 装载 |
| 时间中断 | 指定日期或按分/时/天/月触发;SET/ACT/CAN/QRY |
| 延时中断 | 触发后精确延时再执行中断 OB;SRT/CAN/QRY,精度高于普通定时器 |
| 循环中断 | 按固定周期间隔执行 |
| 硬件中断 | 高速 I/O 硬件事件触发 |
六、课堂任务 / 学习要求
- 能说清 OB、FC、FB、DB 四类块的作用与区别,重点掌握 FC 无背景 DB(执行完释放)与 FB 有背景 DB(可保持)的区别。
- 会在 FC/FB 接口区声明 Input/Output/InOut/Temp/Static 变量,理解局部变量
#和全局符号双引号的含义。 - 理解单实例与多重背景的区别,能在博途中按步骤建立多重背景 FB,说明它为什么便于控制多台电机。
- 掌握 OB1 的循环扫描机制、多个程序循环 OB 的执行顺序、优先级与扫描周期概念。
- 能区分时间中断、延时中断、循环中断、硬件中断的用途,知道延时中断精度高于受扫描周期影响的普通 TON/TOF。
- 熟练使用 TON/TOF、S/R、P/N、CTU/CTD/CTUD,并能读懂、判断时序图(尤其 TON 输入断开要停止计时并复位)。
- 能独立画出”走廊灯 30 s 延时熄灭、再按重新计时”和”三台电机顺序启动/停止”的梯形图。
七、待核对 / 以教材为准
- 各习题(7-30~7-44)的选项字母与答案为课堂口述还原,选项顺序可能因教材版本不同而变化,[以教材题图和标准答案为准]。
- 扫描周期”约 150 ms”为课堂举例,实际值取决于程序长度和 CPU 型号,[以实际监控值为准]。
- 时间中断、延时中断的具体指令名(SET_TOD/ACT/CAN_TOD/QRY_TOD、SRT_DLY/CAN_DLY/QRY_DLY)和中断 OB 编号(如 OB20)随博途版本/CPU 略有差异,[以所用软件指令目录为准]。
- 三台电机例题中定时器编号 T37/T38/T39、各段延时(10 s、5 s、再 10 s)以课堂题图为准,本文按课堂口径整理。
- 多重背景建立过程中的菜单名称(”添加新块→函数块/组织块”等)随 TIA Portal 版本略有不同,[以实际软件界面为准]。
八、复习自测(主动回忆,先自己答再看答案)
1. S7-1200 用户程序主要由哪几类块组成?
答:OB 组织块、FC 函数、FB 函数块、DB 数据块。
2. FC 和 FB 最根本的区别是什么?
答:FC 没有自己的背景数据块,执行完临时数据全部释放、不保存;FB 拥有背景数据块,含静态变量,执行后数据可保持。
3. FC/FB 的接口参数有哪些?FB 比 FC 多哪一类?
答:Input、Output、InOut、Temp;FB 还可有 Static(静态变量),保存在背景 DB 中。
4. FC 内的局部变量前面为什么有一个 #?OB 调用时框外实参为什么加双引号?
答:# 表示该变量是本块的局部变量,由编辑器自动添加;双引号表示全局符号(实参),用于区分局部与全局。
5. 什么是背景数据块?单实例和多重背景有什么区别?
答:背景 DB 是分配给 FB、专门保存其参数和静态数据的数据块。单实例是每调用一次 FB 生成一个独立背景 DB;多重背景是把多个实例的数据集中到外层 FB 的一个背景 DB 中统一管理。
6. 控制上百台电机时为什么推荐用多重背景?
答:单实例会生成上百个背景 DB,数量庞大、难管理;多重背景把它们集中在一个背景 DB 里,结构清晰、占用和维护成本低。
7. 简述建立多重背景的步骤。
答:新建外层 FB→在其接口区 Static 中声明各实例(选对应 FB 类型)→在 OB 中调用外层 FB 并为各实例选择对应项→数据集中存入外层 FB 的背景 DB。
8. OB1 是什么?它是怎样被执行的?
答:OB1(Main)是程序循环组织块、主程序,CPU 在 RUN 时周期性循环调用它,新建工程默认生成。
9. 多个程序循环 OB 按什么顺序执行?能被中断吗?
答:按 OB 编号由小到大依次执行;程序循环 OB 优先级最低,可被高优先级的中断 OB 打断。
10. 什么是扫描周期?普通定时器精度为什么受它影响?
答:CPU 循环执行一次 OB1 所需时间;普通 TON/TOF 在扫描中被刷新,定时分辨率受扫描周期限制,故高精度延时要用延时中断。
11. TON 和 TOF 有什么区别?
答:TON 是接通延时,输入接通后延时到才输出、输入断开立即复位;TOF 是断电延时,输入断开后延时一段时间输出才断开。
12. TON 的 IN、PT、ET、Q、R 各是什么?
答:IN 输入、PT 预设时间、ET 当前已计时时间(实时)、Q 输出、R 复位。
13. TON 输入断开时定时器应如何动作?
答:立即停止计时并复位,当前值清零、Q 断开;时序图若画成断开后继续计时或 Q 立即接通都是错的(7-38 考点)。
14. S 置位为什么有记忆功能?
答:置位后该位保持为 1,即使驱动输入断开也不变,直到 R 复位才清零。
15. P 上升沿和 N 下降沿分别检测什么?输出多长?
答:P 检测 0→1 跳变、N 检测 1→0 跳变;都只在跳变后接通一个扫描周期,用于”按一下触发一次”。
16. CTU、CTD、CTUD 分别是什么?LD 端什么作用?
答:加、减、加减计数器;LD 装载端按下后把当前值 CV 重新装回预设值 PV(CTD 7-30 考点)。
17. CTD 计数器按装载端后 CV 和 Q 如何变化?
答:CV 回到装载值 PV(题中为 3),此时 Q 不接通。
18. 时间中断能按哪些周期触发?配套哪些指令?
答:可指定日期时间,或按每分钟/每小时/每天/每月触发;配套 SET 设置、ACT 激活、CAN 取消、QRY 查询。
19. 延时中断与普通定时器相比有什么优势?怎样触发?
答:延时中断由系统/硬件级实现、精度高,不受扫描周期影响;触发条件(如输入由 1 变 0)出现后延时设定时间再执行中断 OB,可用 SRT 启动、CAN 取消、QRY 查询。
20. 循环中断和硬件中断分别用于什么场合?
答:循环中断按固定周期执行(周期采样、PID);硬件中断由高速 I/O 硬件事件即时触发。
21. 走廊灯例题为什么要用上升沿 P 和中间继电器 M0.0?
答:上升沿保证按一次只触发一次、不重复;中间继电器把按钮脉冲与灯保持/定时器复位逻辑分开,梯形图更规范,且便于每次按下都重新触发定时器实现”再按重新计时”。
22. 走廊灯如何实现 30 s 到自动熄灭?
答:TON 设 PT=30 s,用其延时闭合常开点对应的常闭触点串入灯 Q0.0 的保持回路,30 s 到常闭点断开、灯灭。
23. 三台电机顺序控制为什么建议分三个程序段?
答:按第一台、第二台、第三台分段,各配 T37/T38/T39 定时器,启动/停止对象清晰、不易漏停或误停。
24. 写出三台电机的时序关系。
答:按 I0.0→Q0.0 立即启动并启动 T37(10 s);T37 到→Q0.1 启动、启动 T38(5 s);T38 到→Q0.2 启动同时 Q0.0 停止;需要时再由 T39 停 Q0.1。
25. LAD 和 SCL 各有什么特点?
答:LAD 梯形图图形化、接近继电器电路、直观;SCL 是类高级语言的结构化文本,适合数学运算和复杂逻辑,FC/FB 都可用它编写并仿真。
收尾记忆:第八章抓住”四类块、两种函数、一套中断“——OB 管执行结构(OB1 循环扫描、中断 OB 处理事件)、FC 是用完即释放的子程序(局部变量
#)、FB 是带背景 DB 能记忆的子程序、多重背景用一个 DB 管多个实例;定时器记”TON 接通延时、TOF 断电延时、输入断 TON 立即复位”,边沿记”P 上 N 下只通一个扫描周期”,计数器记”CTU 加 CTD 减 CTUD 加减、LD 装载回 PV”;高精度延时别用普通定时器,要用延时中断。