简介:本资源包含60个针对西门子S7-200系列PLC的详细编程示例,涵盖顺序控制、定时器、计数器、模拟量处理、通信、中断处理、PID控制及运动控制等典型工业应用场景。每个示例均配有清晰解释,结合SIMATIC Step 7 Micro/WIN编程软件,采用梯形图、语句表等多种语言实现,适合初学者掌握PLC基础编程,也助力工程师提升实际项目开发能力。该实战包是学习小型PLC在自动化控制中应用的宝贵资料。
1. S7-200 PLC基础编程概念与I/O映射
1.1 PLC工作原理与扫描周期机制
S7-200 PLC采用循环扫描的工作方式,每个扫描周期依次执行输入采样、程序执行、输出刷新三个阶段。在输入采样阶段,PLC读取所有数字量输入端子状态并存入输入映像寄存器(如I0.0);程序执行阶段根据梯形图逻辑运算结果更新输出映像寄存器(如Q0.0);最后在输出刷新阶段将映像值写入实际输出模块。
扫描周期流程:
1. 读取输入 → 存入 I 寄存器(如 I0.0)
2. 执行用户程序 → 运算逻辑关系
3. 更新输出 → 写入 Q 寄存器(如 Q0.0)
4. 循环重复,典型周期为几毫秒至几十毫秒
该机制确保了控制系统的实时性与稳定性,是理解后续编程逻辑的基础。
2. 梯形图(LAD)与语句表(STL)编程实践
在工业自动化控制系统中,S7-200系列PLC作为西门子推出的小型可编程逻辑控制器,广泛应用于中小型设备控制。其编程方式灵活多样,其中 梯形图(Ladder Diagram, LAD) 和 语句表(Statement List, STL) 是最常用的两种编程语言。本章将深入探讨这两种编程语言的结构特点、指令机制以及实际工程中的协同应用策略,帮助开发者构建高效、清晰且易于维护的控制程序。
2.1 梯形图编程的核心逻辑结构
梯形图作为一种图形化编程语言,模拟了传统继电器控制电路的表示方法,具有直观易懂的优点,特别适合电气工程师快速上手。它以“能流”(Power Flow)为核心概念,通过触点、线圈和功能块的组合实现逻辑判断与输出控制。理解其底层结构是掌握S7-200 PLC编程的关键起点。
2.1.1 触点、线圈与逻辑运算的基本构成
梯形图的基本元素包括常开触点(Normally Open Contact)、常闭触点(Normally Closed Contact)、输出线圈(Coil)、中间继电器(Internal Bit Memory)等。这些元件按照从左到右、从上到下的顺序排列,形成一条条“支路”,每条支路代表一个逻辑条件链。
- 常开触点 :当对应地址状态为1时导通,允许能流通过。
- 常闭触点 :当对应地址状态为0时导通,反向逻辑控制。
- 输出线圈 :用于驱动输出点或内部标志位,仅在前级所有条件满足时得电。
下面是一个典型的启停控制梯形图逻辑:
|----[ I0.0 ]----[ / Q0.0 ]----( Q0.0 )----|
该逻辑实现的是“自锁保持”电路:
- 当启动按钮 I0.0 被按下(值为1),同时输出 Q0.0 尚未激活(其常闭触点闭合),则 Q0.0 线圈得电;
- 得电后 Q0.0 常开触点闭合,形成自保持路径,即使松开 I0.0 ,输出仍维持;
- 若再次按下停止信号或其他条件使 Q0.0 失电,则回路断开。
这种基本结构构成了大多数电机启停、报警保持等控制的基础。
为了更系统地展示元件功能,下表列出了常用LAD符号及其含义:
| 元件类型 | 图形符号 | 功能说明 |
|---|---|---|
| 常开触点 | [ I0.0 ] | 地址为1时导通 |
| 常闭触点 | [ / I0.1 ] | 地址为0时导通 |
| 输出线圈 | ( Q0.0 ) | 条件满足时置1 |
| 中间继电器 | ( M0.0 ) | 内部辅助标志位 |
| 边沿检测上升沿 | [ P I0.2 ] | 仅在一个扫描周期内响应上升沿 |
| 边沿检测下降沿 | [ N I0.3 ] | 仅在一个扫描周期内响应下降沿 |
此外,梯形图支持布尔代数中的“与”、“或”、“非”逻辑运算,分别通过串联、并联和使用常闭触点来实现。
例如,“与”逻辑表现为多个触点串联:
|----[ I0.0 ]----[ I0.1 ]----( Q0.0 )----|
只有 I0.0 和 I0.1 同时为1时, Q0.0 才会输出。
而“或”逻辑通过并联支路体现:
|----[ I0.0 ]-----------------( Q0.1 )----|
|----[ I0.1 ]---------------------------|
只要任一输入为1,输出即可激活。
这些基础构件共同构成了复杂控制逻辑的基石,后续章节将进一步展开高级设计技巧。
2.1.2 常开/常闭触点的应用场景对比分析
虽然常开与常闭触点在语法上看似简单,但在实际工程中选择不当可能导致安全风险或逻辑混乱。必须结合物理设备特性和控制需求进行合理配置。
物理接线与逻辑设计的匹配
在PLC控制系统中,外部传感器通常有两种接法: 源型(Source) 和 漏型(Sink) ,这直接影响输入点的状态定义。例如,一个急停按钮如果是常闭型机械开关,在正常运行时触点闭合(输入点为1),一旦触发则断开(输入点为0)。此时若直接使用常开触点编程:
|----[ I0.5 ]----( Q0.0 )----|
意味着按钮未按下时电机运行,按下后停止——看似正确。但问题在于:如果线路断线或端子松动,PLC也会认为 I0.5=0 ,从而误判为“已停止”。然而这种情况并非人为操作,而是故障,存在安全隐患。
因此,推荐做法是采用“故障安全设计原则”: 硬件使用常闭触点,软件使用常开触点判断 。
即:
- 硬件连接:急停按钮接成常闭形式;
- 软件逻辑:用常开触点读取该点状态;
- 当线路完好且按钮未按: I0.5 = 1 → 允许运行;
- 当按钮被按下或线路断开: I0.5 = 0 → 切断能流,强制停机。
这种方式实现了真正的“失效即安全”(Fail-Safe)机制。
控制逻辑中的互锁保护
另一个典型应用场景是在电机正反转控制中防止短路。两个接触器不能同时吸合,否则会造成电源相间短路。为此需设置电气互锁和程序互锁。
程序互锁可通过常闭触点实现:
正转支路:
|----[ SB_Fwd ]----[ / Q0.1 ]----( Q0.0 )----|
反转支路:
|----[ SB_Rev ]----[ / Q0.0 ]----( Q0.1 )----|
这里:
- 正转启动 SB_Fwd 按下时,若反转接触器 Q0.1 未动作(其常闭触点闭合),则允许正转;
- 反之亦然,形成双向互锁。
值得注意的是,尽管现代PLC扫描速度快,但仍建议在此类高风险场合增加 硬件互锁 (如在主电路中加装接触器辅助常闭触点),以防程序异常或CPU死机导致失控。
应用建议总结
| 场景 | 推荐触点类型 | 理由 |
|---|---|---|
| 启动按钮 | 常开输入 + 常开触点 | 符合直觉,按下导通 |
| 停止/急停按钮 | 常闭输入 + 常开触点 | 故障导向安全 |
| 连锁保护 | 常闭触点参与逻辑 | 防止冲突动作 |
| 限位开关 | 根据工艺定 | 如到达极限位置应切断动力,可用常闭逻辑提前干预 |
综上所述,触点类型的选用不仅是语法问题,更是系统可靠性设计的重要环节。
2.1.3 多支路并联与串联的梯形图设计技巧
在复杂控制系统中,单一条件往往不足以决定输出行为,需要多条件组合判断。此时需熟练掌握串并联结构的设计方法。
串联结构:实现“与”逻辑
串联用于要求多个条件 同时满足 才执行动作。典型案例如“自动门开启”:
|----[ 门禁卡有效 ]----[ 无紧急锁定 ]----[ 光电未遮挡 ]----( 开门电机 )----|
三个条件缺一不可,体现了严格的访问控制逻辑。
并联结构:实现“或”逻辑
并联适用于多个独立触发源均可激活同一输出的情况。例如火灾报警系统:
|----[ 烟感报警 ]----------------------------( 声光报警器 )----|
|----[ 温感报警 ]----------------------------|
|----[ 手动报警按钮 ]------------------------|
任意一种探测到危险即启动警报,提高了响应灵敏度。
混合结构:复杂逻辑建模
更复杂的系统可能包含“与或非”的混合逻辑。考虑以下例子:某输送带仅在以下任一条件下运行:
1. 自动模式下料仓有料且下游空闲;
2. 手动模式下操作员按下启动按钮。
对应的梯形图如下:
|----[ 自动模式 ]----[ 料位高 ]----[ 下游空 ]----+----( 输送带运行 )----|
| |
|----[ 手动模式 ]----[ 启动手柄 ]--------------+
此处使用了一个典型的“先与后或”结构:上方支路是三个条件串联,下方是两个条件串联,两支路最终并联驱动同一个输出。
为了提高可读性,可以引入中间变量:
|----[ 自动模式 ]----[ 料位高 ]----[ 下游空 ]----( M0.0 )----|
|----[ 手动模式 ]----[ 启动手柄 ]--------------( M0.1 )----|
|----[ M0.0 ]----------------------------------( Q0.2 )----|
|----[ M0.1 ]-------------------------------------------|
这样不仅降低了单条支路过长的问题,也便于后期调试和监控中间状态。
此外,对于多输出联动系统,还可使用 功能框图法 预先绘制逻辑关系,再转化为梯形图。
设计优化建议
- 避免交叉引用过多 :尽量减少跨网络的频繁跳转;
- 使用注释标注关键信号 :STEP 7-Micro/WIN支持添加符号表和注释;
- 分层组织逻辑 :将检测、判断、执行分段处理;
- 限制支路数量 :单个输出不宜超过5~6条并联支路,否则应考虑重构。
以下流程图展示了典型控制逻辑的分解过程:
graph TD
A[输入采集] --> B{是否处于自动模式?}
B -->|是| C[检查传感器状态]
B -->|否| D[等待手动指令]
C --> E{料位高且下游空?}
E -->|是| F[启动输送带]
D --> G{按下启动按钮?}
G -->|是| F
F --> H[输出执行]
该流程图清晰表达了决策路径,有助于指导梯形图编写。
2.2 语句表(STL)指令集详解
语句表是一种文本型编程语言,类似于汇编语言,使用助记符表达操作。相比梯形图,STL更加紧凑,适合经验丰富的程序员编写高性能代码,尤其在处理复杂逻辑或数学运算时更具优势。
2.2.1 装载、与、或、输出等基本指令语法解析
STL的基本指令集围绕堆栈(Stack)操作展开,核心是“逻辑堆栈”(Logic Stack),用于暂存中间布尔结果。
主要指令包括:
| 指令 | 功能 | 示例 |
|---|---|---|
LD | 装载(Load) | LD I0.0 —— 将I0.0状态装入栈顶 |
A | 与(And) | A I0.1 —— 栈顶与I0.1做AND |
O | 或(Or) | O I0.2 —— 栈顶与I0.2做OR |
= | 输出(Assign) | = Q0.0 —— 将栈顶结果写入Q0.0 |
示例程序:实现“启保停”控制
LD I0.0 // 加载启动按钮状态
O Q0.0 // 与输出Q0.0并联(自锁)
AN I0.1 // 与非停止按钮(常闭逻辑)
= Q0.0 // 输出结果
逐行分析:
1. LD I0.0 :将启动按钮I0.0的当前状态放入栈顶;
2. O Q0.0 :将栈顶与Q0.0状态做“或”运算,实现自保持;
3. AN I0.1 :对停止按钮I0.1取反后再与前面结果“与”,即实现“停止优先”;
4. = Q0.0 :将最终逻辑结果赋给输出点。
此段代码等效于如下梯形图:
|----[ I0.0 ]----+----( Q0.0 )----|
|----[ Q0.0 ]----|
|----[ / I0.1 ]------------------|
可以看出,STL指令简洁高效,占用空间小,适合嵌入式环境。
参数说明与执行逻辑
- 所有操作基于 单比特布尔量 ;
- 每条指令影响逻辑堆栈的状态;
-
AN表示“A Not”,即先取反再执行“与”; - 输出指令不改变栈内容,仅复制栈顶值到目标地址。
在编写STL时应注意指令顺序,错误的排列可能导致逻辑偏差。
2.2.2 栈操作机制在复杂逻辑中的应用
STL依赖逻辑堆栈处理嵌套逻辑。当出现括号级联时,需使用 LD 、 OLD 、 ALD 等指令管理堆栈层次。
-
ALD:And Load,对两个栈元素执行“与”合并; -
OLD:Or Load,对两个栈元素执行“或”合并;
举例:实现 (A AND B) OR (C AND D)
LD I0.0 // A
A I0.1 // B → 栈顶为 A·B
LD I0.2 // C
A I0.3 // D → 栈顶为 C·D
OLD // (A·B) OR (C·D)
= Q0.0
执行过程如下表所示(假设初始栈为空):
| 指令 | 栈顶变化 | 说明 |
|---|---|---|
LD I0.0 | I0.0 | 装载A |
A I0.1 | I0.0 ∧ I0.1 | 与B运算 |
LD I0.2 | I0.2 | 新支路开始,压入C |
A I0.3 | I0.2 ∧ I0.3 | 与D运算 |
OLD | (I0.0∧I0.1) ∨ (I0.2∧I0.3) | 两支路“或”合并 |
该机制使得STL能够精确表达复杂的布尔表达式,而无需图形布局。
2.2.3 STL与LAD程序之间的等效转换实例
在STEP 7-Micro/WIN中,用户可在LAD与STL之间自由切换查看,系统自动完成语法映射。
例如,以下LAD:
|----[ I0.0 ]----[ I0.1 ]----+----( Q0.0 )----|
|----[ I0.2 ]----[ I0.3 ]----+
对应STL代码为:
LD I0.0
A I0.1
LD I0.2
A I0.3
OLD
= Q0.0
反之,也可将上述STL粘贴进编辑器并切换为LAD视图,系统会自动生成相应图形。
注意:某些高级功能块(如定时器、计数器)在STL中需使用专用指令,如:
LD I0.4
TON T37, +50 // 接通延时定时器,设定值5秒(单位100ms)
此语句表示当I0.4为1时启动T37,5秒后其常开触点闭合。
通过熟练掌握两种语言的等价关系,开发者可根据项目需求灵活选择表达形式。
2.3 LAD与STL混合编程策略
2.3.1 不同编程语言的选择依据与优劣权衡
| 维度 | 梯形图(LAD) | 语句表(STL) |
|---|---|---|
| 可读性 | 极高,适合初学者 | 较低,需训练 |
| 编辑效率 | 图形拖拽较慢 | 文本输入快 |
| 逻辑复杂度支持 | 中等 | 高(支持嵌套) |
| 调试便利性 | 支持状态显示 | 需配合变量表 |
| 移植性 | 良好 | 依赖平台 |
| 占用资源 | 略大 | 更节省内存 |
推荐使用场景 :
- LAD:常规逻辑控制、设备启停、连锁保护;
- STL:算法密集型任务、状态机、通信协议解析。
2.3.2 在STEP 7-Micro/WIN中实现模块化语言切换
在Micro/WIN中,可通过“Insert > New Routine”创建多个子程序,并分别为每个子程序选择语言类型。
操作步骤:
1. 打开项目,进入“Program Block”;
2. 右键点击空白区域 → Insert New Routine;
3. 选择“Subroutine”类型;
4. 在属性中设置语言为LAD或STL;
5. 编写各自逻辑,通过主程序调用。
例如:
// 主程序(STL)
CALL SUB0 // 调用LAD编写的电机控制子程序
CALL SUB1 // 调用STL编写的PID计算子程序
这种模块化设计提升了系统的可维护性与复用率。
2.3.3 实际工程中LAD与STL协同开发案例剖析
某包装机械控制系统中:
- 主控逻辑(急停、门锁、启动流程)采用LAD,便于现场电工维护;
- 定长裁切算法涉及高速计数与比较运算,使用STL编写:
LD HC0 // 读取高速计数器当前值
DINT // 转换为双整数
L +1000 // 设定长度阈值
<=D // 小于等于比较
= M0.5 // 触发裁切标志
两者通过共享标志位 M0.5 实现协同,充分发挥各自优势。
此类混合架构已成为现代小型PLC项目的主流实践方向。
3. 定时器与计数器指令应用详解
在工业自动化控制系统中,时间控制与事件计数是实现复杂逻辑的核心手段。S7-200 PLC 提供了丰富的定时器(Timer)和计数器(Counter)指令集,能够满足从简单延时到高精度循环控制、批量处理等多种应用场景的需求。本章节将深入剖析 S7-200 中定时器与计数器的工作机制、参数配置方法以及实际工程中的高级应用技巧,帮助开发者构建稳定、可靠且具备扩展性的控制逻辑。
3.1 定时器类型及其工作模式
S7-200 PLC 支持三种主要类型的定时器:接通延时定时器(TON)、断开延时定时器(TOF)和保持型接通延时定时器(TONR)。每种定时器根据其触发方式和复位行为具有不同的适用场景。理解这些差异对于设计精确的时间控制逻辑至关重要。
3.1.1 接通延时定时器(TON)、断开延时(TOF)与保持型接通(TONR)原理
接通延时定时器(TON) 是最常用的定时器类型,用于在输入条件满足后延迟一段时间再执行输出动作。例如,在电机启动前需要等待润滑油压力建立,就可以使用 TON 实现一个 5 秒的延时保护。
// STL 指令示例:TON 使用
LD I0.0 // 启动信号
TON T37, +50 // T37 定时 5s(分辨率为 100ms)
LD T37 // 当定时完成时,T37 触点闭合
= Q0.0 // 输出驱动电机
逻辑分析与参数说明:
LD I0.0:加载启动按钮状态。TON T37, +50:当 I0.0 为真时,T37 开始计时;设定值为 50 × 100ms = 5s。T37作为触点使用时表示“定时已完成”。- 若 I0.0 断开,则 T37 立即复位,当前时间清零。
此逻辑适用于一次性延时任务,如设备预热、安全延时等。
断开延时定时器(TOF) 则相反,它在输入由“1”变为“0”时开始计时,并在设定时间结束后关闭输出。常用于风扇停机后的冷却延时。
// STL 示例:TOF 应用
LD I0.1 // 停止信号上升沿触发 TOF
TOF T38, +30 // 延时 3s 关闭
LD T38 // 在定时期间 T38 为 ON
= Q0.1 // 维持风扇运行直到延时结束
逐行解读:
LD I0.1:检测停止命令。TOF T38, +30:当 I0.1 变为 OFF 时,T38 开始倒计时 3s。- 在这 3s 内,Q0.1 仍保持 ON,确保风扇持续运转散热。
- 超时后 Q0.1 自动断开。
参数
+30表示 30 × 100ms = 3s,分辨率默认为 100ms。
保持型接通延时定时器(TONR) 具有记忆功能,即使使能信号中断也不会自动复位,必须通过显式复位指令清除。适合累计运行时间统计或故障报警锁定。
// STL 示例:TONR + 复位
LD I0.2 // 故障发生信号
TONR T60, +100 // 累计故障持续时间(10s)
LD I1.0 // 手动复位按钮
R T60, 1 // 复位 T60
代码解释:
TONR T60, +100:只要 I0.2 为 ON,T60 就继续累加时间。- 即使 I0.2 短暂消失,已累积的时间不会丢失。
- 必须通过
R T60, 1显式复位。- 该特性可用于记录设备累计故障时间,辅助维护决策。
| 定时器类型 | 触发条件 | 是否可断续计时 | 是否需手动复位 | 典型用途 |
|---|---|---|---|---|
| TON | 输入 ON | 否 | 否 | 启动延时、预热控制 |
| TOF | 输入 OFF | 否 | 否 | 停机冷却、灯光缓灭 |
| TONR | 输入 ON | 是(保持) | 是 | 故障累计、运行计时 |
3.1.2 定时器分辨率设置与精度控制要点
S7-200 的定时器支持三种分辨率:1ms、10ms 和 100ms,不同编号的定时器对应不同精度等级:
| 分辨率 | 可用定时器范围 | 更新机制 |
|---|---|---|
| 1ms | T32, T96 | 每个扫描周期立即更新 |
| 10ms | T33-T36, T97-T100 | 在扫描周期开始时统一刷新 |
| 100ms | T37-T63, T101-T255 | 只有在执行定时器指令时才更新 |
这一点对系统响应速度影响显著。例如,若使用 T37(100ms 分辨率)进行 200ms 延时,实际延时可能在 100~200ms 之间波动,造成控制不精准。
// LAD 图形化表示:高精度定时需求应选用 T32(1ms)
Network 1:
|--[ I0.3 ]----------------------------( TON T32, +150 )--|
// 150 × 1ms = 150ms
Network 2:
|--[ T32 ]----------------------------------( Q0.2 )--------|
执行逻辑说明:
- 使用 T32 实现 150ms 延时,由于其 1ms 分辨率,误差小于 ±1ms。
- 相比之下,T37 最小单位为 100ms,无法实现精细控制。
- 因此,对于高速响应场合(如急停延时确认),推荐优先选择 T32/T96。
此外,还需注意定时器的 最大设定值限制 :所有定时器均采用 16 位有符号整数,最大 SV = 32767。因此:
- 1ms 定时器最长可达 32.767 秒
- 100ms 定时器最长为 3276.7 秒(约 54.6 分钟)
超过此值需采用级联或多级定时策略。
3.1.3 定时器级联实现长时间延时的方法
当所需延时远超单个定时器能力时,可通过多个定时器 级联 或结合计数器实现长延时控制。
方法一:多级 TON 级联
// 实现 60 分钟延时(3600s)
LD T37 // 第一级 100ms 定时器完成
TON T38, +36000 // 第二级延时 3600s(36000×100ms)
LD T38
= Q0.3 // 最终输出
但此方法受限于定时器数量和内存资源。
方法二:定时器 + 计数器组合(推荐)
更高效的方式是利用短周期定时器配合计数器实现分钟/小时级延时。
// 主程序中创建 1s 脉冲
LD SM0.5 // 1Hz 秒脉冲
= M0.0 // 存储秒脉冲标志
// 使用 CTU 实现 1 小时延时(3600 秒)
LD M0.0
CTU C1, +3600 // 每秒计一次,总计满 3600 次
LD C1
= Q0.4 // 一小时后启动
逻辑分析:
SM0.5提供 1Hz 方波,每个周期 1s。CTU C1, +3600:每收到一个上升沿(即每秒)加 1。- 达到 3600 次后,C1 动作,输出 Q0.4。
- 此方法灵活、节省定时器资源,易于扩展。
flowchart TD
A[启动信号] --> B{是否激活?}
B -- 是 --> C[TON 产生 1s 脉冲]
C --> D[CTU 计数器累加]
D --> E{计数值 >= 3600?}
E -- 是 --> F[输出动作]
E -- 否 --> D
B -- 否 --> G[复位计数器]
G --> H[C1 := 0]
上述流程图展示了基于“定时器+计数器”的长延时架构,适用于灌溉系统、定时排污、自动巡检等场景。
3.2 计数器的功能分类与使用规范
计数器是实现事件驱动控制的关键元件,广泛应用于产品计数、位置定位、批量控制等领域。S7-200 提供三种标准计数器:加计数器(CTU)、减计数器(CTD)和加减计数器(CTUD),各有特定用途。
3.2.1 加计数器(CTU)、减计数器(CTD)与加减计数器(CTUD)工作机制
加计数器(CTU) 在每个上升沿到来时递增,达到预设值后置位输出。
// CTU 示例:统计生产线产品数量
LD I0.4 // 传感器检测到产品通过
CTU C20, +100 // 每次触发加 1,目标 100 件
LD C20 // 当计满 100 时动作
= Q0.5 // 启动打包动作
参数说明:
I0.4为光电传感器输入,每检测一个产品产生一个脉冲。C20为加计数器编号(C0-C255 可用)。+100为预设值 PV,当前值 CV 达到 PV 后 C20 触点闭合。- 需要外部复位指令
R C20, 1清零。
减计数器(CTD) 从预设值开始向下递减,常用于物料发放控制。
// CTD 示例:发放 10 张票后关闭闸机
LD SM0.1 // 初始化装入初始值
MOVW +10, AC0 // 将 10 写入累加器
CRETIR // 编程错误忽略(仅示意)
LD I0.5 // 出票按钮按下
CTD C21, +10 // 每次出票减 1
LD C21 // 计数归零时动作
= Q0.6 // 锁定出票机构
执行逻辑分析:
- 初始状态下,C21 的当前值被设为 10。
- 每次 I0.5 按下(上升沿),CV 减 1。
- 当 CV = 0 时,C21 输出为 ON,Q0.6 断开电源,防止继续出票。
- 需重新装载初始值才能再次启用。
加减计数器(CTUD) 支持双向计数,典型用于步进电机位置追踪或仓库库存管理。
// CTUD 示例:双传感器方向判别计数
LD I0.6 // 正向移动传感器
EU // 上升沿检测
CTUD C22, +50 // 加计数端口
LD I0.7 // 反向移动传感器
ED // 下降沿检测
CTUD C22, +50 // 减计数端口
LD C22 // 当位置达到 50 或 -50 报警
= Q0.7 // 触发限位保护
详细解析:
EU指令检测上升沿,避免重复计数。ED检测下降沿,适用于反向信号同步。CTUD的 PV 设为 50,意味着正向最多走 50 步,负向也可退 50 步。- 若 CV ≥ 50 或 ≤ -50,则 Q0.7 报警。
| 计数器类型 | 指令 | 触发方式 | 复位方式 | 应用场景 |
|---|---|---|---|---|
| CTU | CTU | CU 端上升沿 | R 指令 | 产量统计、批次控制 |
| CTD | CTD | CD 端上升沿 | R 指令 | 物料消耗、倒计数 |
| CTUD | CTUD | CU/CD 上升沿 | R 指令 | 双向运动、库存跟踪 |
3.2.2 计数脉冲输入稳定性处理与抗干扰设计
现场环境中,机械振动、电磁干扰可能导致传感器误发脉冲,造成计数偏差。为此必须采取软硬件双重措施保障可靠性。
硬件层面:
- 使用屏蔽电缆连接传感器
- 加装 RC 滤波电路或光耦隔离模块
- 选择具有去抖功能的接近开关
软件层面:
引入 边沿检测 与 软件滤波延时 机制。
// 使用中间标志位实现防抖
LD I0.4
AN M0.1 // 上次状态未稳定
= M0.2 // 当前输入变化
TON T37, +20 // 延时 200ms 确认有效
LD T37
= M0.1 // 标记稳定状态
LD M0.2
EU // 检测真实变化
= M0.3 // 生成单次脉冲
逻辑分解:
- M0.1 记录上次稳定状态。
- M0.2 表示当前输入发生变化。
- T37 提供 200ms 延时确认,排除瞬时干扰。
- M0.3 输出经确认的有效脉冲,供给计数器使用。
stateDiagram-v2
[*] --> Idle
Idle --> DetectChange: I0.4 ≠ M0.1
DetectChange --> DebounceWait: 启动 T37
DebounceWait --> StableConfirm: T37 定时完成
StableConfirm --> Idle: 更新 M0.1, 发送 M0.3 脉冲
StableConfirm --> Idle: 复位中间标志
该状态机模型有效防止因抖动导致的多次计数,提升系统鲁棒性。
3.2.3 利用计数器实现产品批量控制的实际案例
某包装线上要求每生产 100 件产品后自动启动封箱动作,并暂停进料 10 秒进行整理。
// 批量控制系统主逻辑
// Network 1: 计数部分
LD I1.0 // 产品检测传感器
EU // 上升沿防抖
CTU C30, +100 // 累计 100 件
// Network 2: 批次完成判断
LD C30
= M10.0 // 批次完成标志
// Network 3: 封箱动作与暂停
LD M10.0
TON T40, +100 // 延时 10s(100×100ms)
= Q1.0 // 启动封箱机
LD T40
= Q1.1 // 暂停进料输送带
// Network 4: 复位逻辑
LD T40 // 延时结束后
R C30, 1 // 清除计数器
R M10.0, 1 // 清除标志
系统运行流程:
- 每有一个产品通过,C30 加 1。
- 达到 100 后,M10.0 置位,触发 T40 开始 10s 延时。
- 在此期间,Q1.0 启动封箱,Q1.1 停止送料。
- 10s 后,复位计数器和标志位,进入下一循环。
此方案实现了全自动批量包装控制,无需人工干预,显著提高生产效率。
3.3 定时器与计数器联合应用进阶
单独使用定时器或计数器只能解决单一维度的问题,而将两者结合则可实现时间-事件复合控制,极大拓展控制系统的表达能力。
3.3.1 构建周期性循环控制系统(如自动清洗流程)
某清洗设备要求每间隔 2 小时自动运行一次,每次清洗持续 15 分钟。
// 使用 SM0.5 + CTU + TON 构建 2h 周期
// Network 1: 创建 1min 脉冲
LD SM0.5
TON T37, +600 // 60s 延时(600×100ms)
LD T37
= M0.0 // 每分钟产生一个脉冲
// Network 2: 计数 120 分钟(2h)
LD M0.0
CTU C40, +120 // 每分钟计一次
LD C40
= M0.1 // 2h 到达标志
// Network 3: 执行清洗动作
LD M0.1
TON T41, +900 // 清洗持续 15min(900×100ms)
= Q2.0 // 启动水泵
LD T41
= Q2.1 // 启动摇摆电机
// Network 4: 复位逻辑
LD T41 // 清洗结束
R C40, 1 // 重置计数器
R M0.1, 1 // 清除标志
参数说明:
- T37 提供每分钟一个脉冲。
- C40 累计 120 次 → 2 小时。
- T41 控制清洗时间 900×100ms = 90s?不对!修正:应为
+9000(9000×100ms=900s=15min)
✅ 修正版本:
TON T41, +9000 // 15 分钟 = 900s = 9000 × 100ms
此处体现编程中常见错误——单位换算疏忽。建议使用符号常量或注释明确标注时间单位。
3.3.2 故障报警延时确认与复位机制设计
为避免误报,要求故障信号持续存在超过 3 秒才触发报警,且修复后需手动确认。
// 故障延时确认逻辑
LD I3.0 // 故障输入
TON T50, +30 // 延时 3s(30×100ms)
LD T50
= M20.0 // 真实故障标志
= Q3.0 // 声光报警
// 手动复位
LD I3.1 // 复位按钮
R T50, 1 // 清除定时器
R M20.0, 1 // 清除报警标志
优势:
- 避免短暂干扰引发误报警。
- 报警一旦触发,必须人工干预才能消除。
- 增强系统安全性与操作可控性。
3.3.3 基于时间-事件双重触发的复合控制逻辑构建
某设备要求满足以下任一条件即停机:
1. 连续运行超过 8 小时;
2. 出现严重故障(I4.0);
3. 手动急停(I4.1);
4. 产品累计达到 5000 件。
// 时间监控
LD SM0.5
TON T60, +600 // 1min 脉冲
LD T60
CTU C50, +480 // 8h = 480min
// 事件监控
LD I4.0 // 严重故障
O I4.1 // 急停按钮
O C50 // 时间到
O C60 // 计数到(另设 CTU C60, +5000)
= Q4.0 // 停机输出
系统特点:
- 多条件“或”逻辑确保及时响应。
- 时间与事件并行监控,互不影响。
- 可扩展添加更多停机条件,便于维护升级。
综上所述,合理运用定时器与计数器不仅能实现基础延时与计数,更能构建复杂的自动化控制逻辑,是 S7-200 编程不可或缺的核心技能。
4. 数字量与模拟量信号处理技术
在工业自动化系统中,PLC作为核心控制器,必须能够高效、准确地采集和处理来自现场的各种物理信号。这些信号主要分为两类: 数字量信号 (Digital Signal)与 模拟量信号 (Analog Signal)。前者通常表现为开关状态的“0”或“1”,如按钮按下/释放、限位开关动作等;后者则是连续变化的电压或电流值,常用于表示温度、压力、流量、液位等过程变量。S7-200系列PLC通过内置I/O模块及扩展模块实现对这两类信号的全面支持。掌握其处理机制不仅关系到系统的稳定性与响应速度,更直接影响控制精度与安全性。
本章节将深入剖析S7-200 PLC在实际工程应用中如何处理数字量输入输出信号,并详细讲解模拟量信号的采集、标定、转换以及输出控制方法。重点内容包括数字量信号去抖动技术、继电器驱动设计、模拟量模块配置、工程值换算公式推导、传感器接入校准流程、变频器频率给定编程策略等关键技术环节。通过对典型电路结构与程序逻辑的联合分析,帮助读者建立完整的信号处理知识体系,为后续中断控制与PID闭环调节打下坚实基础。
4.1 数字量输入输出处理方法
数字量信号是PLC控制系统中最基础也是最广泛使用的信号类型。它以二进制形式存在,仅包含两个状态:“高电平”(通常代表逻辑1)和“低电平”(逻辑0)。在S7-200系统中,数字量I/O可通过CPU自带端口或EM221/EM222等扩展模块进行配置,支持直流24V或交流230V等多种电气标准。然而,在实际应用中,若不加以合理处理,外部干扰、机械触点抖动、负载反冲等问题可能导致误触发或执行机构损坏。因此,必须从硬件选型、电路设计到软件编程三个层面协同优化,才能确保系统长期稳定运行。
4.1.1 开关量采集的去抖动与滤波技术
机械式开关(如按钮、行程开关)在闭合或断开瞬间由于金属弹片的弹性作用,会产生多次快速通断的现象,称为“触点抖动”。这一过程持续时间一般为5~20ms,虽然短暂,但对于扫描周期仅为几毫秒的PLC而言足以造成多次误判。例如,一个启动按钮被按下一次,可能被PLC识别为多次触发,导致电机重复启停,严重影响设备安全。
解决该问题的方法主要有两种: 硬件滤波 与 软件去抖 。
硬件去抖
最常见的方式是在输入回路中加入RC滤波电路或使用施密特触发器芯片(如74HC14),利用电容充放电延时特性平滑电压跳变。如下图所示为典型的RC滤波电路:
graph LR
A[机械开关] --> B[电阻R]
B --> C[电容C接地]
C --> D[PLC输入点]
D --> E[内部光耦隔离]
其中,R取值约10kΩ,C取值0.1μF,时间常数τ = RC ≈ 1ms,可有效抑制高频抖动。但需注意过大的RC值会降低响应速度,不适合高速计数场景。
软件去抖
在无法修改硬件的情况下,可通过编程实现延时确认机制。以下是一个基于定时器的去抖程序示例(STL语言):
// 输入地址 I0.0,去抖后状态存入M0.0
LD I0.0
EU // 上升沿检测
= M0.1 // 标记上升沿发生
LD M0.1
TON T37, +50 // 延时50ms(单位:10ms)
LD T37
= M0.0 // 输出稳定状态
代码逻辑逐行解读:
-LD I0.0:加载输入点I0.0的状态;
-EU:检测上升沿,仅当I0.0由0变为1时输出一个扫描周期的脉冲;
-= M0.1:将上升沿信号暂存于中间寄存器M0.1;
-TON T37, +50:启动定时器T37,设定时间为50×10ms=500ms;
-LD T37:读取定时器完成状态;
-= M0.0:只有经过500ms延时后才将结果输出至M0.0,避免抖动干扰。
该方法优点在于无需额外硬件成本,且灵活性高,适用于大多数常规控制场合。但在高实时性要求的应用中(如急停按钮),应优先采用硬件去抖或专用高速输入点配合中断处理。
| 方法 | 响应延迟 | 成本 | 适用场景 |
|---|---|---|---|
| RC滤波 | ~1–5ms | 低 | 普通按钮、限位开关 |
| 施密特触发器 | <1ms | 中 | 抗干扰要求高的环境 |
| 软件延时 | 10–500ms | 零 | 非关键控制点 |
| 硬件消抖继电器 | ~10ms | 高 | 强电磁干扰区 |
此外,STEP 7-Micro/WIN还提供系统级滤波功能:在“系统块”→“DI滤波”中可为每个数字输入设置0.2ms~12.8ms的硬件滤波时间,适用于所有CPU型号,推荐设置为6.4ms以兼顾抗扰性与响应速度。
4.1.2 输出端继电器/晶体管驱动能力匹配设计
PLC输出模块根据内部器件不同可分为 继电器型 与 晶体管型 两类,二者在驱动能力、寿命、响应速度等方面差异显著,选择不当易导致负载无法正常工作或模块烧毁。
| 参数 | 继电器输出 | 晶体管输出 |
|---|---|---|
| 最大负载电流 | 2A(每点) | 0.75A(每点) |
| 开关频率 | ≤1Hz | ≤10kHz |
| 寿命 | 约10万次 | >1亿次 |
| 可控电源类型 | AC/DC | DC only |
| 是否隔离 | 是 | 是(光耦) |
| 反向电动势耐受 | 差(需加续流二极管) | 较好 |
对于感性负载(如接触器线圈、电磁阀),切换时会产生反向电动势(Back EMF),可能击穿晶体管输出点。为此,必须在负载两端并联 续流二极管 (Flyback Diode),如下图所示:
flowchart TD
PLC_Output --+-->|NPN晶体管| Collector[BJT C]
Collector --> Coil[电磁阀线圈]
Coil --> V+
Coil <--|并联| D[续流二极管]
D --> GND
参数说明:
- 二极管耐压应大于负载电压2倍以上(如24V系统选用≥50V);
- 正向电流不低于负载额定电流;
- 推荐型号:1N4007(通用)、UF4007(快恢复)。
而对于大功率负载(>0.5kW电机),建议通过PLC驱动中间继电器(Interposing Relay),再由中间继电器控制主接触器,形成“小控大”的安全层级结构。例如:
Network 1: 控制中间继电器
LD Q0.0
= KM1_inter
External Wiring:
KM1_inter(NO) --> Coil of Main Contactor KM1
KM1_Main Contacts --> 3-phase Motor
此方式既保护了PLC输出点,又提高了系统的可维护性与扩展性。
4.1.3 典型启停电路的PLC实现方案
经典的“启保停”电路是所有自动化控制的基础模型,其实质是一个自锁回路。传统继电器实现方式如下:
- 启动按钮SB1(常开)→ 按下后接通;
- 停止按钮SB2(常闭)→ 默认闭合;
- 接触器KM辅助触点并联在SB1两端实现自保持。
将其移植到S7-200 PLC中,可用梯形图轻松实现:
Network 1: Start-Stop Logic
|----[ ]----[ ]----( )-----|
| I0.0 I0.1 Q0.0 |
| Start Stop |
| |
|----[ ]------------------|
| Q0.0 |
对应语句表代码:
LD I0.0 // 启动按钮(常开)
O Q0.0 // 并联自锁触点
AN I0.1 // 停止按钮(常闭,取反)
= Q0.0 // 输出至接触器控制端
逻辑分析:
- 当I0.0(Start)按下时,Q0.0得电;
- 即使松开I0.0,因Q0.0自身触点闭合,仍维持通路;
- 只有当I0.1(Stop)断开(即按下停止按钮)时,整个回路切断;
- AN指令实现对停止信号的“非”操作,符合安全设计原则(故障安全型)。
进一步增强功能时,可引入状态指示灯、运行反馈、故障联锁等元素。例如添加电机过载保护:
LD I0.0
O Q0.0
AN I0.1
AN I0.2 // 过载继电器常闭触点(FR)
= Q0.0
此时若发生过载,I0.2断开,强制Q0.0复位,实现自动停机。该逻辑体现了数字量处理中“多重条件联锁”的典型思想,广泛应用于泵、风机、传送带等设备控制中。
4.2 模拟量信号采集与标定
随着工业过程控制复杂度提升,仅靠开关量已无法满足需求,必须引入模拟量信号实现对温度、压力、流量等连续变量的精确监控。S7-200系列通过EM231、EM235等模拟量扩展模块支持多通道AI/AO配置,最高可达12位分辨率。正确配置这些模块并完成工程单位换算是实现精准控制的前提。
4.2.1 EM231/EM235扩展模块接线与配置参数说明
EM231为纯模拟输入模块(4通道),EM235则集成了4路输入与1路输出,均采用12位ADC/DAC,支持电压(±10V、0~10V)与电流(0~20mA、4~20mA)信号输入。安装前需通过DIP开关设置测量范围与滤波参数。
以EM235为例,其DIP配置如下表:
| DIP开关 | 功能 | 设置值(ON/OFF) |
|---|---|---|
| SW1 | 输入类型 CH0 | ON=电流,OFF=电压 |
| SW2 | 输入类型 CH1 | 同上 |
| SW3 | 输入类型 CH2 | 同上 |
| SW4 | 输入类型 CH3 | 同上 |
| SW5 | 增益选择 | OFF=标准,ON=高增益 |
| SW6 | 滤波频率 | OFF=60Hz,ON=50Hz |
例如,若CH0接入4~20mA压力变送器,则SW1置ON;若CH1接0~10V液位传感器,则SW2置OFF。
接线示意图如下:
graph TB
PT[压力变送器 4-20mA] -->|+24V| VCC
PT -->|Signal| AI0+
AI0+ --> EM[EM235]
AI0- --> GND
EM --> CPU[S7-200 CPU]
注意:
- 电流信号需外供电源,不可直接由EM235供电;
- 所有屏蔽线应在一点接地,防止地环路干扰;
- 模拟地(M)与数字地(GND)应分开布线,最终汇接到电源地。
模块地址自动分配,CPU依据I/O顺序计算偏移量。例如CPU224XP自带AIW0-AIW1,第一个EM235则占用AIW2~AIW8(偶数地址),对应VD寄存器起始地址为VD100(需手动初始化)。
4.2.2 电压/电流信号转换为工程值的线性换算公式推导
模拟量模块采集的是原始数字量(Raw Data),需通过线性映射转换为具有物理意义的工程值(Engineering Value)。设:
- $ R_{min} $:最小原始值(如4mA对应5530)
- $ R_{max} $:最大原始值(如20mA对应27648)
- $ E_{min} $:对应工程下限(如0 bar)
- $ E_{max} $:对应工程上限(如10 bar)
则任意原始值 $ R $ 对应的工程值 $ E $ 为:
E = \frac{(R - R_{min})}{(R_{max} - R_{min})} \times (E_{max} - E_{min}) + E_{min}
在S7-200中,常用实数运算指令实现该计算:
// 示例:将AIW2读数转换为0~10bar压力值
LD SM0.0
MOVW AIW2, AC0 // 读取模拟量
DTR AC0, VD100 // 转为实数
R-D VD100, VD104 // 减去偏移量5530
R VD104, VD108 // 除以斜率因子(27648-5530)=22118
*R VD108, 10.0 // 乘以量程跨度
+R VD108, 0.0 // 加零点(可省略)
ROUND VD108, VD200 // 存储为整数形式压力值
参数说明:
-DTR:双整数转实数;
-R-D/R/*R/+R:实数减、除、乘、加;
-ROUND:四舍五入取整;
- VD200可用于HMI显示或参与PID运算。
该算法也可封装为子程序 SCALE_AI ,传入通道号、上下限参数,提高代码复用性。
4.2.3 温度传感器(PT100、热电偶)接入与数据校准实践
PT100为铂电阻传感器,阻值随温度呈非线性变化,标准公式为IEC 751:
R(T) = R_0 \cdot (1 + A\cdot T + B\cdot T^2 + C\cdot (T-100)\cdot T^3)
其中 $ R_0 = 100Ω $,$ A=3.9083×10^{-3} $,$ B=-5.775×10^{-7} $,$ C=-4.183×10^{-12} $(T<0℃时启用)。
由于非线性强,直接计算复杂。通常做法是:
1. 使用温度变送器将PT100转换为4~20mA信号;
2. 或选用支持RTD输入的专用模块(如EM231 RTD);
3. 若必须自行处理,可采用查表法+线性插值。
假设已获取一组标定数据:
| 温度(℃) | 电阻(Ω) | ADC值 |
|---|---|---|
| 0 | 100 | 5530 |
| 50 | 119.4 | 12300 |
| 100 | 138.5 | 27648 |
编写查表程序片段:
// 查找最近区间并插值
FOR VW10, 0, 2
LD VW10
JMB TABLE_END
LW AIW2
LAR1 &Table[W#16:VW10*4]
// 比较当前值是否介于Table[i]与Table[i+1]之间
...
END_FOR
实际工程中更推荐使用带冷端补偿的热电偶模块或智能变送器,减少现场调试难度。
4.3 模拟量输出控制执行机构
4.3.1 变频器频率给定的模拟量输出编程
变频器常接受0~10V或4~20mA信号调节电机转速。以MM420为例,设定P0771=2(模拟输入2),即可接收来自EM235的AQW0信号。
目标:实现面板设定频率→PLC→AQW0→变频器联动。
// 将设定频率(如10~50Hz)转换为0~20mA对应数值
LD SM0.0
MOVD 10000, VD300 // 设定值50Hz(示例)
DTR VD300, VD304 // 转实数
-R VD304, 10.0 // 减去下限
*R VD304, 27648.0 // 乘以满量程数字值
/R VD304, 40.0 // 除以跨度(50-10=40Hz)
+R VD304, 5530.0 // 加4mA偏移
ROUND VD304, AC0
DTI AC0, AQW0 // 输出至模拟量端口
执行逻辑说明:
- 输入频率范围10~50Hz对应4~20mA;
- 数字量范围5530~27648;
- 实现线性缩放后写入AQW0;
- 变频器据此调整输出频率。
4.3.2 模拟量输出非线性补偿处理策略
某些执行器(如老式气动阀门定位器)存在非线性响应特性。可通过分段线性化或曲线拟合方式进行补偿。例如定义三段折线:
| 控制值 | 实际开度 |
|---|---|
| 0% | 0% |
| 50% | 40% |
| 100% | 100% |
使用SEL指令选择区间并插值,提升控制精度。
4.3.3 多通道模拟量同步采样与闭环调节初步实现
通过定时中断(如SMB34)定期触发AI采集与AO更新,构建基本PID调节框架,为第六章内容铺垫。
5. 中断程序设计:外部与定时中断
在工业自动化控制系统中,PLC的扫描周期机制虽然能够保障主控逻辑的稳定运行,但在面对某些对响应速度和执行精度要求极高的场景时,传统的轮询式处理方式往往难以满足实时性需求。为此,S7-200系列PLC引入了 中断机制 ,允许系统在特定事件发生时立即暂停当前任务,转而执行高优先级的中断服务程序(Interrupt Service Routine, ISR),从而实现对外部突发事件或周期性任务的快速、精准响应。本章将深入剖析中断机制的工作原理,并结合典型应用场景,展示如何通过外部中断与定时中断提升控制系统的动态性能与可靠性。
5.1 中断机制的基本原理与响应流程
中断是现代微控制器和可编程逻辑控制器中用于提高系统响应能力的核心技术之一。它打破了传统“顺序扫描 + 轮询检测”的局限,使得PLC能够在不增加主程序负担的前提下,及时处理关键事件。理解中断机制的本质及其在S7-200中的实现方式,是构建高性能控制系统的前提。
5.1.1 中断源分类:I/O中断、定时中断、通信中断
S7-200支持多种类型的中断源,依据触发条件的不同可分为三大类: I/O中断 、 定时中断 和 通信中断 。每种中断类型对应不同的硬件资源和编程配置方法,适用于不同层次的控制需求。
| 中断类型 | 触发源 | 典型应用 | 支持CPU型号 |
|---|---|---|---|
| I/O中断 | 数字量输入上升/下降沿 | 紧急停机、高速计数启动 | CPU 224XP及以上 |
| 定时中断 | 内部定时器T32/T96 | 固定周期数据采集、PID采样 | 所有S7-200型号 |
| 通信中断 | 自由口通信接收完成 | 条码枪数据读取、HMI交互 | CPU 224、226等带通信口型号 |
这些中断源通过各自的使能寄存器(如 SM0.3 用于首次扫描)和中断连接指令( ATCH )进行注册,并由中断分离指令( DTCH )解除绑定。当中断条件满足且全局中断允许( ENI 指令启用)时,CPU会自动保存现场(包括累加器、状态字等),跳转至指定的中断服务程序执行。
例如,在一个包装线上,当光电传感器检测到产品进入封口工位时,若使用主程序轮询判断该信号,可能因扫描周期延迟导致动作滞后;而采用I/O中断,则可在信号上升沿瞬间触发封口动作,显著提升同步精度。
此外,通信中断常用于自由口模式下串行设备的数据接收。比如条码扫描枪通过RS485接口发送一帧数据后,产生接收完成中断,PLC随即调用ISR解析数据并更新内部变量,避免了主程序频繁查询接收缓冲区带来的资源浪费。
值得注意的是,S7-200仅支持最多 32个中断事件 ,且部分中断号被系统保留(如定时中断0使用 INT_0 ,中断号10)。因此在项目开发中需合理规划中断资源分配,防止冲突。
graph TD
A[事件发生] --> B{是否为有效中断源?}
B -->|否| C[继续主程序扫描]
B -->|是| D[检查中断是否已使能]
D -->|否| C
D -->|是| E[保存CPU上下文]
E --> F[跳转至ISR执行]
F --> G[执行中断服务程序]
G --> H[恢复上下文]
H --> I[返回主程序断点]
上述流程图清晰地展示了S7-200中断响应的完整路径。从中可以看出,中断处理本质上是一个“打断—执行—恢复”的过程,其核心在于保证主程序的连续性和中断响应的即时性之间的平衡。
5.1.2 中断优先级设定与嵌套处理规则
尽管S7-200提供了灵活的中断功能,但其并不支持完全意义上的中断嵌套——即在一个ISR执行期间不允许更高优先级的中断再次打断。然而,系统仍定义了一套明确的 中断优先级顺序 ,决定了多个中断同时请求时的响应次序。
中断优先级从高到低排列如下:
- 通信中断 (最高)
- 包括PPI通信错误、自由口接收完成等 - I/O中断
- 如高速计数器输入、脉冲捕捉等 - 定时中断
- T32/T96产生的周期性中断
这意味着,如果一个定时中断正在执行,此时恰好有I/O中断触发,后者将被挂起直至定时中断结束;反之则不会发生阻塞。这种静态优先级机制简化了中断管理复杂度,但也要求开发者在设计时充分评估各中断的时效性需求。
例如,在某运动控制系统中,使用定时中断实现每10ms一次的位置采样,同时配置了一个I/O中断用于捕获急停按钮信号。由于I/O中断优先级高于定时中断,即使在采样过程中按下急停按钮,系统也能立即响应并切断驱动电源,确保安全。
为了进一步说明中断优先级的影响,考虑以下STL代码片段:
// 主程序中启用中断
LD SM0.1 // 首次扫描
ATCH INT_0, 10 // 将INT_0连接到定时中断0
ATCH INT_1, 12 // 将INT_1连接到I/O中断0(I0.0上升沿)
ENI // 允许全局中断
在此例中, INT_0 服务于定时中断, INT_1 处理I/O事件。假设两者几乎同时触发,CPU会优先执行 INT_1 ,因为其对应的中断类型优先级更高。
参数说明:
- ATCH 指令格式为 ATCH <中断程序标号>, <中断事件号>
- 事件号10代表定时中断0(基于T32)
- 事件号12代表I0.0的上升沿捕捉
- ENI 启用所有已连接的中断, DISI 可禁用
需特别注意: 一旦进入ISR,新的同级别或低级别中断将被屏蔽 ,直到当前ISR执行完毕并返回主程序。因此,应尽量缩短ISR执行时间,避免影响其他中断的及时响应。
5.1.3 中断服务程序执行时间对扫描周期的影响分析
中断服务程序的执行时间直接影响整个PLC系统的稳定性与实时性。虽然中断本身可以打破扫描周期的限制,但过长的ISR会导致主程序被长时间挂起,进而延长整体扫描周期(Scan Cycle Time),甚至引发看门狗超时故障。
以S7-200为例,标准CPU的默认看门狗时间为500ms。若主程序加上累计中断处理时间超过此阈值,系统将自动复位。因此,必须严格控制ISR的执行效率。
执行时间估算方法
可通过STEP 7-Micro/WIN的程序状态监控功能查看每个指令的执行时间(单位:μs),进而估算总耗时。例如:
INT_0: // 定时中断服务程序
LD SM0.0
MOVW AC0, VW100 // 保存累加器值
INCD HC0 // 高速计数器+1
RETI // 中断返回
逐行分析:
- LD SM0.0 :常开触点,固定0.8μs
- MOVW AC0, VW100 :字移动,约2.8μs
- INCD HC0 :双字递增,约4.2μs
- RETI :中断返回指令,固定1.2μs
→ 总执行时间 ≈ 9.0μs
该时间远小于典型扫描周期(10~100ms),因此不会造成明显影响。
优化建议
- 避免在ISR中调用子程序或复杂运算
子程序调用涉及堆栈操作,显著增加执行时间。 -
禁止使用WAIT、延时等阻塞指令
这些指令会使CPU停滞,严重破坏实时性。 -
尽量减少数据访问范围
访问V存储区比M区稍慢,应优先使用局部变量或SM标志位传递信息。 -
使用中断标志位代替直接控制输出
在ISR中仅设置一个中间标志(如M0.0 = 1),由主程序检测并执行后续动作,降低ISR负载。
下表对比了不同ISR结构对扫描周期的影响:
| ISR内容 | 平均执行时间(μs) | 对扫描周期影响 |
|---|---|---|
| 仅置位M标志 | ~3.0 | 几乎无影响 |
| 包含浮点运算 | ~80.0 | 明显延长周期 |
| 调用子程序 | ~50.0 | 增加不确定性 |
| 写入多组模拟量 | ~120.0 | 可能导致超时 |
由此可见,合理的ISR设计不仅能提升响应速度,还能保障系统整体运行的稳定性。尤其在涉及PID调节、高速计数或多轴联动的复杂系统中,必须精细测算每个中断的负载,确保其在安全范围内运行。
6. PID控制算法在温度压力调节中的实现
工业自动化系统中,过程变量的精确控制是保障产品质量和生产效率的关键。在众多闭环控制策略中, 比例-积分-微分(Proportional-Integral-Derivative, PID)控制器 因其结构简单、适应性强、调节效果稳定,被广泛应用于温度、压力、流量、液位等物理量的自动调节任务中。S7-200系列PLC内置了专用的PID指令块( PIDx ),为中小型控制系统提供了高效、可靠的解决方案。本章将从理论基础出发,深入剖析PID各参数的作用机制,并结合S7-200平台详细讲解其配置流程与工程实践。
6.1 PID控制理论基础与参数意义
PID控制是一种基于反馈误差进行动态修正的经典控制方法。它通过实时比较设定值(SP)与实际测量值(PV),计算出控制输出(MV),从而驱动执行机构(如加热器、调节阀、变频器等)调整被控对象的状态,使系统趋于稳定。理解PID三要素的工作原理及其对系统响应的影响,是实现精准控制的前提。
6.1.1 比例、积分、微分作用机理深入解析
比例作用(P - Proportional)
比例控制的核心思想是“按偏差大小成正比地输出控制信号”。其数学表达式为:
u_P(t) = K_p \cdot e(t)
其中:
- $ u_P(t) $:比例部分输出;
- $ K_p $:比例增益;
- $ e(t) = SP - PV $:当前时刻的误差。
逻辑分析 :当误差较大时,控制器立即给出较大的输出以快速逼近目标;但若仅使用比例控制,则系统往往存在稳态误差(即残差),因为一旦误差趋近于零,输出也随之趋近于零,无法维持必要的控制力。
参数说明 :增大 $ K_p $ 可加快响应速度,但过大会导致系统震荡甚至失稳;减小则响应迟缓,调节时间延长。
积分作用(I - Integral)
积分控制用于消除系统的稳态误差。它通过对历史误差的累积来持续增加输出,直到误差完全消失:
u_I(t) = K_i \int_0^t e(\tau)\,d\tau = \frac{K_p}{T_i} \int_0^t e(\tau)\,d\tau
其中:
- $ T_i $:积分时间常数;
- $ K_i = K_p / T_i $:积分系数。
逻辑分析 :即使误差很小,只要不为零,积分项就会不断累加,推动输出继续变化,直至误差归零。这使得系统最终能够达到精确匹配。
参数说明 :积分时间 $ T_i $ 越短,积分作用越强,消除残差越快,但也容易引起超调和振荡;过长则响应缓慢。
微分作用(D - Derivative)
微分控制预测未来趋势,依据误差的变化率提前施加反向控制,抑制超调并提升稳定性:
u_D(t) = K_d \cdot \frac{de(t)}{dt} = K_p \cdot T_d \cdot \frac{de(t)}{dt}
其中:
- $ T_d $:微分时间常数;
- $ K_d = K_p \cdot T_d $:微分系数。
逻辑分析 :当误差迅速增大或减小时,微分项产生一个反方向的“阻尼”效应,防止系统冲过头。例如,在升温过程中接近设定值时,温度上升速率下降,微分项自动降低加热功率,避免过冲。
参数说明 :适当引入微分可显著改善动态性能,但对噪声敏感,尤其在模拟量信号波动大时可能引发误动作,需配合滤波处理。
综合控制公式
完整的PID控制输出为三者之和:
u(t) = K_p \left[ e(t) + \frac{1}{T_i}\int_0^t e(\tau)\,d\tau + T_d \frac{de(t)}{dt} \right]
该公式构成了连续域下的理想型PID控制器,在离散化后可通过采样周期 $ \Delta t $ 实现数字计算。
以下表格总结了三种作用的特点及影响:
| 控制项 | 作用特点 | 对系统影响 | 调整建议 |
|---|---|---|---|
| 比例(P) | 即时响应误差 | 提高响应速度,但有残差 | 增大$K_p$加速响应,注意防振荡 |
| 积分(I) | 消除静态误差 | 提升稳态精度,易引起超调 | 缩短$T_i$增强积分,避免积分饱和 |
| 微分(D) | 抑制变化趋势 | 减少超调,提高稳定性 | 合理设置$T_d$,配合滤波防干扰 |
6.1.2 闭环系统稳定性判断与震荡抑制方法
一个成功的PID控制系统不仅要能准确跟踪设定值,还必须具备良好的稳定性。所谓稳定性,是指系统受到扰动后能恢复到平衡状态的能力。
系统阶跃响应特性分析
典型的闭环系统阶跃响应可分为四种类型:
- 无超调单调上升 :响应慢,适合安全要求高的场合。
- 轻微超调后收敛 :理想状态,兼顾快速性与稳定性。
- 大幅振荡逐渐收敛 :系统临界稳定,需优化参数。
- 持续振荡或发散 :系统不稳定,必须重新整定。
graph LR
A[设定值突变] --> B{控制器响应}
B --> C[快速上升]
C --> D{是否超调?}
D -- 是 --> E[出现峰值]
D -- 否 --> F[缓慢逼近]
E --> G{能否收敛?}
G -- 能 --> H[稳定运行]
G -- 不能 --> I[持续震荡/失控]
判断稳定性的常用方法
- Ziegler-Nichols临界比例法 :逐步增大 $ K_p $ 直至系统出现等幅振荡,记录此时的比例增益 $ K_u $ 和振荡周期 $ T_u $,然后查表确定 $ K_p, T_i, T_d $ 的推荐值。
- 根轨迹法 :分析闭环特征方程的极点分布,左半平面表示稳定。
- Bode图判据 :通过频率响应判断相位裕度和增益裕度。
震荡抑制策略
- 限制输出变化率 :对MV添加斜坡限幅,避免突变。
- 启用微分先行(Derivative on Measurement) :仅对PV求导,避免设定值跳变引起的剧烈微分响应。
- 增加输入滤波 :对PV信号进行一阶低通滤波,削弱高频噪声对D项的影响。
- 采用抗积分饱和机制 :当输出已达上下限时,停止积分累加。
6.1.3 手动整定与自整定(Auto-tune)方式比较
手动整定步骤(经验法)
- 先关闭I和D,仅启用P,从小到大调节 $ K_p $,观察响应曲线;
- 当出现轻微振荡时,记下此时的 $ K_u $ 和周期 $ T_u $;
- 根据Ziegler-Nichols公式设置初始参数:
| 控制模式 | $ K_p $ | $ T_i $ | $ T_d $ |
|---|---|---|---|
| P | 0.5×$K_u$ | ∞ | 0 |
| PI | 0.45×$K_u$ | 0.83×$T_u$ | 0 |
| PID | 0.6×$K_u$ | 0.5×$T_u$ | 0.125×$T_u$ |
- 在线微调各参数,观察趋势图,逐步逼近最优响应。
自整定功能(S7-200支持)
S7-200 PLC提供自动调谐功能,通过内置算法自动识别对象特性并计算最佳PID参数。操作流程如下:
- 将PID回路置于手动模式;
- 启动自整定命令(M端置位);
- 控制器注入激励信号(如阶跃扰动);
- 采集响应数据,拟合模型;
- 计算并写入推荐参数;
- 切换回自动模式运行。
优势 :节省调试时间,适用于非专业人员;
局限 :对非线性、时变系统适应性有限,极端工况下仍需人工干预。
6.2 S7-200中PID指令块(PIDx)配置步骤
S7-200提供的 PIDx 指令是一个功能块,位于STEP 7-Micro/WIN编程软件的指令树中。该指令依赖于用户定义的“回路表”(Loop Table)存储所有相关变量地址与参数,因此正确初始化回路表是成功应用PID的关键。
6.2.1 回路表初始化与变量地址分配
每个PID回路需要一块连续的V存储区作为回路表,共占用36个字节(9个双字)。以下是标准回路表结构:
| 字节偏移 | 名称 | 数据类型 | 说明 |
|---|---|---|---|
| 0.0 | Process Variable (PV) | REAL | 当前过程值 |
| 4.0 | Setpoint (SP) | REAL | 设定值 |
| 8.0 | Output (MV) | REAL | 控制输出 |
| 12.0 | Gain ($K_p$) | REAL | 比例增益 |
| 16.0 | Integral Time ($T_i$) | REAL | 积分时间(秒) |
| 20.0 | Derivative Time ($T_d$) | REAL | 微分时间(秒) |
| 24.0 | Sample Time ($\Delta t$) | INT | 采样周期(ms) |
| 26.0 | Deadband | INT | 死区宽度(±%) |
| 28.0 | Control Variable High Limit | REAL | 输出上限 |
| 32.0 | Control Variable Low Limit | REAL | 输出下限 |
注意:采样时间单位为毫秒,且必须大于等于PLC扫描周期。
示例代码:回路表声明(在V区定义)
// 定义第一个PID回路的起始地址 VD100
VD100: // PV 当前温度值(来自AIW0转换)
VD104: // SP 设定温度(例如 80.0°C)
VD108: // MV 输出占空比(0~100%)
VD112: // Kp = 3.5
VD116: // Ti = 120 秒
VD120: // Td = 30 秒
VW124: // Ts = 100 ms(每100ms执行一次PID运算)
VW126: // 死区 = 1(误差在±1%内不调节)
VD128: // MV上限 = 100.0
VD132: // MV下限 = 0.0
初始化程序片段(主程序OB1)
// 将回路表首地址装入AC0,并调用PID指令
LDR &VB100 // 加载回路表首地址(&表示取址)
PID 0 // 调用PID回路0
逐行解读 :
-LDR &VB100:将回路表的起始地址(VB100)加载到累加器AC0中,供PID指令寻址;
-PID 0:启动第0号PID回路运算,系统根据AC0指向的数据自动读取PV、SP、参数等信息,并更新MV。
6.2.2 设定值、过程变量、输出值的数据归一化处理
由于S7-200的PID指令要求所有输入输出均为 0.0 ~ 1.0 的浮点数 (即归一化范围),必须对原始数据进行标准化处理。
归一化公式
对于任意物理量 $ x $,其归一化值为:
x_{norm} = \frac{x - x_{min}}{x_{max} - x_{min}}
温度采集归一化示例(PT100传感器经EM231处理)
假设EM231输出范围为 0~32000 对应温度 0~150°C:
// 读取模拟输入 AIW0
MOVW AIW0, VW200
ITD VW200, AC1 // 转为双整数
DTR AC1, AC1 // 转为实数
/R 32000.0, AC1 // 归一化至 0~1.0
ROUND AC1, AC1
TRUNC AC1, AC1
RND AC1 // 得到 0.0 ~ 1.0 的PV_norm
参数说明 :
-ITD:整数转双整数;
-DTR:双整数转实数;
-/R:实数除法,完成归一化;
- 结果存入回路表VD100。
输出反归一化(MV → PWM或DA输出)
若输出需驱动0~10V的模拟量模块:
// 假设MV已由PID计算得出(0.0~1.0)
LDF VD108 // 加载MV
*D 32000.0, AC0 // 映射到0~32000
ROUND AC0, AC0
TRUNC AC0, AC0
DTI AC0, AC0 // 转为整数
MOVW AC0, AQW0 // 输出至模拟量通道
逻辑分析 :此过程实现了从归一化输出到实际执行信号的映射,确保控制指令有效传递。
6.2.3 控制方向选择与反向控制逻辑实现
某些场景下,控制器输出方向需反转。例如:
- 加热系统:MV↑ → 功率↑ → 温度↑ → 正向控制;
- 冷却系统:MV↑ → 阀门开度↑ → 温度↓ → 反向控制。
实现方式
通过修改增益符号实现方向切换:
// 正向控制:Kp > 0
VD112: 3.5
// 反向控制:Kp < 0
VD112: -3.5
说明 :负的 $ K_p $ 会使控制器在检测到PV < SP时减少输出,符合冷却逻辑。
另一种方法是在外部逻辑中反转MV:
LDF VD108 // 读取原始MV
SUBR 100.0, VD108 // 若原为0~100%,变为100%~0%
适用于无法更改Kp符号的情况。
6.3 温度与压力闭环控制系统实例
6.3.1 电加热炉温度恒温控制系统的软硬件集成
系统组成
- 传感器 :PT100热电阻 + EM231模块;
- 控制器 :S7-200 CPU224XP;
- 执行器 :固态继电器(SSR)+ 电加热管;
- 人机界面 :TD400C文本显示器(可选);
控制逻辑流程图
flowchart TD
A[上电初始化] --> B[读取AIW0温度值]
B --> C[归一化处理 PV_norm]
C --> D[调用PID指令]
D --> E[输出MV反归一化]
E --> F[PWM或SSR通断控制]
F --> G[延时100ms]
G --> B
关键代码实现(主循环)
Main:
MOVW AIW0, VW200
ITD VW200, AC1
DTR AC1, AC1
/R 32000.0, AC1 // PV_norm
RND AC1
DTI AC1, AC1
MOV AC1, VD100 // 写入回路表PV
LDR &VB100
PID 0 // 执行PID运算
LDF VD108 // 获取MV
*D 100.0, AC0 // 转为百分比
ROUND AC0, AC0
TRUNC AC0, AC0
MOVW AC0, VW300 // 存储用于显示或PWM
CALL PWM_Control // 调用PWM子程序
LW 100 // 延时100ms
TON T37, +10 // 10×10ms=100ms
JMP Main
扩展说明 :PWM子程序可根据MV值调节SSR导通时间比例,实现无级调功。
6.3.2 气压调节系统中PID输出限幅与抗饱和策略
在气动系统中,电磁阀通常只有开/关两种状态,难以直接实现连续调节。可通过“脉宽调制+积分限幅”方式近似模拟比例控制。
抗积分饱和措施
当输出长时间处于极限值时,积分项持续累加会造成“积分饱和”,导致解除限制后输出剧烈跳变。
解决办法:
// 判断MV是否已达限幅边界
LDF VD108
>=R 100.0, AC0
JC No_Integral_Update
// 否则正常累加积分项
No_Integral_Update:
// 跳过积分计算
或使用S7-200的高级功能块判断MV状态并动态禁用积分。
6.3.3 基于趋势图观察调整Kp、Ti、Td参数效果
利用STEP 7-Micro/WIN的趋势图功能,可实时监控SP、PV、MV三条曲线,直观评估调节效果。
| 参数组合 | 曲线特征 | 改进建议 |
|---|---|---|
| Kp过大 | 快速响应但剧烈震荡 | 降低Kp,增加Td |
| Ti过短 | 快速消除残差但超调严重 | 增大Ti |
| Td过长 | 输出抖动,抗噪能力差 | 减小Td,加滤波 |
操作建议 :每次只调整一个参数,观察至少3个完整响应周期后再做下一步修改。
以上内容全面覆盖了S7-200平台上PID控制从理论到实践的全过程,涵盖算法解析、指令配置、归一化处理、方向控制及典型应用场景,满足复杂工业过程控制需求。
7. 工业自动化典型控制任务实战案例60例精讲
7.1 典型逻辑控制任务案例解析
7.1.1 传送带联动启停与故障连锁保护
在现代生产线中,多段传送带常用于物料的连续输送。为确保运行安全与系统可靠性,必须设计合理的启停逻辑与故障连锁机制。
控制需求:
- 系统包含三段传送带(M1、M2、M3),按逆物流方向顺序启动;
- 停止时按顺物流方向依次延时停止;
- 任意一段发生过载或急停,所有电机立即停机;
- 启动前需确认各段无故障信号。
I/O分配表如下:
| 地址 | 符号 | 类型 | 描述 |
|---|---|---|---|
| I0.0 | Start_PB | 输入 | 启动按钮(常开) |
| I0.1 | Stop_PB | 输入 | 停止按钮(常闭) |
| I0.2 | EStop | 输入 | 急停按钮(常闭) |
| I0.3 | OL_M1 | 输入 | M1过载保护 |
| I0.4 | OL_M2 | 输入 | M2过载保护 |
| I0.5 | OL_M3 | 输入 | M3过载保护 |
| Q0.0 | M1_Run | 输出 | 控制M1接触器 |
| Q0.1 | M2_Run | 输出 | 控制M2接触器 |
| Q0.2 | M3_Run | 输出 | 控制M3接触器 |
梯形图核心逻辑说明:
Network 1: 故障检测与自锁清除
LD I0.0 // 启动按钮按下
AN I0.1 // 且停止按钮未按下
AN (I0.3 OR I0.4 OR I0.5 OR I0.2) // 无任何故障或急停
= Enable_Start // 允许启动标志
Network 2: 顺序启动逻辑
LD Enable_Start
EU // 上升沿触发一次
= Start_Pulse
LD Start_Pulse
O Q0.0
AN T37 // T37为M2启动延时定时器
= Q0.0 // M1先启动
LD Q0.0
TON T37, +100 // 延时10s启动M2
LD T37
O Q0.1
AN T38
= Q0.1 // M2启动
LD Q0.1
TON T38, +100 // 再延时10s启动M3
LD T38
= Q0.2 // M3启动
停止逻辑(顺流延时):
当按下停止按钮后,首先断开M3,10秒后再停M2,再10秒后停M1。
Network 3: 顺序停止
LD I0.1 // 停止按钮动作
O (I0.2 OR I0.3 OR I0.4 OR I0.5) // 或出现故障/急停
= Fault_Stop_Flag
LD Fault_Stop_Flag
= Q0.2 // 立即停止M3
LD Fault_Stop_Flag
TON T39, +100 // 延时10s
= Q0.1 // 停止M2
LD T39
TON T40, +100 // 再延时10s
= Q0.0 // 最后停止M1
该设计实现了“启动逆序、停止顺序”的典型工艺要求,有效避免了物料堆积和机械冲击。
7.1.2 三相电机正反转互锁与星三角降压启动
对于大功率电机(如>5.5kW),直接全压启动会产生较大电流冲击,通常采用星三角(Y-Δ)降压启动方式,同时结合正反转功能时需严格互锁。
控制目标:
- 支持正转、反转、停止操作;
- 启动时先进入星型连接,延时切换至三角形运行;
- 正反向之间电气+程序双重互锁;
- 防止KM2(三角形)、KM3(星型)同时吸合造成短路。
主电路接触器配置:
- KM1:主电源接触器
- KM2:三角形连接接触器
- KM3:星型连接接触器
- KM4:正转接触器
- KM5:反转接触器
PLC输出接线建议:
- Q0.0 → KM1(主)
- Q0.1 → KM2(Δ)
- Q0.2 → KM3(Y)
- Q0.3 → KM4(Forward)
- Q0.4 → KM5(Reverse)
关键梯形图逻辑片段:
Network 4: 正转启动逻辑(含Y-Δ转换)
LD I1.0 // 正转按钮
AN I1.1 // 反转未按下
AN Q0.4 // 无反转信号
AN Q0.1 // Δ未激活
= Fwd_Coil
LD Fwd_Coil
= Q0.3 // 吸合正转接触器
LD Q0.3
= Q0.0 // 主接触器得电
LD Q0.0
= Q0.2 // 星型接触器得电(Y接)
LD Q0.2
TON T50, +300 // 延时30s(可根据负载调整)
LD T50
= Q0.1 // 切换到Δ运行
= Q0.2 // 断开Y接触器(注意互斥)
使用定时器T50完成Y→Δ切换,并通过互锁防止KM2与KM3同时导通。
互锁保护机制:
Network 5: 反转逻辑与互锁
LD I1.1
AN I1.0
AN Q0.3
AN Q0.1
= Rev_Coil
LD Rev_Coil
= Q0.4 // 反转接触器
LD Q0.4
= Q0.0 // 主回路接通
= Q0.2 // 进入星型启动
LD Q0.2
TON T51, +300
LD T51
= Q0.1
R Q0.2
此外,在HMI或程序中可加入“启动失败报警”、“缺相检测”等扩展功能。
7.1.3 液位高低位报警与泵自动启停控制
水箱液位控制系统广泛应用于供水、冷却循环系统中,基于浮球开关或模拟量传感器实现泵的自动启停。
系统配置:
- 使用两个数字量输入检测高、低液位;
- 泵由PLC输出控制;
- 设定自动/手动模式切换。
I/O定义:
| 地址 | 名称 | 类型 | 功能说明 |
|---|---|---|---|
| I2.0 | Low_Level | 输入 | 低位浮球(常开) |
| I2.1 | High_Level | 输入 | 高位浮球(常开) |
| I2.2 | Auto_Mode | 输入 | 自动模式选择 |
| Q1.0 | Pump_Run | 输出 | 控制水泵运行 |
| Q1.1 | Alarm_LED | 输出 | 高位溢出报警指示灯 |
控制逻辑流程图(mermaid格式):
graph TD
A[开始] --> B{自动模式?}
B -- 是 --> C{液位低于低位?}
C -- 是 --> D[启动水泵]
D --> E{液位达到高位?}
E -- 是 --> F[停止水泵]
F --> C
B -- 否 --> G[手动控制]
E -- 否 --> H[保持运行]
C -- 否 --> I[保持停止]
STL语句表示例:
LD I2.2 // 自动模式启用
JC AUTO_MODE_ON
LD I2.3 // 手动启动按钮
= Q1.0
JMP END_MAIN
AUTO_MODE_ON:
LD I2.0 // 低液位检测
O Q1.0 // 若已运行则持续
AN I2.1 // 且未到达高位
= Q1.0 // 启动泵
LD I2.1 // 到达高位
= Q1.1 // 触发高位报警LED
该逻辑可进一步扩展支持:
- 水泵轮换运行(延长寿命);
- 干运行保护(超时未补水报警);
- 结合模拟量实现连续液位监控与PID调节。
上述三个案例覆盖了工业现场最常见的逻辑控制场景,具备高度复用性与工程参考价值。
简介:本资源包含60个针对西门子S7-200系列PLC的详细编程示例,涵盖顺序控制、定时器、计数器、模拟量处理、通信、中断处理、PID控制及运动控制等典型工业应用场景。每个示例均配有清晰解释,结合SIMATIC Step 7 Micro/WIN编程软件,采用梯形图、语句表等多种语言实现,适合初学者掌握PLC基础编程,也助力工程师提升实际项目开发能力。该实战包是学习小型PLC在自动化控制中应用的宝贵资料。
1217

被折叠的 条评论
为什么被折叠?



