
很多刚接触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编程语言说到底就是工具箱里的工具你先把最常用的那把用到顺手再把其他工具一个一个补齐这才是最实在的路子。最后再分享一个小技巧无论你现在学的哪种语言养成“写完程序必做注释”的习惯它的回报比你想象中大得多。几个月后回看自己写的程序注释就是最好的记忆钩子而它在项目交接、设备维护时更会替你省下无数沟通成本。这些习惯比多学一种语言更值钱。