2. PLC基础回顾:PLC的工作原理、常见品牌与编程语言
各位同学,咱们今天聊聊PLC。说实话,PLC这东西看着不起眼,但它是整个SCADA系统的“手脚”。你SCADA系统再牛,数据采集指令发下去,PLC执行不了,一切都是白搭。
我刚开始做项目那会儿,总觉得PLC就是个黑盒子,能通电能跑程序就行。后来吃过几次亏才明白——不懂PLC的工作原理,你连故障都查不明白。好,咱们开始。
2.1 PLC的工作原理:扫描周期
PLC是怎么工作的?说白了,它不像咱们电脑的CPU那样一直跑程序。PLC是“一遍一遍地扫”,这个扫一遍的过程,就叫扫描周期。
一个完整的扫描周期,分三步:
- 输入采样:PLC先把所有输入点的状态读进来,存到内存里。注意,是“一次性快照”。
- 程序执行:CPU根据刚才读到的输入状态,从上到下、从左到右执行用户程序。
- 输出刷新:把计算结果一次性送到输出模块,驱动外部设备。
核心要点:PLC在程序执行阶段,即使外部输入变了,它也不理你。必须等到下一个扫描周期的输入采样阶段,才会更新输入映像区。
为什么会这样?我举个例子。你想想看,如果PLC一边执行程序一边读输入,那程序跑到一半,输入变了,逻辑就乱套了。所以PLC采用这种“隔离”机制,保证逻辑的确定性。
扫描周期的长短,取决于程序大小和CPU速度。小项目可能只有几毫秒,大项目可能几十毫秒。嗯,这里要注意——如果你的程序里有大量的数学运算或者通讯指令,扫描周期会明显变长。
避坑指南:我曾经在一个项目中,用PLC做PID运算,结果扫描周期从5ms飙到了80ms。现场设备直接“抽风”。后来我把PID运算放到单独的循环中断里,才解决问题。记住:不要在主程序里做耗时操作。
2.2 常见的PLC品牌
市面上的PLC品牌很多,但咱们做SCADA系统集成,主要接触这三个:
| 品牌 | 代表系列 | 编程软件 | 特点 |
|---|---|---|---|
| 西门子 | S7-200 SMART、S7-1200、S7-1500 | TIA Portal(博途) | 欧洲市场霸主,通讯协议丰富(Profinet、Profibus) |
| 罗克韦尔 | MicroLogix、CompactLogix、ControlLogix | Studio 5000 | 北美市场老大,EtherNet/IP协议是标配 |
| 三菱 | FX系列、L系列、Q系列 | GX Works3 / GX Developer | 性价比高,日系设备配套首选 |
我个人习惯是:做国内中小项目,西门子S7-1200用得最多。博途软件虽然吃内存,但生态好,找资料方便。罗克韦尔的东西,说实话,价格贵,但稳定性确实好。我在一个汽车厂项目中用过ControlLogix,连续跑了三年没重启过。
三菱PLC呢?我在包装机械行业见得最多。便宜、皮实,但通讯协议相对封闭,做SCADA对接时稍微麻烦点。
个人经验:选PLC品牌,别光看性能。你得看甲方现有的设备用什么、现场工程师熟悉什么。我曾经硬推西门子,结果甲方电工只会三菱,最后项目验收时天天被叫去改程序。嗯,这个教训挺深刻的。
2.3 PLC的编程语言
IEC 61131-3标准定义了五种PLC编程语言。咱们做SCADA系统,主要接触两种:梯形图和结构化文本。
2.3.1 梯形图(LD)
梯形图是PLC的“母语”。它长得像继电器电路图,电气工程师一看就懂。说白了,就是把继电器控制电路搬到了电脑里。
举个例子,一个简单的启保停电路:
启动按钮 停止按钮 接触器
|--| |----|/|----( )--|
| 接触器 |
|--| |----------------|
梯形图的优点是直观。现场电工拿着图纸就能排查问题。我建议初学者先从梯形图入手,把逻辑关系搞明白。
但梯形图也有缺点——处理复杂数学运算、字符串操作时,写起来非常痛苦。你想想看,用梯形图写一个PID算法,那得画多少行?
2.3.2 结构化文本(ST)
结构化文本长得像Pascal或者C语言。它用文本方式描述逻辑,适合处理复杂算法。
同样的启保停逻辑,用ST写是这样的:
IF 启动按钮 AND NOT 停止按钮 THEN
接触器 := TRUE;
ELSIF 停止按钮 THEN
接触器 := FALSE;
END_IF;
你看,是不是清晰多了?我个人习惯是:逻辑控制用梯形图,数据处理用ST。两者结合,效率最高。
实战建议:在SCADA系统中,你经常需要从PLC读取大量数据做分析。这时候,用ST写数据打包、校验、通讯协议解析,比梯形图快十倍。我在一个水处理项目中,用ST写了一个Modbus TCP客户端,200行代码搞定。如果用梯形图,估计得画上千行。
2.3.3 其他编程语言
除了梯形图和ST,还有三种:
- 功能块图(FBD):像画电路原理图,适合信号处理。
- 指令表(IL):类似汇编语言,现在用得少了。
- 顺序功能图(SFC):适合步进控制,比如自动化流水线。
这些语言各有用途,但咱们做SCADA系统集成,掌握梯形图和ST就够用了。其他的,遇到再学也不迟。
避坑指南:我曾经接手一个项目,前任工程师用指令表写了三千行程序。没有注释,没有变量名。我看了三天,最后决定全部重写。所以,写PLC程序时,变量命名规范、加注释、用结构化编程——这些好习惯能救你的命。
好,PLC基础就回顾到这里。下一章咱们开始讲PLC与SCADA的通讯协议,那才是真正的硬骨头。