
一说到学PLC很多人开口第一句就问“PLC编程是不是很难”第二句就是“到底有几种语言”其实这个问题本身没有标准答案但如果在搜索引擎里查会发现答案五花八门有人说是五种有人说是两种还有人说什么梯形图最简单、结构化文本最厉害。这事确实值得掰开揉碎讲清楚尤其是对在滁州以及周边城市想往自动化方向转行、或者已经进厂想提升的兄弟选错学习方向轻则多花几个月时间重则把自己学抑郁明明一台设备就在眼前却不知道程序该从哪儿下手。先说个结论PLC编程语言没有“唯一正确答案”但确实有一条绝大多数工厂都认的路线以及一个最适合大多数零基础新手的切入点。这篇文章就是把这五种语言全部拆开讲明白它们各自是什么、怎么用、在哪里用得多然后告诉你哪一种最值得先学哪一种又是真正决定你能走多远的进阶技能。1. IEC 61131-3五种编程语言到底各是干什么的提到PLC编程语言的分类绕不开IEC 61131-3这个标准。这是国际电工委员会制定的PLC编程标准把PLC编程语言规范成了五种梯形图LD、指令表IL、结构化文本ST、功能块图FBD和顺序功能图SFC。市面上所有主流PLC品牌基本都遵循这套标准或向它靠拢所以不管你在工厂里碰到哪个牌子只要把这五种弄明白它们的本质换PLC也就换个菜单操作逻辑本身是通的。1.1 梯形图LD长得很像电路图的那个梯形图是绝大多数人第一眼看到PLC程序时最亲切的语言。它把继电器控制电路的逻辑“翻译”成了编程形式左边一条母线右边一条母线中间是触点、线圈、功能块。触点的常开常闭、线圈的通电断电跟你在电工基础里学的接触器控制回路几乎一一对应。举个例子一个最简单的电机启停控制按一下启动按钮电机转按一下停止按钮电机停。用梯形图写就是一条横线上串一个常开触点启动按钮和一个常闭触点停止按钮再接一个输出线圈接触器同时再并联一个电机自身的辅助触点做自锁。这个逻辑哪怕没学过编程只要有基本的继电器控制经验看一眼就能猜出个大概这也是梯形图能成为入门首选的根本原因。梯形图最擅长的领域是开关量逻辑控制也就是那些只有通和断两种状态的信号比如按钮、限位开关、光电传感器、接触器、电磁阀。几乎所有的单机自动化设备、小型生产线、老旧设备改造主程序都是梯形图写的。但梯形图不擅长做复杂数学运算也不适合处理大量的模拟量数据和算法逻辑这些场景它会写得非常啰嗦读起来像天书。1.2 指令表IL最像汇编语言的PLC编程方式指令表在IEC 61131-3标准里也占一席之地但必须实话实说它现在是五种语言中应用最少的一种。指令表长得像低端汇编或者单片机里的指令助记符基本操作就是LD、AND、OR、OUT这一类的简写告诉PLC怎么取信号、怎么运算、怎么输出。这种语言是从早期PLC的编程方式演化来的。老式PLC没有屏幕更没有图形界面工程师用编程手持器一个一个敲指令敲出来的就是指令表。今天还在用指令表的人大多是维护十几二十年以上的老设备或者在一些执行效率要求极其苛刻的场合用指令表能节省扫描时间。对于新入行的朋友指令表不用花太多精力去精通能看懂简单程序即可因为实际工厂项目里新设备几乎没有用纯指令表写的了。1.3 结构化文本ST长得像Pascal和C的高级语言如果你会C语言或者任何一门高级编程语言看到结构化文本会非常亲切。它没有梯形图那种图形界面而是用文本形式写代码变量赋值、IF条件判断、FOR循环、CASE分支、函数调用这些高级语言的特性它全都支持。在工厂自动化的实际项目中ST的最大用处是处理复杂的计算和逻辑比如多轴运动控制的插补计算、温度PID算法的实现、复杂的物料配比计算、大数据量数组处理。传统变频器启停、气缸伸缩这类简单逻辑用ST写反而别扭但一旦涉及几十个数据要运算或者要写一个很复杂的时序控制梯形图会让人写到怀疑人生ST则可以用几百行代码把问题表达得清清楚楚。现在的趋势是ST越来越多的被用作PLC的通用语言尤其在Codesys这类基于IEC 61131-3的软件平台里很多工程师已经直接用ST写全程序完全不用梯形图。西门子的SCL语言其实就是ST的变种所以学会了ST未来学习其他平台的高级编程都会有基础。1.4 功能块图FBD像搭积木一样的图形化编程功能块图长得很像电子电路中的逻辑门电路图。它不画触点而是画一个个方框方框里写着“与门”“或门”“非门”或者定时器、计数器、PID控制器、模拟量处理模块等现成的功能块再把它们用线连起来完成逻辑关系。在过程控制领域比如化工厂、水处理、楼宇自控FBD用得非常普遍因为它特别适合表达信号经过一系列处理模块后得到结果的流程。一个模拟量信号进来先连一个滤波模块再连一个PID模块输出去控制调节阀整个链路在图纸上看得清清楚楚方便工艺人员和电气工程师对图检查。对于初学者FBD的学习曲线也比较友好尤其是逻辑门和功能块的概念不算难它比梯形图稍微抽象一点但又比ST具体。难的地方在于FBD里每一个功能块都要正确配置参数如果对算法和信号转换不熟容易出问题且不好查。1.5 顺序功能图SFC专门描述过程步骤的语言顺序功能图解决的是“按部就班”的控制问题。一套设备开机后要按流程走第一步启动传送带第二步检测到位第三步夹紧第四步加工第五步松开第六步复位。用普通梯形图写这种流程不是不能写但写出来的程序又长又乱以后想改一个动作顺序改来改去容易出新Bug。SFC的解决思路是把一个工序拆成若干个“步”每个步有自己的动作步与步之间用“转换条件”连接条件满足就跳到下一步。程序像一张流程图每一步在干嘛一目了然。机械手工作站、灌装线、装配线、流水线设备、自动化机床上下料机构用SFC描述特别直观也方便维护人员快速定位卡在哪一步。现在主流的PLC品牌三菱叫SFC叫“步进梯形图”西门子STEP 7里也有类似S7-GRAPH实际上都是同一种思想的实现。所以SFC的底层翻译存在几个版本但用于表达流程的思想是一致的。这五种语言各有各的位置实际项目里很少只单独用一种尤其是中大型项目常常梯形图、ST、FBD甚至SFC混合使用不同场景用最合适的语言。2. 梯形图凭什么占据工厂九成江山它又卡在哪虽然IEC 61131-3规定了五种语言但你要是去车间里转一圈会发现大多数设备的程序都是用梯形图写的。这背后的原因不是梯形图技术领先而是它完美匹配了工厂设备维护人群的实际水平。2.1 工厂维护工的技术底色决定梯形图地位目前工厂里负责设备维修、电气维护的师傅很大一部分是从电工转过来的他们最熟悉的图纸是继电器控制电路图最擅长的排障工具是万用表脑子里对控制逻辑的理解是建立在触点、线圈、常开常闭基础上的。梯形图和他们在纸质电气图纸上看到的接触器控制回路几乎一样维护人员拿着触摸屏或者电脑在线监视梯形图时能很自然地把屏幕里的触点与电柜里的实际开关对应起来。这一点ST、FBD都做不到你能看懂ST代码但要把它和电柜里的接线对应起来还是得先在脑子里做一层翻译。工厂的设备不可能一直让写程序的工程师守着日常运行、故障排除、设备改造主要靠维护电工。如果程序写成了ST电工师傅看不懂出了问题只能联系厂外工程师等人家上门这中间的时间全都是停机损失。而程序写了梯形图电气师傅能自己在线监控能顺着触点看谁没动作能排查是传感器坏了还是输出点烧了大部分问题当场就能解决。所以很多工厂的电气主管在验收项目时会明确提出“程序必须用梯形图写方便我们维护”这种现实需求直接逼着设备制造商和自动化公司用梯形图做主程序。2.2 老设备技术改造留下的“梯形图存量”巨大另外一个被大多数讨论忽略的原因是存量设备。工厂里的设备不是凭空换新的很多产线用了十几二十年里面的PLC程序从最初调试好就没怎么变过。当年写程序时用的就是梯形图直到今天这些设备还在跑设备升级换代往往是在老逻辑上加新功能新加的模块为了和老程序风格一致自然也是梯形图。对这些企业来说贸然把老设备的梯形图改成ST风险极大没人愿意承担这种没有性价比的改造结果是梯形图在新项目和旧项目里都持续出现形成了巨大的存量惯性。2.3 梯形图最大的短板碰上复杂算法就捉襟见肘但是梯形图不是万能的。它的局限在碰到复杂运算时暴露得很明显。举个例子你要计算一个配料系统里三个原料罐的累计流量再根据配方比例算出加料时间还要做温度和压力的PID协调控制用梯形图写一个PID回路没问题但三个回路相互影响、涉及几十个中间变量和一堆浮点数运算的时候梯形图程序会变成一张巨长的“毛线球”图纸线多、块多、交叉多别人根本不敢去动任何一个触点一不留神就牵连了一片逻辑。这就是为什么做运动控制、CNC控制、过程控制的高端设备中ST和FBD的比例明显上升。在这些领域主要逻辑是数学计算而不是通断控制梯形图强行去写数学效率低到让人无法接受。所以更准确的说法是开关量为主的普通单机设备和中小型产线梯形图是绝对主力涉及复杂算法、运动控制、数据分析的大型设备ST正在成为主流选择。这也回答了很多人的误区——“我是不是只要学梯形图就能一辈子混这行”如果你的目标是进厂维修、维护普通设备、做小型非标设备的调试梯形图确实够用很久。但如果你想往自动化工程师方向走承接中大型项目或者服务于高端设备领域梯形图只是基本功ST和高级语言才是未来的饭票。3. 学好学不好不看天赋看你的知识底色是什么“哪种最好学”这个问题本质上没有标准答案因为不同人群的知识底色完全不同。同样是零基础物理系毕业的、电气自动化出身的、IT转行的学习起点天差地别。把这个问题拆开来看你会找到属于自己的路线。3.1 维修电工、设备操作工出身的人梯形图就是你的母语如果你已经在工厂干了几年电工日常接触接触器、继电器、按钮开关那么恭喜你梯形图不是“学”而是“认”。你看到常开触点、常闭触点、线圈、自锁回路跟看到你熟悉的起保停电路图没有本质区别你已经具备的电气逻辑思维可以直接迁移过来。对你来说最快的学习方式不是去啃厚厚的编程教材而是拿一套PLC学习机或者仿真软件把一个简单的电机正反转电路、星三角降压启动电路用梯形图原样写一遍再编译下载到真实的PLC里接上开关试一遍。你会在第一次通电的瞬间想通所有问题原来这个“IO映射”就是把电柜里的端子接到PLC里原来程序里的“线圈”就是让PLC某个输出口通电。这类人群要特别注意一个坑不要因为自己会电气图就跳过了PLC的扫描周期和程序执行顺序这两个概念。PLC程序和硬接线电路最根本的区别就是PLC程序按顺序逐行扫描从上到下、从左到右输出结果在一个扫描周期结束后才会统一刷新。不少干了十几年的电工转PLC时会在双线圈输出和顺序扫描这两个问题上栽跟头因为他们习惯认为“谁先得电谁就先动作”但实际上PLC里的结果取决于扫描顺序而不是电线先接谁。把这两个概念吃透梯形图学习基本就通关了。3.2 计算机、软件背景转行的人ST才是你的舒适区反过来如果大学学的是计算机软件你会觉得梯形图这种图形化的东西异常难受。习惯了函数、变量、类、逻辑表达式之后让你去一堆触点里寻找一个Bug确实痛苦。但好消息是结构化文本对你来说毫无门槛PLC里所有的定时器、计数器、模拟量转换本质就是面向过程的函数调用你甚至可以直接用SMART PLC的ST语言或者Codesys重写一套设备程序。这一类人群要克服的不是编程本身而是对硬件信号的理解。你写C代码时候变量是你在内存里自己定义的但PLC程序里的X0、Y0、M100这些地址对应的是电柜里实实在在的输入端子、输出端子和中间继电器。你要建立“程序等于物理世界”的意识知道程序里某个变量True了真实世界里的一个气缸就真的会伸出去。缺乏硬件思维写出来的ST程序可能语法完美、逻辑清晰但一旦接上真实设备就会状况百出因为你压根想不到一个开关抖动会带来什么后果。这个坎跨过去后软件背景的人学习PLC后期优势会非常大尤其在复杂算法数据处理自动化行业极其抢手。3.3 完全没有基础的纯萌新建议从梯形图切入再把ST当加分项第三种也是很多人遇到的情况——完全零基础之前跟电工、编程都没打过交道只是因为听说PLC工资高、好找工作想学一下试试。对于这类人群我强烈建议从梯形图入手原因很简单梯形图是唯一能让人“看着看着就入门”的PLC语言它不需要你预先懂编程语法也不需要你理解内存寻址只用最简单的是/非逻辑就能描述一台设备的动作。这种“所见即所得”的表达方式对整个自动化行业是巨大的友好。但请把纯萌新的学习心理预期摆正梯形图只是破冰工具不是终极目标。很多培训机构让人学三个月梯形图练了一堆数控车床级的小程序结果一到实际项目现场发现完全不够用。正确的路径是梯形图入门建立信心紧跟着把ST补上因为纯控制在复杂项目里永远不够数学运算、配方管理、远程通信这些才是项目区分度最高的地方。功能块图可以做过渡理解模块化思想顺序功能图则是在你接触多步骤设备时顺手掌握把它当成梯形图的一种进阶表达就行了。3.4 一套适合大多数人的八周学习路径结合我带人的经验如果每周能稳定挤出15到20个小时学习时间下面这条路径非常值得参考。第一到第二周接触PLC硬件与接线找一套“PLC本体输入按钮输出灯”的家用学习套件把PLC接线、IO地址分配、上下载程序跑通。不用纠结选三菱还是西门子哪个便宜买哪个核心在于建立“程序是死的硬件是活的”这个基本概念。第三到第四周用梯形图实现经典控制逻辑电机启停、正反转、星三角降压启动、红绿灯交替闪烁、大小球分拣逻辑。练习的时候强迫自己画IO分配表画完再写程序再画接线图这是很重要的工程习惯否则一到现场就乱。第五到第六周学习定时器、计数器、比较指令、模拟量模块的采集与处理做一个小项目比如一个混料罐的液位控制液位低了开阀进料液位高了停阀再配合一个定时搅拌。把梯形图和简单的ST语句混着用适应混合编程。第七到第八周学习顺序功能图用SFC改写过一台自动装配机构的步进流程再用ST写一个数据计算和配方切换的模块。这两周是拔高期完成这一步之后你已经至少达到了一个能独立调试小型设备程序的电气技术员水平。4. 从小程序到上岗调试这几关比选语言更难过很多人在学习软件里写程序写得飞起一到真正的设备现场就露怯。因为编程本身只是PLC工作的三分之一剩下三分之二是硬件的配合、现场排障和工程调试。这里面的几个坎远比学习语言类型更值得你花心思。4.1 第一道坎会写程序但不会看电气原理图PLC程序不是凭空存在的它是电气控制系统的灵魂。你写的每一个输入信号都对应着电气图纸上一个传感器的接线端子你写的每一个输出信号都对应着一个接触器的线圈供电回路。如果只会看程序、不会看图纸拿到一台设备时连“这个输出点接到哪个接触器”都找不到写程序、排障根本无从下手。所以学习PLC的过程中电气识图应该和编程同步进行。看懂主回路和控制回路的区别看得懂不同厂家图纸的绘图习惯认识热继电器、中间继电器、变频器的主回路和控制端子能从图纸追踪一根电源线的走向。在调试现场图纸就是地图PLC程序就是导航缺了任何一个都会迷路。实际项目里真正拉开初级和熟练工程师差距的往往正是读图能力。4.2 第二道坎程序在电脑里跑通了一接设备就出事很多新手下载完程序后发现设备动作跟自己想象的完全对不上。最常见的原因有三类一是输入信号没接对传感器明明是常开程序里却按常闭设计二是输出负载接线有问题PLC的输出继电器触点驱动不了大功率接触器的线圈必须加一个小型中间继电器过渡三是电磁干扰和电源问题导致信号误触发。这些问题都不是程序语言层面的问题而是现场工程经验的积累。解决这个坎的唯一办法就是多泡现场。自己接一个完整的控制柜把传感器、按钮、继电器、接触器、电机全部连起来通电调试碰到一次问题就记一次。我自己带新人的时候会故意把信号线接错、把负载短路、把程序逻辑整乱让他们自己去查查完再开一次会复盘。做过三轮之后大部分人对“写程序和调程序是两码事”这句话的体会会非常深。4.3 第三道坎对PLC扫描周期毫无概念逻辑“想当然”地写这是几乎每个新人在进阶时会遇到的瓶颈问题拿着流程图的思路去写梯形图以为硬接线电路怎么动作程序就该怎么表现结果PLC的扫描周期和输出刷新机制让程序行为和“电气直觉”脱了节。常见表现是在一个程序里用了两个相同地址的线圈结果后一个覆盖前一个或者在子程序里调用时发现某个中间继电器的状态跟预期的不一样。这些问题在语言的教科书中很少被重点讲透但在实战中遇一次就头大。解决的办法是认真理解PLC的工作模型输入采样、程序执行、输出刷新连续循环。每个扫描周期里输入信号的状态只在采样那一刻被确定程序里的运算基于这个快照输出结果在周期末尾统一生效。理解了这套机制之后再回头去学ST、SFC这些更高级的语言思路会顺畅很多。4.4 第四道坎品牌差异让很多人误以为自己不会PLC很多人在学习机上用的是某个国产品牌去公司后发现设备是某个德系品牌或日系品牌打开软件界面完全不一样顿时觉得自己白学了。实际上PLC编程的核心思想是相通的品牌的差异主要体现在软件操作习惯、IO地址命名方式、功能指令块的位置不同编程语言核心的布尔逻辑、定时器、计数器、模拟量处理这些概念完全一致。花上一周时间在厂商的官方手册和软件里过一遍你就能把知识点迁移过去。这里给个建议学习阶段最好从一个品牌深入学透但平时要多逛不同品牌的技术社区和官方文档了解不同平台的特点。真正工作中很少有工程师只服务一个品牌全才比偏才吃得开尤其是做非标自动化项目的这周用某国产PLC下周可能就要去改一套某德系系统谁适应快谁就能接到更多项目。4.5 第五道坎忽略通信和组态程序再漂亮也只是孤岛现代工厂里单台PLC自己在那跑已经不够了PLC要跟触摸屏通信要跟变频器走Modbus通信要跟上位机组态软件走以太网协议要跟其他PLC做数据交换。很多PLC程序写得很漂亮但不会配置通信参数不会设置从站地址不会处理通信故障到手项目依然无法交付。通信这块知识在讲语言的教程里很容易被忽略但它跟编程能力同等重要。从学习路径上说第一台PLC学习机到手之后第二周就该试着连接触摸屏组态一个简单的启停和状态显示页面。后续再接触变频器的通信控制把写入频率和读取电流都做到触摸屏上。这样几次做下来你对整个系统的理解就会跳出“程序”本身上升到“网络化设备控制系统”的层面这离项目实战的距离就更近了。5. 最后说几句掏心窝的话回头再整理一下“哪种最好学工厂用得最多”这个问题工厂用得最多的毋庸置疑是梯形图尤其是在中小设备、老旧产线和维护为主的场景里它占了绝对主导地位。而最好学的语言取决于你的来路——如果你是电气电工背景直接扑梯形图那是用母语在学如果你是编程背景也别硬啃梯形图从ST切入反而更顺畅如果你完全零基础按“梯形图入门建立认知ST进阶补计算能力SFC应对流程场合FBD了解过程控制”的路径走是经过大量验证的稳定路线。我在带新人的时候最怕的从来不是谁不会某一种语言而是只抱着语言当救命稻草坐在电脑前一遍遍改程序却不愿意去电柜旁边摸一摸传感器不想去设备底下理一理线。PLC这个行业是一个软硬结合的行业程序写出来只是万里长征第一步能把这个程序放进真实的电柜里跑起来让它带动电机转、气缸推、传感器反馈现场不出乱子那才是真正的会。学习PLC最好的老师永远不是某一种编程语言而是你面前的那台设备——多给它一点时间它回报你的远比任何一门语言本身的价值都大。