2. PLC基础回顾:PLC的工作原理、常见品牌与编程语言

各位同学,咱们今天聊聊PLC。说实话,PLC这东西看着不起眼,但它是整个SCADA系统的“手脚”。你SCADA系统再牛,数据采集指令发下去,PLC执行不了,一切都是白搭。

我刚开始做项目那会儿,总觉得PLC就是个黑盒子,能通电能跑程序就行。后来吃过几次亏才明白——不懂PLC的工作原理,你连故障都查不明白。好,咱们开始。

2.1 PLC的工作原理:扫描周期

PLC是怎么工作的?说白了,它不像咱们电脑的CPU那样一直跑程序。PLC是“一遍一遍地扫”,这个扫一遍的过程,就叫扫描周期

一个完整的扫描周期,分三步:

  1. 输入采样:PLC先把所有输入点的状态读进来,存到内存里。注意,是“一次性快照”。
  2. 程序执行:CPU根据刚才读到的输入状态,从上到下、从左到右执行用户程序。
  3. 输出刷新:把计算结果一次性送到输出模块,驱动外部设备。

核心要点: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的通讯协议,那才是真正的硬骨头。