第二章:PLC工作原理与扫描周期
大家好,我是老张。今天咱们聊聊PLC最核心的东西——它是怎么工作的。
很多刚入行的朋友问我:“PLC不就是个能编程的控制器吗?”嗯,这么说也没错。但你要真把它当普通电脑用,那可就大错特错了。
2.1 循环扫描工作方式
PLC的工作方式,说白了就是“一遍又一遍地重复做三件事”。
我习惯把它比作一个保安巡逻:
- 先看看各个门口有没有异常(输入采样)
- 然后根据看到的情况,决定要不要处理(程序执行)
- 最后把处理结果告诉各个岗位(输出刷新)
这个循环,我们叫它“扫描周期”。
关键点:PLC不是同时处理所有信号的。它是一步一步来的。这一点非常重要,很多故障都出在这里。
2.2 三个阶段详解
第一阶段:输入采样
这个阶段,PLC会“拍照”一样,把所有的输入信号状态都记录下来。
注意了,它只拍一次。拍完之后,整个扫描周期内都不会再去看输入信号了。
我在项目中遇到过这样一个情况:一个急停按钮,按下时间太短,刚好错过了采样阶段。结果程序没反应。后来我建议客户把按钮按下时间延长到50ms以上,问题就解决了。
我的习惯:对于关键信号,我会在程序里加一个“信号保持”逻辑。确保PLC一定能采到。
第二阶段:程序执行
这个阶段,PLC开始“动脑子”了。它从上到下、从左到右,一条一条地执行你的程序。
这里有个坑,我踩过。程序里如果有跳转指令,执行顺序会变。你想想看,如果跳转指令用得不好,程序逻辑可能完全乱掉。
我曾经在一个项目中,因为跳转指令用得太随意,导致一个输出点反复通断。查了两天才找到原因。从那以后,我写程序都尽量用顺序结构,少用跳转。
警告:程序执行阶段,PLC只处理“输入映像区”的数据。它不会去读实际的输入信号。所以,输入信号的变化,要等到下一个扫描周期才能被程序感知。
第三阶段:输出刷新
程序执行完了,PLC会把结果从“输出映像区”一次性送到实际的输出端口。
这个阶段很快,但很重要。如果输出刷新失败,程序跑得再好也没用。
我记得有一次,一个客户的PLC输出模块坏了,但CPU还在正常运行。程序逻辑完全正确,就是没输出。查了半天才发现是输出模块的问题。
2.3 扫描周期的影响因素
扫描周期不是固定的。它受很多因素影响:
| 影响因素 | 影响程度 | 我的建议 |
|---|---|---|
| 程序大小 | 大 | 能用功能块就别写长程序 |
| 指令类型 | 中 | 浮点运算比整数运算慢很多 |
| I/O点数 | 中 | 别用不用的模块也挂在总线上 |
| 通信任务 | 大 | 通信频率别设太高 |
你想想看,如果程序里有大量的浮点运算,再加上频繁的通信任务,扫描周期可能从几毫秒变成几十毫秒。对于高速控制来说,这简直是灾难。
2.4 实时性概念
实时性,说白了就是“PLC能不能及时响应”。
很多人以为PLC是实时的。嗯,它确实是,但它的实时性是有条件的。
举个例子:一个传感器信号来了,PLC最快也要等到下一个扫描周期才能处理。如果扫描周期是10ms,那响应时间至少是10ms。
对于普通控制,10ms足够了。但对于高速运动控制,10ms可能就太长了。
核心观点:PLC的实时性,取决于扫描周期。扫描周期越短,实时性越好。但扫描周期不能无限短,因为程序需要时间执行。
我个人的经验是:
- 普通逻辑控制:扫描周期10-50ms,完全够用
- 运动控制:扫描周期1-5ms,需要选高速PLC
- 高速计数:扫描周期0.1-1ms,得用专用模块
嗯,这里要注意:别为了追求实时性,把扫描周期压得太短。程序跑不完,PLC会报错的。
2.5 避坑指南
最后,分享几个我踩过的坑:
- 输入信号抖动:我曾经遇到一个传感器,信号不稳定,导致PLC误动作。后来加了滤波,问题解决。
- 输出刷新延迟:有一次,程序里用了太多定时器,导致扫描周期变长。输出响应慢了半拍。优化程序后恢复正常。
- 通信干扰:PLC和变频器通信,频率设得太高,导致扫描周期不稳定。降低通信频率后,系统稳定了。
记住一句话:PLC不是万能的。它有自己的工作节奏。你顺着它的节奏来,它就能稳定运行。你非要跟它对着干,那故障就来了。
好了,这一章就到这里。下一章我们聊聊PLC的硬件结构,看看那些模块到底是怎么配合工作的。