西门子S7-1200 PLC编程入门:从开关到线圈,手把手教你理解常开常闭触点的本质
第一次接触PLC编程时,那些看似简单的"常开"、"常闭"符号背后,其实隐藏着工业控制最基础的逻辑哲学。作为自动化领域的"细胞级"概念,理解它们的本质远比记忆操作步骤重要得多。本文将带您从物理开关的具象世界出发,逐步深入到PLC编程的抽象逻辑层,最终掌握这些基础元件在西门子S7-1200中的真实运作机制。
1. 从物理开关到逻辑触点:重新定义"通"与"断"
在电气控制柜里,一个机械开关的物理状态无非两种:按下时接通电路,松开时断开电路。这种直观的物理现象,正是PLC编程中"常开触点"(NO)和"常闭触点"(NC)概念的起源。
常开触点的命名本身就揭示了它的本质:
- 常态下(未受激励)保持"开路"状态
- 受激励时(如线圈通电)才变为"闭合"
- 行为模式类似物理开关的"按下接通,松开断开"
而常闭触点则完全相反:
- 常态下保持"闭合"状态
- 受激励时才变为"开路"
- 相当于物理开关的"按下断开,松开接通"
在S7-1200的编程环境中,这两种触点的符号表示如下:
| 元件类型 | LAD符号 | SCL表达式 | 等效电路状态 |
|---|---|---|---|
| 常开触点 | ┃/┃ | %I0.0 | 未激励=开路 |
| 常闭触点 | ┃\┃ | NOT %I0.0 | 未激励=短路 |
提示:在硬件接线中,物理按钮的常开/常闭特性是固定的;而在PLC程序中,同一个输入点可以通过不同触点类型实现完全相反的逻辑效果。
2. 电流的虚拟路径:PLC程序执行的底层视角
PLC程序运行时,虽然没有了真实的电流流动,但CPU会严格按照"能流"(Power Flow)的概念来模拟电气回路的工作方式。理解这一点对编程调试至关重要。
当S7-1200扫描一个包含常开触点的梯级时:
- 检查触点对应存储位的状态
- 如果位值为1,则认为触点"闭合",允许能流通过
- 能流到达线圈时,相应存储位置1
对于常闭触点,逻辑正好相反:
- 检查触点对应存储位的状态
- 如果位值为0,则认为触点"闭合",允许能流通过
- 位值为1时反而"断开"能流
这种虚拟能流的典型应用场景:
Network 1: 启保停电路 LD I0.0 // 启动按钮(常开) OR M0.0 // 自锁触点 ANDN I0.1 // 停止按钮(常闭) = M0.0 // 电机线圈在这个经典电路中:
- I0.0采用常开逻辑:按下时导通
- I0.1采用常闭逻辑:松开时导通
- M0.0形成自锁回路
3. 地址映射的奥秘:为什么要把I改为M?
原始教程中特别强调要将变量地址从I改为M,这背后涉及PLC的硬件架构设计:
输入映像区(I区)的特性:
- 直接映射物理输入模块的状态
- 每个扫描周期开始时统一刷新
- 程序执行期间保持只读
内存位(M区)的优势:
- 可读可写的中间变量
- 不受输入刷新周期影响
- 仿真时可直接强制修改
在仿真测试时,使用M地址而非I地址的主要考虑:
- 灵活性:可以直接在监视表中修改值
- 稳定性:避免与硬件输入冲突
- 可观测性:状态变化更易跟踪
地址类型对比表:
| 特性 | I地址 | M地址 |
|---|---|---|
| 数据来源 | 物理输入模块 | 程序内部存储 |
| 写入权限 | 只读 | 可读写 |
| 刷新时机 | 扫描周期开始 | 即时生效 |
| 仿真支持 | 需要硬件模拟 | 直接强制修改 |
| 典型用途 | 真实设备信号 | 中间逻辑状态 |
4. 线圈:逻辑结果的承载者
在PLC编程中,线圈是梯级逻辑的最终执行者。不同于物理继电器线圈,PLC中的线圈实际上是对存储位的写操作。
S7-1200中的线圈类型:
普通输出线圈(=)
- 最基础的输出形式
- 能流到达时置位,否则复位
- 示例:
= Q0.0
置位线圈(S)
- 能流上升沿触发永久置位
- 需配合复位线圈使用
- 示例:
S M0.0
复位线圈(R)
- 能流上升沿触发永久复位
- 示例:
R M0.0
取反线圈(NOT)
- 输出与能流相反的状态
- 示例:
NOT M0.0
线圈使用时的常见问题及解决方案:
双线圈冲突:同一地址被多个梯级写入
- 解决方法:使用中间变量合并逻辑
扫描周期延迟:输出不能立即反馈
- 解决方法:合理规划程序结构
仿真异常:线圈状态不更新
- 检查步骤:编译→下载→运行→监视四步是否完整
5. 实战演练:构建一个完整的控制逻辑
让我们通过一个灯光控制的完整案例,串联所有知识点:
控制要求:
- 常开按钮按下时灯亮
- 常闭按钮按下时灯灭
- 灯光状态需保持直到相反操作
实现步骤:
变量定义:
"Start_Button" : Bool := M0.0; // 启动按钮(常开逻辑) "Stop_Button" : Bool := M0.1; // 停止按钮(常闭逻辑) "Light" : Bool := Q0.0; // 灯光输出梯形图程序:
Network 1: 灯光控制逻辑 LD "Start_Button" // 常开触点 S "Light" // 置位操作 Network 2: LD "Stop_Button" // 常闭触点 R "Light" // 复位操作仿真测试流程:
- 在监视表中修改M0.0=1(模拟按下启动按钮)
- 观察Q0.0变为1(灯亮)
- 修改M0.1=1(模拟按下停止按钮)
- 观察Q0.0变为0(灯灭)
注意:实际项目中停止按钮应使用常闭物理按钮配合常开程序触点,形成"断线保护"机制。这里为演示需要简化处理。
6. 进阶技巧:触点与线圈的创造性组合
掌握了基础用法后,可以通过巧妙组合实现复杂逻辑:
组合技巧1:启停互锁
Network 1: 电机正反转互锁 LD "Forward_PB" // 正转按钮 ANDN "Reverse_Run" // 反转运行互锁 = "Forward_Run" // 正转输出 LD "Reverse_PB" // 反转按钮 ANDN "Forward_Run" // 正转运行互锁 = "Reverse_Run" // 反转输出组合技巧2:脉冲发生器
Network 1: 1秒脉冲生成 LD "Clock_1Hz" // 系统时钟存储器 XOR "Pulse_Memory" // 异或操作 = "Output_Pulse" // 输出脉冲 = "Pulse_Memory" // 状态存储组合技巧3:多条件控制
Network 1: 三地控制一盏灯 LD "Switch_1" // 开关1 XOR "Switch_2" // 开关2 XOR "Switch_3" // 开关3 = "Light" // 灯光输出在实际项目中,这些基础元件的组合方式决定了控制系统的可靠性和灵活性。建议从简单电路开始,逐步增加复杂度,同时配合S7-1200的在线监视功能观察每个触点和线圈的状态变化,这种"可视化"的学习方式能快速建立对PLC运行机制的直觉理解。