第3章:从继电器到PLC的思维转变:硬接线逻辑 vs 软逻辑、并行执行 vs 串行扫描
好,咱们今天聊点真正核心的东西。
很多刚接触PLC的朋友,尤其是从继电器电路转过来的,最容易卡在哪儿?就是思维没转过来。你拿着继电器那套逻辑去写PLC程序,不是不行,但会很别扭,而且容易出问题。
我当年刚入行时也犯过这个错。记得有一次调试一个传送带控制,我用继电器电路的习惯画梯形图,结果现场一运行,电机乱跳。查了半天,最后发现是扫描顺序的问题。嗯,从那以后我才真正理解了什么叫「软逻辑」。
3.1 硬接线逻辑 vs 软逻辑
先说说硬接线逻辑。继电器电路里,每个触点、每个线圈都是物理存在的。你接一根线,电流就流过去了。逻辑关系是靠「线」来决定的——线接对了,逻辑就对;线接错了,就得重新焊。
说白了,硬接线逻辑是「一次成型,改起来要命」。
硬接线逻辑的特点:
- 物理触点:有寿命、有接触电阻、会发热
- 并行执行:所有继电器同时动作
- 修改困难:要动螺丝刀、焊枪
- 故障排查:万用表、示波器伺候
那软逻辑呢?PLC里的逻辑是存在内存里的。一个触点不是真的触点,是一个内存位(bit)。线圈也不是真的线圈,是另一个内存位。逻辑关系靠程序指令来建立。
我习惯这么跟学员讲:硬接线是「铜导线」,软逻辑是「数据流」。铜导线里流的是电流,数据流里流的是0和1。
软逻辑的特点:
- 虚拟触点:无限寿命、无接触电阻
- 串行扫描:CPU逐条执行指令
- 修改方便:改几行代码就完事
- 故障排查:监控软件、在线调试
举个例子。一个简单的自锁电路:
// 继电器电路(硬接线)
// 启动按钮(常开)并联自锁触点,串联停止按钮(常闭),驱动接触器线圈
// PLC梯形图(软逻辑)
// 启动按钮 I0.0 并联 输出 Q0.0,串联 停止按钮 I0.1,驱动 Q0.0
Network 1:
I0.0 I0.1 Q0.0
| | |/| ( )
| Q0.0 | |
| | | |
看起来差不多对吧?但执行方式完全不同。继电器电路里,按下启动按钮的瞬间,电流同时流过所有并联支路。而PLC里,CPU先读I0.0,再读I0.1,最后写Q0.0——一步一步来。
个人经验:我建议初学者在写梯形图时,脑子里不要想着「电流」,要想「数据流动」。电流是连续的,数据是离散的。这个思维转变很关键。
3.2 并行执行 vs 串行扫描
这是最容易被忽视,但也是最容易踩坑的地方。
继电器电路:真正的并行
你想想看,一个继电器柜里,几十个继电器同时通电、同时动作。A继电器吸合的同时,B继电器也在吸合。它们之间没有先后顺序,完全是并行的。这就是硬接线的天然优势——速度快,响应实时。
PLC程序:伪并行,真串行
PLC的CPU只有一个(或者几个核心),它没法同时干所有事。它只能一条一条地执行指令。从第一条到最后一条,扫完一遍算一个周期。这叫「扫描周期」。
为什么会这样?因为CPU本质上就是个「高速傻瓜」——它只会按顺序读指令、执行指令、写结果。只不过它跑得很快,快到让你感觉像是同时发生的。
我曾经踩过的坑:有一次做包装线项目,我用两个定时器做顺序控制。T1计时到后启动T2,T2计时到后复位T1。在继电器电路里这完全没问题。但在PLC里,因为扫描顺序,T1复位后T2还没来得及输出就被清零了。结果就是T2永远不动作。后来我把T2的输出放在T1复位指令之前,才解决。
来看一个典型的对比:
| 特性 | 继电器电路(并行) | PLC程序(串行扫描) |
|---|---|---|
| 执行方式 | 所有元件同时动作 | 逐条指令顺序执行 |
| 响应时间 | 微秒级(取决于机械动作) | 毫秒级(取决于扫描周期) |
| 逻辑依赖 | 无顺序依赖 | 有顺序依赖(后指令依赖前指令结果) |
| 修改影响 | 改一根线可能影响全局 | 改一行代码只影响后续逻辑 |
| 故障模式 | 触点粘连、线圈烧毁 | 程序跑飞、看门狗超时 |
3.3 思维转变的关键点
说了这么多,到底怎么转?我总结了几条:
- 别把梯形图当电路图看。梯形图只是表达方式,本质是程序。你要关注的是数据流向,不是电流流向。
- 理解扫描周期。你的程序不是瞬间完成的,它需要时间。这个时间虽然短(通常10-100ms),但足够让逻辑出问题。
- 注意输出刷新时机。PLC的输出不是立即生效的,而是在扫描周期结束时统一刷新。这意味着你在程序中间修改了输出,要到下一个周期才生效。
- 善用中间变量。不要把所有逻辑都堆在输出线圈上。多用M寄存器(中间位)做逻辑中转,这样程序更清晰,也更容易调试。
避坑指南:我曾经见过一个工程师,把整个设备的逻辑写在一个Network里,密密麻麻的触点和线圈。结果调试时改一个触点,整个逻辑都变了。我建议你:一个Network只做一个功能。启动逻辑一个Network,停止逻辑一个Network,报警逻辑一个Network。这样既好读,又好改。
3.4 实际案例:电机启停控制
咱们用个实际案例来收尾。一个简单的电机启停控制:
继电器电路:
- 启动按钮(常开)→ 并联自锁触点 → 串联热继电器(常闭)→ 驱动接触器
- 停止按钮(常闭)→ 串联在回路中
- 所有元件同时动作,按下启动按钮瞬间,接触器吸合
PLC程序:
Network 1: 启动逻辑
I0.0(启动) I0.1(停止) Q0.0(电机)
| | |/| ( )
| Q0.0 | |
| | | |
Network 2: 过载保护
I0.2(热继) Q0.0
|/| (R)
注意看区别:
- 继电器电路里,热继电器是串联在主回路中的,一旦过载,直接切断接触器线圈电源
- PLC程序里,热继电器的信号要单独处理。我用了一个复位指令(R)来强制停止电机
为什么要这么写?因为PLC的扫描顺序决定了:如果你把热继电器触点串在启动回路里,它只能在每个扫描周期开始时检测一次。万一在扫描周期中间发生过载,电机可能不会立即停止。所以,我习惯把保护逻辑单独拿出来,用复位指令强制输出。
重要提醒:安全相关的保护(如急停、光幕、热继),我建议还是用硬接线。PLC再可靠也是电子产品,万一CPU死机,软逻辑就全废了。硬接线是最后一道防线,不能省。
好了,这一章的内容就到这儿。说白了,从继电器到PLC,你最大的敌人不是技术,是习惯。把「并行思维」改成「串行思维」,把「电流思维」改成「数据思维」,你的PLC水平会上一个台阶。
下一章咱们聊聊PLC的硬件选型和I/O分配,这个也是很多新手容易懵的地方。