很多刚接触PLC的朋友都会问同一个问题:PLC到底有几种编程语言?哪种最好学?工厂里老师傅们都在用哪种?说实话,这个问题我被人问了不下几百遍,网上答案也是五花八门,有人说学梯形图就行,有人说结构化文本才是未来,还有人把指令表吹得神乎其神。
我干了十多年设备自动化和PLC编程,从维修电工一路转过来,也带过不少新人,今天就一次性把这五种语言掰开揉碎讲清楚。先说结论:国际电工委员会制定的IEC 61131-3标准里,把PLC编程语言统一归纳为五种——梯形图、功能块图、结构化文本、顺序功能图和指令表。它们没有绝对的优劣,只有适不适合你的使用场景、适不适合你脑子里的思维方式。
这五种语言分别解决什么问题、哪种上手最快、工厂现场真实使用格局是什么样、以及不同基础的人该怎么规划学习路径,文章里都会讲到。不管你是刚入行的电工、自动化专业的应届生,还是想转行做设备维护和调试的朋友,看完这篇就应该能定下自己的学习方向了。
1. 先搞懂底层框架:PLC编程语言不是各厂商随便定的
1.1 标准从哪来的,为什么值得学
九十年代之前,PLC编程语言基本是各厂商各玩各的,一个品牌的程序换到另一个品牌上,不但语法对不上,连基本概念都要推倒重来。工程师跳个槽、换个设备品牌,就跟重新学一门手艺差不多,整个行业效率很低。
后来国际电工委员会牵头搞了一个标准,把PLC编程语言统一在一个框架里,这就是IEC 61131-3。这个标准最厉害的地方,不是规定“你必须用哪种语言”,而是把“语言各自该干什么事”定清楚了,同时定义了变量、数据类型、函数块这些基础概念的统一模型。所以今天你会发现,主流PLC品牌的编程软件虽然界面风格不同,但核心概念大同小异,变量怎么声明、定时器怎么用、程序怎么组织,思路都一致。
这也是我为什么建议新人别在“选哪个品牌”上纠结太久——标准在那儿摆着,先掌握通用原理,具体品牌的操作只是换个壳的事。
1.2 五种语言本质上是三大类思维
很多人一听到“五种语言”就头大,觉得要学五样东西。其实不用怕,标准里这五种语言可以归成三类:
一类是图形化语言,靠画图来表达逻辑,代表是梯形图和功能块图,它们符合人眼对“信号流”的直觉理解,调试的时候看到哪里灯亮了、哪里线通了,脑子里很容易形成画面。
一类是文本化语言,靠写代码来表达逻辑,代表是结构化文本和指令表。这类语言接近计算机高级语言,擅长处理复杂的数学运算、数据通信、配方管理等逻辑,但上手门槛相对高一些,不像看图那么直观。
还有一类是顺序功能图,它比较特殊,严格来说它不是用来表达单条逻辑的,而是用来组织整个程序流程的。就相当于拍电影时的分镜头脚本,每个镜头里具体怎么演,还得靠前面那几种语言来填充。
搞清楚这个分类,你就明白了一件事:不是每种语言都要精通,但你要知道它们各自的定位,将来在项目里该在什么场合用哪个工具。
2. 五种语言逐个说透:它们各自解决什么问题
2.1 梯形图(LD):像继电器电路一样画图
梯形图是所有PLC语言里“长相”最亲切的一种。它保留了继电器控制系统的画法:左边一条母线,右边一条母线,中间是触点和线圈,电流从左往右“流”。你用常开触点、常闭触点、线圈、定时器、计数器这些元素,就能拼出完整的控制逻辑。
电气出身的人第一次看到梯形图,基本是零门槛上手,因为他本来就会看继电器二次回路图。电机启停、正反转、互锁、报警、阀控这些经典的开关量控制场景,梯形图就是绝对主力。
梯形图的优点是很直观。程序出错时,可以一屏一屏地看,哪个触点没通、哪个线圈没得电,顺着逻辑一捋就能找到问题。设备维护的电工师傅也看得懂,不用专门培训就能参与排查故障。
缺点也同样明显:碰上复杂的数学运算、字符串处理、数据结构,梯形图写起来非常吃力。硬要用梯形图写PID算法或者配方管理,代码量会膨胀得很可怕,改起来也让人崩溃。所以梯形图擅长的是“逻辑控制”,不擅长的是“数据处理”。
2.2 功能块图(FBD):搭积木式控制逻辑
功能块图和梯形图一样是图形化编程,但它的表达方式不是“电流流动”,而是“数据流动”。你在画布上拖出一个功能块,比如与门、或门、定时器、计数器、PID控制器,然后把它们之间用连线接起来,信号从左边进去、处理完从右边出来,整个程序就像一张数据流图。
功能块图在过程控制领域用得非常多,像化工、水处理、食品饮料这类以模拟量为主的行业,工程师喜欢用功能块图是因为它模块化程度高,一个PID调节块、一个模拟量处理块,拖进来接好线就能用,复用性极强,程序结构也非常清晰。
它的短板在于:当逻辑关系特别复杂、功能块特别多的时候,画布上的连线会密密麻麻,翻起图来像在走迷宫。而且它要求你先理解“块”的含义,如果对函数、输入输出参数这些概念不熟,上手会有点懵。
2.3 结构化文本(ST):会写代码就学得飞快
结构化文本是五种语言里最接近计算机高级语言的一种,语法有点像Pascal,支持变量声明、IF条件判断、CASE分支、FOR循环、数组和函数。你可以像写普通程序一样写PLC程序,而不是在一张电路图里比划。
过去很多老工程师不愿意碰结构化文本,觉得不如梯形图直观。但最近这些年情况在变,尤其是设备越来越智能,运动控制、数据采集、远程通信、配方管理这类需求越来越多,纯逻辑控制已经撑不起整个项目,结构化文本的地位明显在上升。
结构化文本的优势,是处理复杂运算和批量数据处理时极其高效。比如你要对几十个温度传感器做同样的报警判断、要做一个多段速曲线计算、要解析通信报文里的数据,用梯形图写能写到怀疑人生,用结构化文本几行代码就搞定了。
当然它也有门槛:你要是完全没写过代码,光理解IF、FOR、变量作用域这些东西就得花点时间。不过门槛也就是一个星期的量,迈过去之后,你会觉得它的表达自由度和效率是真的香。
2.4 顺序功能图(SFC):把流程画成状态机
顺序功能图跟前面几种不太一样,它不纠结“一个触点一个线圈”,而是从宏观视角描述“设备先做什么、再做什么”。程序被拆成一个个“步”,步与步之间有“转换条件”,条件满足了就往下走一步。
举个最简单的例子,一个自动装配设备:步1是等待启动按钮,步2是夹紧工件,步3是打螺丝,步4是松开工件,然后回到步1等待下一个循环。你把这种流程画出来,就是一张顺序功能图,谁看了都能一眼看懂设备在干什么。
顺序功能图最大的优势是程序结构清晰,尤其是工序多、分支多、有并行流程的设备。比如一条装配线上多个工位同时干活,用顺序功能图来组织再合适不过。报错时也能快速定位:卡在哪一步、哪个转换条件没满足,一目了然。
但要注意一点,顺序功能图本身是框架,每个“步”里面具体做什么动作,还得用梯形图、结构化文本这些语言来写。它不是替代品,而是程序的骨架。
2.5 指令表(IL):几乎退出历史的“汇编”
指令表这种语言,用起来就像在写汇编,一条指令一行,没有图形界面,纯粹靠指令助记符堆出程序逻辑。它是早期PLC编程方式的历史遗留,那时候屏幕都不一定有现在这么方便,人们只能用文本指令编程。
现在新项目里基本没人主动选指令表了,它的功能几乎完全被结构化文本覆盖,而且结构化文本比它更易读、更好维护。你顶多在老设备的维护现场还能见到一些指令表写的程序,或者在某些品牌的特定通信场景里偶尔碰一下。
所以对新人我的建议很简单:指令表了解一下概念就够,认得出它是什么东西、知道它已经被结构化文本取代了,没必要花时间去学。
| 语言 | 类型 | 擅长场景 | 门槛 | 现状 |
|---|---|---|---|---|
| 梯形图 | 图形化 | 开关量逻辑控制 | 低 | 最广泛 |
| 功能块图 | 图形化 | 模拟量/过程控制 | 中 | 过程行业主流 |
| 结构化文本 | 文本化 | 复杂运算/数据处理/运动控制 | 中高 | 快速上升 |
| 顺序功能图 | 框架化 | 顺序/流程式控制 | 中 | 大项目常用 |
| 指令表 | 文本化 | 历史遗留 | 高 | 基本淘汰 |
3. 哪种最好学?先问自己是哪种人
3.1 有电工基础的人:梯形图是王者的必经之路
如果你是做维修电工出身,天天跟接触器、继电器、热继电器打交道,二次回路图看得比小说还熟,那当然是先学梯形图,没有第二个更好的答案。
梯形图本质上就是把物理继电器电路搬进了PLC里,虽然触点变成了“软触点”、线圈变成了“软线圈”,但逻辑思维一脉相承。启动按钮并联一个自锁触点实现保持,停止按钮串常闭点实现断开,这种电路习惯直接平移过去就能用。
而且你还有一个天然优势:调试设备时,电气师傅能做的事你都能做。你懂现场接线,又懂程序逻辑,排查起问题来比只会写代码的人快得多。要是在这个基础上再把结构化文本学了,那就真的是“能文能武”,在职场上的竞争力直接拉满。
3.2 计算机或软件背景的人:建议直接攻结构化文本
反过来,如果你以前是做软件开发、写过Java或者Python的,那我劝你别一开始就死磕梯形图。你打开梯形图软件,看到满屏的触点和线圈,可能反而觉得不习惯,因为你的思维习惯是变量、函数、逻辑表达式,而不是电路图。
结构化文本才是你的主场。它的变量、循环、条件判断、函数调用,跟你熟知的编程范式高度接近,学起来比一般电气背景的人更快。你甚至可以跳过梯形图那一段,先用结构化文本把逻辑写明白,遇到要联动梯形图的场景再去补课,也来得及。
不过要提醒你一句:做PLC跟做纯软件不一样,最终控制的是物理世界的设备。你写的每一行代码,都会转化为某个电机的转动、某个气缸的伸出、某个阀门的开关。所以哪怕你再熟悉写代码,也一定要补一补电气基础知识,搞清楚输入输出接线、传感器信号类型、继电器回路,否则很容易写出“逻辑完美但现场根本没法用”的程序。
3.3 没基础的小白:先学梯形图稳住信心,再过渡结构化文本
完全没有电气基础、也没写过代码的小白,我给出的路线最明确:第一站必须是梯形图。
理由是教材最多、老师都在教、案例最丰富。你随便搜一段PLC入门教程,十有八九是从梯形图开始的。走在人群中,你遇到问题找人请教也最容易——因为大部分一线工程师都是从梯形图走过来的,你的问题他们都能接住。
等你用梯形图把电机启停、定时控制、计数器、报警这些基本功练熟了,大概一两个月时间,对PLC的运行机制有了体感,再开始学结构化文本。到那个时候你已经有变量、有指令、有程序组织的概念了,结构化文本的语法对你来说就不算什么大坎。
最忌讳的路子,是一上来就纠结到底学哪个,东看看西看看,学三天梯形图又觉得结构化文本高级转头去学,最后一门都没学扎实。选定一条路走一个月,比犹豫三个月强得多。
3.4 避坑心得:别在“最好学”上纠结太久
我后来想明白一个事,所谓“哪种最好学”是个伪命题。真正的关键不是语言本身,而是你大脑里已有的思维模型跟哪种语言更匹配。
电工习惯“电流通断”的连锁反应,梯形图就最好学;码农习惯“变量与逻辑判断”,结构化文本就最好学;做设备维护的人经常要跟厂家和电工打交道,梯形图能让你跟现场无障碍沟通,它对你来说就是最好的。
所以你最该做的不是反复比较,而是坦诚地问自己:我是什么背景?我将来最可能在什么环境里干活?然后直接上手。
4. 工厂里到底哪种语言用得最多?
4.1 不同行业的使用格局
这个问题如果只看大而化之的答案,很多人会直接告诉你“梯形图用得最多”。这话大方向没错,但实际使用格局比这个细致得多,分行业看会有明显差异。
标准单机设备制造领域,比如包装机、组装机、切割机、普通专机,梯形图是绝对主力。这些设备以开关量控制为主,逻辑量多但算法少,现场维护的电工师傅也需要看程序,梯形图自然就成了团队之间的“通用语言”。
汽车产线、大型自动化装配线这类大项目,结构化文本的使用比例明显在上升。因为产线动辄几百上千个工位,涉及大量数据采集、追溯管理、机器人通信、参数下发,纯梯形图处理这些会非常痛苦,项目工程师通常会用结构化文本做数据层和控制层,梯形图做底层的逻辑执行。
过程控制行业,像化工、水处理、制药、食品饮料,功能块图和结构化文本是主流。因为这类场景模拟量特别多,PID调节、流量控制、温度控制是家常便饭,功能块图拖一个PID块接好参数就能调,效率远高于梯形图一行行写。
小型PLC领域,比如一些简单的传感器级控制、单体小设备,梯形图仍然是默认选择。因为程序量小,不需要上复杂工具,梯形图写起来也最快。
4.2 为什么梯形图至今仍是“共同语言”
你可能会有疑问:既然结构化文本这么强,功能块图在过程行业这么顺,为什么大家提到PLC编程还是首先想到梯形图?
答案藏在设备生命周期里。一个设备的程序,不是工程师写完就结束了,它还要被使用方维护十年甚至更久。使用方的电气维护人员,大部分是电工出身,梯形图是他们唯一能看懂的PLC程序。如果项目组用纯结构化文本写了一个设备程序,交付之后维护人员大概率只能干瞪眼,供应商那边也会很头疼。
所以很多成熟的项目团队在选型时会刻意保守:能写梯形图就用梯形图,除非逻辑实在复杂到梯形图撑不住,才局部引入结构化文本。这跟技术能力没关系,是工程现实决定的。
还有一点是调试习惯问题。梯形图调试的时候,你可以打开在线监视,看着触点的颜色变化,像“看电路”一样找逻辑断点;程序跑飞了,你能顺着母线逐步检查,这种直观体验是文本代码给不了的。工程师也是人,对自己压力最小、最不容易出错的方式,自然会被优先选择。
4.3 一个项目里混用五种语言是真实现状
很多人以为一个项目只能选一种语言,其实不然。现实中大型项目的程序,往往是几种语言混着用的。
最常见的组合是:程序框架用顺序功能图搭,把整个设备流程分成若干步,结构一目了然;每个步内部的动作逻辑用梯形图写,保证逻辑直观;碰到复杂的数据处理、模拟量计算、配方管理,就写结构化文本的功能块,再被梯形图或者功能块图调用;过程控制里的PID调节,直接拖一个功能块图块来用。
这种混用方式恰好体现了IEC标准的设计初衷:每种语言都有自己的用武之地,重要的是在正确的地方用正确的工具。你要是在学习阶段就把五种语言都见过、能认出来、知道各自的适用范围,去看复杂的项目程序时就完全不会慌,反而会觉得“哦,原来这块用梯形图是因为……”。
5. 从零开始的PLC学习路径与实操建议
5.1 工具准备:硬件和软件怎么配
工欲善其事必先利其器。学PLC不需要你砸重金买一堆高大上的设备,但不代表光靠脑子能学会。动手练是唯一的路,所以我建议至少准备一套入门级的硬件。
预算紧张的,可以先在电脑上装编程软件,用软件自带的仿真功能练习程序编写。现在各大主流品牌的编程环境基本都有免费版本,功能足够学习用,模拟运行一样能看到输入输出的通断变化。缺点是没有真实接线环节,对输入输出电路的感知会差一些。
预算允许的,强烈建议买一个入门级小型PLC学习套件,带几个按钮、指示灯、传感器,自己动手接线、写程序、下载调试。当你亲眼看到按下按钮、程序里的触点状态翻转、输出指示灯亮起的那一刻,很多概念就不需要背了,你会真正理解“输入采样—程序执行—输出刷新”这些课本词汇在现实中长什么样。
品牌选哪个?还是那句话,别纠结。找市面上教程最多、身边人用得最多的那一两个品牌,随便选一个开始就行。原理通用了,换品牌只是换个界面和指令名。
5.2 三个必练的入门实操案例
案例一,梯形图入门必练的“电机启保停”。这是PLC界的“Hello World”。你要实现的动作是:按下启动按钮,电机启动并保持运行;按下停止按钮,电机停止。程序里启动按钮用常开触点,线圈并联一个自身的常开触点做自锁,停止按钮用常闭触点串联在回路里。练熟这个,你就掌握了自锁、互锁这两个最核心的电路思维,后面绝大多数的逻辑控制都是在这个基础上延伸的。
案例二,用结构化文本写模拟量线性换算。比如你的传感器输出4到20毫安电流,对应温度0到100摄氏度,PLC采集到的原始整数值需要换算成实际温度。用结构化文本写起来非常清晰:先定义两个变量,一个存原始值,一个存换算结果,然后套用线性换算公式,再做一下上限和下限的钳制判断。这个过程虽然简单,但你把变量、赋值、判断语句全都过了一遍,结构化文本的基本功就算打上了。
案例三,用顺序功能图写一个三段流水线流程。假设设备有三个工位,要求按下启动后先执行工位一、再执行工位二、最后执行工位三,每步都有完成条件,全部完成后回到初始状态。你用顺序功能图把步和转换条件画出来,就能感受到这种语言在组织复杂流程时有多清爽。
5.3 学习节奏怎么安排
我给一个比较稳的学习时间规划,适合每天能抽出两小时左右的人。
第一个月专注梯形图,每周盯住一个方向:第一周搞懂输入输出、常开常闭、线圈、基本指令;第二周练定时器、计数器;第三周做电机启保停、正反转、星三角启动这些经典案例;第四周开始接触一些小的综合程序,比如闪烁报警、顺序启动。
第二个月开始切入结构化文本。前两周把变量、IF、CASE、FOR这些基本语法过一遍,后两周做几个跟梯形图混用的练习,比如用梯形图做启动逻辑、用结构化文本做数据处理。
这个节奏走完,你就能具备独立编写小型项目程序的能力了。剩下的事情就是多实践、多踩坑,遇到不会的再针对性补课。
6. 常见问题排查与避坑实录
6.1 常开常闭总是搞混怎么办
新手最常犯的错误,就是把常开触点当成常闭用,或者理解反了。这里我给你一个百试不爽的记忆方法:常开触点,就是“平时不通、按下去才通”的触点;常闭触点,就是“平时通着、按下去才断开”的触点。说白了,“常”字说的是“在没有外力作用时的状态”。
你在梯形图里看到停止按钮用的是常闭触点,反应的是“设备正常时停止回路是通的,按下去断开,实现停止”。如果程序跑起来发现启动不了,第一件事就是检查停止按钮的触点类型有没有放反。这个问题我在新人身上见过无数次,每次都让他在纸上画一遍按钮动作前后的触点状态图,画两遍基本就记住了。
6.2 定时器为什么不准
有人用定时器做一个灯光闪烁程序,发现实际闪烁周期跟设定的差了不少,跑来问我是不是PLC定时器坏了。大多数情况下不是坏了,而是没理解PLC的扫描周期机制。
PLC的程序是循环执行的,从第一条扫描到最后一条,再回到开头重新执行,整个过程叫一个扫描周期。定时器的计时不是走一个独立时钟,而是靠“每次程序扫描到这个定时器指令时刷新一次”来实现的,所以定时器精度天然受扫描周期影响,不是实时计时的。
还有一类累计型定时器,它的线圈一旦得电就开始累计,但如果你把它放在程序的某些位置,刷新时机不同会导致计时结果有偏差。用定时器做精度要求不高的延时控制完全没问题,但你要是拿它做高精度的时间统计,就有点勉强了。这类问题我建议你在做项目之前就想清楚精度需求,不要在调试时才发现。
6.3 同一个输出线圈千万不要重复输出
梯形图编程里有一个坑,新手特别容易踩:同一个输出线圈,在程序里写了两次。比如你对Y0这个输出既在程序段A里用了,又在程序段B里也用了,以为程序会自动把两个条件“或”起来。
实际上PLC扫描到后面的指令时,会覆盖前面指令的输出结果,最终输出状态以最后一条为准。这就导致你前面写的逻辑可能完全被忽略,程序看起来“好像没反应”,排查半天才发现是重复输出惹的祸。
所以我的习惯是:一个输出线圈在程序里只出现一次,所有控制它的条件都集中在一块写,这样程序结构清楚,也避免莫名其妙的Bug。
6.4 培训班或线上课怎么选不踩坑
我注意到很多人为了系统学习,会考虑报PLC培训班或者买线上课程,这里就多说几句。靠谱的学习资源多的是,但也有不少重形式轻实操的坑要提防。
第一,看课程里有没有真机操作环节。PLC学习不能纯靠看视频和仿真,有没有真实设备让你接线、写程序、下载、调试,效果是天差地别的。宣传里全是课件和PPT的那种,你要慎重。
第二,问清楚课程选择的是什么品牌和系列。不同产品线的讲解侧重点不一样,有的偏重传统逻辑控制,有的偏重运动控制,你要结合自己目标行业去判断。最好选市面上占有率最高、招聘需求量最大的产品线,学出来就业匹配度也高。
第三,看课程表里有没有结构化文本内容。如果整个课程从头到尾只有梯形图,说明课程偏基础,只适合纯入门了解。工作两三年后你会发现,结构化文本的学习曲线迟早要爬,不如一开始就找个涵盖这部分内容的课程。
6.5 考证和学习哪个优先
常有人问我,是不是先把PLC相关证书考下来、再找工作。我的态度很明确:证书可以考,但别把它当敲门砖,更别把它当成学习动力。这行最值钱的是动手能力和项目经验,面试官更关心你独立做过什么程序、调试遇到过什么问题、怎么解决的。拿出一段能跑的小项目经历,比拿出一堆证更打动人。
那有证书要不要考?如果时间精力允许,考一个无妨,它能帮你系统化过一遍基础理论。但不要本末倒置,比如为了考证花几个月刷题,却连最基本的电机启保停程序都写不利索——那就太亏了。
我个人在实际带人的过程中体验最深的一点是:新人最容易犯的毛病不是笨,而是学得太散。今天摸梯形图,明天看结构化文本,后天听人家说顺序功能图好用又去研究,一个月下来什么都见过、什么都不会。PLC编程语言说到底就是工具箱里的工具,你先把最常用的那把用到顺手,再把其他工具一个一个补齐,这才是最实在的路子。
最后再分享一个小技巧:无论你现在学的哪种语言,养成“写完程序必做注释”的习惯,它的回报比你想象中大得多。几个月后回看自己写的程序,注释就是最好的记忆钩子,而它在项目交接、设备维护时更会替你省下无数沟通成本。这些习惯,比多学一种语言更值钱。