1.3 PLC的工作原理
本节将介绍PLC的工作方式和扫描周期
学习目标
- 理解PLC的工作方式
- 掌握PLC扫描周期的概念
- 了解输入/输出刷新机制
1. PLC的工作方式(循环扫描)
1.1 循环扫描工作方式
PLC采用循环扫描的工作方式,不断地重复执行一系列固定的操作步骤。这种工作方式是PLC区别于普通计算机的重要特征。
PLC循环扫描示意图:
┌─────────────────────────────────┐
│ │
▼ │
┌───────────┐ │
│ 内部处理 │ ← 自检、通信服务等 │
└─────┬─────┘ │
▼ │
┌───────────┐ │
│ 输入采样 │ ← 读取输入端子状态 │
└─────┬─────┘ │
▼ │
┌───────────┐ │
│ 程序执行 │ ← 执行用户程序 │
└─────┬─────┘ │
▼ │
┌───────────┐ │
│ 输出刷新 │ ← 更新输出端子状态 │
└─────┬─────┘ │
│ │
└───────────────────────────────┘
一个扫描周期1.2 与传统计算机的区别
| 特性 | 普通计算机 | PLC |
|---|---|---|
| 执行方式 | 等待输入,响应执行 | 循环扫描,周期执行 |
| 输入处理 | 实时中断响应 | 集中采样,批量处理 |
| 输出更新 | 即时输出 | 周期性统一输出 |
| 程序执行 | 按需执行 | 全部程序每周期都执行 |
2. 扫描周期的组成
2.1 什么是扫描周期?
扫描周期(Scan Cycle)是指PLC完成一次完整扫描所需要的时间,包括内部处理、输入采样、程序执行和输出刷新四个阶段。
扫描周期时间构成:
┌─────────────────────────────────────────────────────────┐
│ 一个扫描周期 │
├──────────┬──────────┬────────────────┬─────────────────┤
│ 内部处理 │ 输入采样 │ 程序执行 │ 输出刷新 │
│ T1 │ T2 │ T3 │ T4 │
├──────────┴──────────┴────────────────┴─────────────────┤
│ │
│ 扫描周期 = T1 + T2 + T3 + T4 │
│ │
│ 典型值:几毫秒到几十毫秒 │
└─────────────────────────────────────────────────────────┘2.2 影响扫描周期的因素
| 因素 | 影响说明 |
|---|---|
| CPU性能 | CPU速度越快,扫描越快 |
| 程序长度 | 程序越长,执行时间越长 |
| 指令类型 | 复杂指令比简单指令耗时 |
| I/O点数 | I/O越多,采样和刷新时间越长 |
| 通信任务 | 通信越频繁,内部处理时间越长 |
2.3 扫描周期的典型值
不同规模PLC的扫描周期:
小型PLC: ████████████ 10-50 ms
中型PLC: ██████ 5-20 ms
大型PLC: ███ 1-10 ms
高性能PLC: █ 0.1-1 ms
注:以上为执行1K步程序的典型值3. 输入采样阶段
3.1 输入采样过程
在输入采样阶段,PLC会一次性读取所有输入端子的状态,并将这些状态存储到输入映像寄存器中。
输入采样过程:
外部输入设备 PLC内部
┌─────────────┐ ┌─────────────────┐
│ 按钮 SB1 │────────▶│ I0.0 = 1 │
├─────────────┤ ├─────────────────┤
│ 按钮 SB2 │────────▶│ I0.1 = 0 │
├─────────────┤ ├─────────────────┤ 输入映像
│ 传感器 S1 │────────▶│ I0.2 = 1 │ 寄存器
├─────────────┤ ├─────────────────┤
│ 传感器 S2 │────────▶│ I0.3 = 0 │
├─────────────┤ ├─────────────────┤
│ ... │────────▶│ ... │
└─────────────┘ └─────────────────┘
│
▼
程序执行时使用3.2 输入映像寄存器
- 作用:存储输入端子状态的"快照"
- 更新时机:仅在输入采样阶段更新
- 程序访问:程序执行时读取的是映像寄存器,而非实际端子
3.3 输入延迟问题
由于采用集中采样方式,输入信号的变化可能存在延迟:
输入延迟示意:
外部信号: ─────┐ ┌─────────────────
│ │
└─────┘
↑
│ 信号变化时刻
采样时刻: ① ② ③
↓ ↓ ↓
PLC识别: ────┐ ┌────
│ │
└─────────┘
最大延迟 = 1个扫描周期结论:输入信号的持续时间必须大于一个扫描周期,否则可能被PLC"漏读"。
4. 程序执行阶段
4.1 程序执行顺序
PLC按照从上到下、从左到右的顺序逐条执行用户程序。
梯形图程序执行顺序:
第1步 ──▶ 第2步 ──▶ 第3步
──┤├──────┤├────────( )── ← 第1条指令
第4步 ──▶ 第5步 ──▶ 第6步
──┤├──┬───┤├────────( )── ← 第2条指令
│
第7步 │
──┤├──┘
第8步 ──▶ 第9步
──┤├──────────────────( )── ← 第3条指令
执行方向:从上到下,从左到右4.2 运算结果存储
程序执行时:
- 读取输入映像寄存器获得输入状态
- 读写内部存储器(M、D等)
- 运算结果写入输出映像寄存器
程序执行时的数据流:
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 输入映像 │────▶│ │────▶│ 输出映像 │
│ 寄存器 │ │ CPU执行 │ │ 寄存器 │
└─────────────┘ │ 用户程序 │ └─────────────┘
│ │
┌─────────────┐ │ │ ┌─────────────┐
│ 内部存储器 │◀───▶│ │◀───▶│ 内部存储器 │
│ (M、D等) │ │ │ │ (T、C等) │
└─────────────┘ └─────────────┘ └─────────────┘4.3 同一周期内的逻辑关系
重要概念:在同一个扫描周期内,输出线圈的状态可能会多次变化,但只有最后一次的状态才会被输出。
示例程序:
网络1: I0.0
────┤├──────────────────(Q0.0)── Q0.0 = 1
网络2: I0.1
────┤├──────────────────(Q0.0)── Q0.0 = 0
假设 I0.0=1, I0.1=1:
执行网络1后:输出映像 Q0.0 = 1
执行网络2后:输出映像 Q0.0 = 0 ← 最终值
实际输出 Q0.0 = 0(以最后赋值为准)5. 输出刷新阶段
5.1 输出刷新过程
在输出刷新阶段,PLC将输出映像寄存器中的内容一次性传送到输出端子,驱动外部设备。
输出刷新过程:
PLC内部 外部输出设备
┌─────────────────┐ ┌─────────────┐
│ Q0.0 = 1 │────────▶│ 指示灯 L1 │ 亮
├─────────────────┤ ├─────────────┤
│ Q0.1 = 0 │────────▶│ 指示灯 L2 │ 灭
├─────────────────┤ 输出 ├─────────────┤
│ Q0.2 = 1 │────────▶│ 电机 M1 │ 运行
├─────────────────┤ 刷新 ├─────────────┤
│ Q0.3 = 0 │────────▶│ 电磁阀 V1 │ 关闭
├─────────────────┤ ├─────────────┤
│ ... │────────▶│ ... │
└─────────────────┘ └─────────────┘
输出映像寄存器 物理输出端子5.2 输出延迟
与输入类似,输出也存在延迟:
输出延迟分析:
程序执行:Q0.0=1
↓
│ 等待本次扫描结束
↓
输出刷新:端子输出高电平
↓
│ 输出电路响应时间
↓
外部设备:电机开始转动
总输出延迟 = 等待时间 + 输出电路响应时间
≤ 1个扫描周期 + 输出模块延迟6. 完整扫描周期示例
6.1 实例分析
控制要求:按下启动按钮SB1,电机M1运行
I/O分配:
输入:I0.0 ─ 启动按钮SB1
输出:Q0.0 ─ 电机M1
梯形图程序:
I0.0
────┤├──────────────────(Q0.0)──6.2 扫描过程详解
完整扫描周期过程:
时刻T0:用户按下SB1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【第N个扫描周期】(按钮还未被采样)
1. 内部处理
└─ 自检、通信处理
2. 输入采样
└─ 读取输入:I0.0 = 0(还是旧状态)
3. 程序执行
└─ I0.0(0) → Q0.0 = 0
4. 输出刷新
└─ Q0.0端子 = 0,电机不运行
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【第N+1个扫描周期】(按钮被采样到)
1. 内部处理
└─ 自检、通信处理
2. 输入采样 ★
└─ 读取输入:I0.0 = 1(采样到新状态)
3. 程序执行
└─ I0.0(1) → Q0.0 = 1
4. 输出刷新 ★
└─ Q0.0端子 = 1,电机开始运行
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━7. 立即输入/输出
7.1 概念
为了解决扫描周期带来的延迟问题,很多PLC提供了立即输入和立即输出指令。
7.2 立即输入
立即输入:不经过输入映像,直接读取输入端子
普通输入:I0.0 ──▶ 读取输入映像寄存器
立即输入:I0.0:P ──▶ 直接读取输入端子(西门子)
I0.0/I ──▶ 直接读取输入端子(三菱)7.3 立即输出
立即输出:不等待输出刷新,直接更新输出端子
普通输出:Q0.0 ──▶ 写入输出映像,等待刷新
立即输出:Q0.0:P ──▶ 立即更新输出端子(西门子)
Y0/I ──▶ 立即更新输出端子(三菱)7.4 使用注意事项
| 类型 | 优点 | 缺点 |
|---|---|---|
| 普通I/O | 系统稳定,抗干扰 | 有延迟 |
| 立即I/O | 响应快,无延迟 | 增加扫描时间,可能影响稳定性 |
建议:仅在对响应时间有严格要求时使用立即I/O。
本节小结
PLC工作原理要点:
┌────────────────────────────────────────────────────┐
│ 1. 循环扫描:PLC不断重复执行固定的操作步骤 │
│ │
│ 2. 四个阶段:内部处理→输入采样→程序执行→输出刷新 │
│ │
│ 3. 集中采样:输入信号在每个周期开始时统一读取 │
│ │
│ 4. 集中输出:输出信号在每个周期结束时统一更新 │
│ │
│ 5. 映像寄存器:程序操作的是映像,不是实际端子 │
│ │
│ 6. 扫描周期:完成一次完整扫描的时间(毫秒级) │
└────────────────────────────────────────────────────┘思考题
- 为什么PLC要采用循环扫描的工作方式?
- 如果一个输入信号的脉冲宽度小于一个扫描周期,会发生什么?
- 在同一个程序中,如果对同一个输出线圈赋值两次,最终输出是什么?
- 什么情况下需要使用立即输入/输出?