考试通知

PLC编程语言有哪些?五种标准语言学习难度与工厂应用解析

PLC编程语言有哪些?五种标准语言学习难度与工厂应用解析 做PLC这行被问得最多的问题之一就是PLC到底有几种编程语言哪种最好学工厂里用得最多的又是哪种每次遇到这类问题我都觉得挺难用一句话回答因为答案跟提问人自己的基础、目标岗位、所在行业都有关系。但你要真想让我一篇讲透我还是能给你理出一套非常清晰的脉络。这篇文章就顺着这三个问题走一遍先列标准答案再谈学习难度再结合工厂里的实际应用分析市场占比最后给你一条可以直接照做的学习路径。不管你是零基础想转行还是在职电工想升级技能还是刚入行的电气设计工程师都能从中找到自己该重点学的那一门语言。1. PLC编程语言的“官方名单”到底有几项1.1 为什么会有五种标准语言先回答标题里最硬核的问题PLC编程语言按IEC 61131-3国际标准的说法一共规定了五种。这个标准是国际电工委员会在上世纪90年代制定的目的是把各家PLC厂商各自为政的编程方式统一起来。你想想在标准制定之前做项目碰到什么局面A品牌PLC只能写A家的指令B品牌又完全是另一套写法工程师换个品牌恨不得连思维方式都要重新刷一遍这对整个行业来说太痛苦了。所以IEC 61131-3就规定了一套“通用语言体系”只要你用符合这个标准的PLC无论哪个牌子基本语法和结构都有共通性。这五种标准语言分别是梯形图LD、功能块图FBD、顺序功能图SFC、指令表IL、结构化文本ST。注意这是“标准语言”的清单实际大家在软件里还会看到一些扩展语言我后面会单独讲。先记住这五个名字下面我会一个一个用大白话拆开。有一种更直观的分类方式图形类和文本类。梯形图、功能块图、顺序功能图属于图形类看着像画图指令表、结构化文本属于文本类本质就是写代码。你学习的时候只要抓住“我是画图型选手还是写代码型选手”选语言的方向就有底了。1.2 五种标准语言分别是干嘛的我先把这五种语言放到一张表里方便你对照理解后面再逐个解释。语言中文全称画风适合场景对于新手的难度LDLadder Diagram梯形图像继电器电路图逻辑控制、开关量控制、设备启停低FBDFunction Block Diagram功能块图像信号流程图模拟量处理、PID控制、信号运算中低SFCSequential Function Chart顺序功能图像工艺流程图多步骤顺序控制、流水线、工序流程中ILInstruction List指令表像汇编语言早期PLC程序、简单逻辑中高STStructured Text结构化文本像高级编程语言数据处理、算法、通讯、运算中高梯形图最像电工图纸常开触点、常闭触点、线圈那些电气师傅看继电器控制柜看得眼睛发直一看梯形图就有亲切感。功能块图是拿一个个“块”来搭电路输入给到块里块处理后输出适合做模拟量运算和闭环控制。顺序功能图把整个工艺拆成“步”每一步做什么写得很清楚就像流程图上画圈圈适合工序特别明显的设备。指令表接近汇编语言一行一行指令堆出来现在更多作为其他语言的底层显示方式。结构化文本则是完全写代码IF…THEN…、FOR循环、CASE都能用适合做复杂算法和数据处理。1.3 你还会看到的几种“非官方选手”在实际软件里你还会碰到一些不在列表里但又非常出名的语言或编程方式。最常见的是SCL也就是结构化控制语言本质上就是结构化文本ST的某种品牌实现很多德系厂家的工程师直接把它和ST划等号。其次是CFC连续功能图可以理解成功能块图的增强版块之间随便连线自由度更高常用于比较复杂的控制策略组态。还有不少PLC品牌在运动控制里支持类C语言、类Basic语言的脚本编程这些都不能算标准PLC编程语言但在实际项目中经常出现。所以说如果你在招聘信息里看到“要求熟悉SCL语言”或者“掌握ST语言”基本可以当作一回事来准备。真正要区分的是梯形图这种图形化语言和ST这种文本化语言这俩是学习方向上的分叉口。2. 到底哪种最好学答案和你的基础强相关2.1 梯形图电工思维的直接延伸要说最好学目前没有第二种语言比梯形图更适合零基础。原因是梯形图就是照着继电器控制柜“翻译”过来的。老式电气控制柜里怎么接线启动按钮、停止按钮、接触器线圈、自锁触点这些物理元器件走到PLC里就变成梯形图里的元素常开触点、常闭触点、输出线圈、并联分支。一个电工如果看懂过点动、自锁、互锁电路图那他看梯形图基本不用教能猜到百分之七八十。我给你举一个最典型的自锁启保停电路。现场设备就是一台电机按启动按钮电机转按停止按钮电机停松手之后电机还能继续转。物理接线图上是按钮、接触器、辅助触点互相配合梯形图里写出来就是左母线引出串联“X0常开触点”对应启动按钮和“X1常闭触点”对应停止按钮后面接“Y0线圈”对应接触器线圈再在X0常开触点两边并联一个“Y0常开触点”对应接触器自锁触点。程序一扫描Y0得电Y0常开触点就闭合即使松开按钮回路也能通过并联支路继续保持。这套逻辑放在继电器图里叫“自锁”放在PLC里叫“自保持回路”本质完全相同。我实际带过完全没摸过PLC的学员学梯形图大概两三天的样子就能自己把这种自锁互锁回路写出来并且跑通。所以如果你问综合难度谁最低梯形图就是那个“低门槛”的代名词。2.2 功能块图和ST有基础的人反而觉得更简单如果你脑子里已经有编程基础比如学过C、Python、Java那你学习PLC的体验完全不一样。这类人看到ST结构化文本会无比亲切。ST里到处都是IF条件判断、WHILE循环、CASE分支还有变量声明和赋值和写C语言非常像。比如你想写一个电机控制按下启动且未按下停止输出为真一旦按下停止输出为假。ST代码就是几行条件判断逻辑清清楚楚你根本不需要去理解“常开常闭触点在母线之间怎么串联并联”这件事。同样如果你以前搞过上位机开发、系统集成、数据采集那功能块图FBD可能比梯形图更好上手。FBD的思路是拿功能块连信号线模拟量输入进到某个块经过运算输出到另一个块整个过程像数据流管道。做压力变送器量程换算的时候你只需要把原始数据送进一个Scale块配置好上下限输出就变成了工程量再送进一个比较块做报警阈值判断。这种“搭积木”的方式对有信号链概念的人来说非常自然。所以“哪种最好学”不能脱离你的背景来谈。一个干了十年的老电工你让他去学ST他可能觉得是天书一个计算机专业刚毕业的你让他画梯形图他也觉得“这都什么跟什么”。学习语言的关键是先看清自己的思维习惯。2.3 单论“最好学”我给出的排序如果一定要给一个排序我会按“零基础无任何电工背景”的人来排梯形图 功能块图 顺序功能图 指令表 结构化文本。但对有编程基础的人来说ST的难度会直接降到第二甚至第一功能块图紧随其后。最不建议新手上来的就是指令表IL它的可读性太差一行一行的助记符看着就头大。不过我必须提醒你一句最好学不等于最好用更不等于工厂最需要。你光挑简单的学学完一到现场发现大家都在用另一种语言那才叫尴尬。所以确定学哪种语言之前最好先搞清楚工厂和项目里到底哪些语言用得最多这也是我接下来要讲的重点。3. 工厂里用得最多的到底是什么3.1 梯形图长期霸榜的三个硬理由直接给结论在所有PLC项目中梯形图的使用频率目前仍然排第一尤其在中小型设备、单机自动化、传统产线改造这些领域梯形图绝对占主导。原因其实不复杂。第一个理由是维护方便。工厂里最怕什么怕设备出故障之后没人能修。PLC程序写得再漂亮如果维修师傅看不懂那设备一出问题就要找原厂工程师停机损失巨大。而梯形图的阅读门槛低工厂里的维修电工普遍懂继电器控制看到梯形图里的触点和线圈哪怕没学过PLC拿万用表排查的思路也能迁移过来。所以说梯形图不只是编程语言它还是工厂设备维保的“公共语言”。第二个理由是可读性强。甲方项目验收时车间主任、设备科长可能不懂ST代码但梯形图拿给他们看至少能看懂“哪个按钮控制哪个输出”工艺逻辑一目了然。梯形图在表达开关逻辑、互锁关系、启停条件这种最基础的控制需求时几乎不需要额外注释你就是拿给领导看领导也能看个大概。第三个理由是修改成本低。生产现场最常干的事就是临时改逻辑比如加一个安全条件、取消一个联锁、改一下延时时间。梯形图在线修改非常方便鼠标拖几个触点、改个参数下载之后直接生效。而ST这种文本型语言在部分品牌的PLC上在线修改限制较多或者修改后需要整体重新编译调试节奏就慢了。我做过不少设备改造项目统计下来大概有七八成的开关量逻辑段都是梯形图写出来的。尤其在日系PLC和大量国产兼容品牌的项目里梯形图基本是唯一主力。3.2 顺序功能图在流程行业的高光场景梯形图虽强但在一种场景下会显得不太顺手工艺流程非常复杂、步骤特别多的设备。比如包装机、装配线、物料分拣系统动作可能有几十个工序上料、夹紧、检测、翻转、装配、下料。如果用梯形图硬写你的程序里会塞满大量中间标志位M0、M1、M2满天飞绕来绕去改一个工序可能牵一发动全身现场排查故障的时候也非常痛苦。这时候顺序功能图SFC就发挥作用了。它的编程思路是把整个控制流程拆成“步”和“转移条件”。比如一个简单的分拣线步1等待来料条件到来后进入步2步2挡停物料条件满足后进入步3步3执行分拣气缸动作。每一步做什么、什么时候跳到下一步全都画在流程图上。程序结构天然清晰新增步骤、删减步骤、改变跳转条件都只需要改局部不会影响整个框架。不过有个很现实的情况SFC在大型、复杂流程项目里用得确实多但在中小型设备项目里反而没那么普及。因为梯形图加状态寄存器已经能解决大部分顺序控制问题项目老板也更愿意让工程师用大家都会的语言去写方便后续有人接手维护。所以SFC更像是一门“加分项”语言会了不吃亏但不代表它是入门首选。3.3 结构化文本的隐藏份额你如果觉得“工厂里都在用梯形图那我不学ST好了”这个想法会坑了你。现实情况是很多设备的程序表面上开着梯形图但核心算法模块全是结构化文本写的。尤其是下面这几种场景PID回路的参数计算和自动整定、运动控制里的加减速曲线、配方数据的批量处理、Modbus通讯报文的拼接和解析、多轴同步逻辑。这些用梯形图写会非常痛苦一行一行处理字节累死人但用ST写就是几行赋值和循环的事。现在的PLC品牌里德系主流PLC对STSCL的支持已经非常完善。在自动化项目里比较成熟的做法是“梯形图做逻辑ST做算法”外围的启动停止、互锁、报警用梯形图里面的数据处理、计算、通讯请求用ST。这也是为什么现在设备工程师招聘越来越看重ST语言——因为梯形图你可以靠经验堆而ST能明显提高编程效率和程序质量。所以工厂的真实生态是梯形图覆盖面最广是“从没见过哪个厂完全不用梯形图”的绝对主力ST的“代码量占比”在高端设备上越来越高SFC则是特定流程行业里的利器。三者不是非此即彼的关系而是功能互补。4. 国产、德系、日系PLC的语言支持与学习路径4.1 某日系老牌PLC梯形图就是主场国内大量中小型设备、单机自动化、包装机械、塑料机械用的都是日系老牌PLC这家的编程软件里梯形图是绝对主角指令表风格也保留得比较完整。它的结构化文本支持相对较弱很多老工程师常年只用梯形图就可以完成几乎所有项目。学这类PLC你只需要把梯形图彻底吃透再把X输入、Y输出、M中间继电器、D数据寄存器、T定时器、C计数器这些基础元件搞明白就能应付绝大多数设备。在这种品牌的生态里梯形图不是“一种选择”而是默认选项。你去厂家调试设备打开程序满屏梯形图。如果你想往设备维修、产线调试方向发展那么学梯形图就是最核心的突破口。4.2 某德系品牌PLC梯形图加SCL的组合拳再看德系主流品牌的PLC它在中小型PLC市场占有率也很高。新版本软件里梯形图、功能块图、梯形图加SCL混合编程都很方便。常见做法是基本逻辑控制用梯形图通讯、配方、数据处理用SCL。德国工程思维讲究结构化即使是梯形图也鼓励你做成功能块一个块管一个功能主程序干干净净这也是很多德系设备程序看起来清爽的原因。学习这个品牌路线就不能只盯着梯形图。我建议你从梯形图入门但第一周就要接触SCL先看懂它的基本语法然后做几个简单的数据处理块比如把模拟量读进来的原始值做个量程转换。SCL一旦上手你的能力边界马上扩大你可以用FOR循环批量初始化配方数据可以用CASE语句做多状态切换这些都是梯形图写起来非常费劲的活儿。4.3 国产品牌PLC和运动控制器的现状国产品牌PLC近些年在市场上越来越常见它们大致分成两派一派走日系兼容风格指令和编程方式都模仿日系老牌梯形图为主学习成本极低另一派走德系兼容风格软件里梯形图、功能块图、ST/SFC都支持整体更接近德系环境。你如果学会了日系或者德系PLC的编程习惯再上手国产品牌通常顺滑得很因为它们的设计本身就是对标这些老大哥。还要特别说一说运动控制器这几年做设备升级的项目里越来越多不管是独立的运控盒子还是PLC内嵌运动控制功能都有一个明显趋势支持结构化文本要求工程师能用代码写逻辑。做多轴联动、插补运算、点位表管理的时候T型图写得再熟也没用必须上ST或者类C语言。所以如果你的目标是往“运动控制、机器人、高端专机”方向发展ST是绕不开的核心技能。4.4 按就业目标来选择主学语言给你一个比较实际的建议先想清楚你想去什么样的岗位再决定主学哪种语言。目标是“产线设备维修电工、售后调试工程师”那梯形图就是你的生命线品牌以日系老牌和兼容国产为主重点练查故障、监控程序、在线修改。目标是“非标设备电气工程师、项目设计”那梯形图必须精通同时赶紧补ST因为你要面对的是甲方各种花样的工艺需求很多逻辑用梯形图写出来又长又丑用ST才写得顺。目标是“自动化系统集成、运动控制、通讯组网”那ST要当成主食配着通讯协议一起来学梯形图反而只是辅助。5. 实操从零写一个电机启保停程序看三种语言的差异5.1 编程前的准备工作纸上聊再多不如实际动一次手。我拿最典型的电机启保停来拆一遍同样的逻辑分别用梯形图、FBD和ST来实现。你不需要急着买真机现在主流PLC品牌都提供仿真软件完全可以在电脑上模拟运行。我强烈建议新手先用仿真环境别一上来就接强电安全永远是第一位。准备三样东西一台支持仿真的PLC软件、一张I/O点表、一个明确的控制需求。这个示例里控制需求是按启动按钮电机启动并自保持按停止按钮电机停止热继电器动作电机强制停止。I/O点先规划好启动按钮接X0停止按钮接X1热继电器辅助触点接X2接触器线圈接Y0。点表是PLC编程的基本功先把这个理清楚后面写程序才不会乱。5.2 梯形图版本15分钟搞定新建工程选择PLC型号进入编程界面选中梯形图语言开始画。第一行从左母线开始先放一个X0常开触点再放一个X1常闭触点再放一个X2常闭触点最后接Y0线圈。然后回到X0触点两端并联一个Y0常开触点做自保持。这个程序写完编译下载按一下仿真启动按钮Y0输出电机启动松开启动按钮Y0仍然通过并联的Y0触点保持导通按一下停止按钮X1常闭触点断开Y0断电电机停止。这里有一个值得新手理解的点PLC的扫描周期。程序不是“同时”执行的而是从上到下、从左到右循环扫描。Y0输出得电之后下一扫描周期里Y0常开触点才会闭合于是程序继续维持Y0导通。这种“先输出下次扫描生效”的循环特性就是自保持能够成立的根本原因。你只要把CPU扫描这个逻辑想明白很多稀奇古怪的PLC现象都能自己解释清楚。5.3 定时器参数计算延时启动的经典例子既然聊到梯形图顺带把定时器的参数计算也讲透。很多初学PLC的人第一次设置定时器时会懵为什么我设一个5秒延时软件里要填“300”因为定时器的预设值不是直接的秒数而是以“定时器分辨率”为单位跳动的计数个数。比如某款PLC的一个定时器分辨率是0.01秒那要延时5秒预设值就是5秒除以0.01秒等于500。如果你填了5那你得到的实际延时只有0.05秒。实际做星三角启动或者电机延时启动的时候这个计算尤其重要。比如设备要求风机启动3秒后关闭旁路阀门定时器分辨率0.01秒预设值就填3÷0.01300。你还要注意定时器的位的状态和当前值的区别T0是定时器位用来做触点T0的当前值寄存器用来监控计时走了多少个数。这两者不是一回事排查故障的时候别搞混了。5.4 ST版本代码写起来短到惊人同一个启保停逻辑用ST写出来大概是这样的IF 启动按钮 AND NOT 停止按钮 AND NOT 热继电器 THEN 电机输出 : TRUE; ELSIF 停止按钮 OR 热继电器 THEN 电机输出 : FALSE; END_IF;这段代码的逻辑和梯形图完全等价启动按钮为真停止按钮为假热继电器为假输出为真但一旦停止按钮为真或者热继电器动作输出立刻为假。你注意ST版本的“自保持”不需要你手动并联一个触点因为输出变量在下一个扫描周期里依然保持在TRUE状态直到条件被打破。这就是为什么写过高级语言的人学ST会非常快很多底层的循环、保持、释放概念编译器已经替你处理好了。再来一个FBD版本你把启动、停止、热继电器三个输入信号分别接到两个AND块、一个SR触发器的输入端输出接到Y0。思路就是用SR触发器来记住“启动后保持输出”这比梯形图的自锁触点更直观一点。实际项目里FBD做这种逻辑控制也常见但如果你刚开始接触我建议先用梯形图把电路逻辑理解透再来看FBD因为FBD的“数据流”思维对于电工背景的人有一定跳跃。5.5 在线监控与强制操作的经验程序写完之后别只顾着编译下载。真正重要的是在线监控把软件切到监控模式你会看到导通的线路变成高亮状态触点、线圈的实逻辑一目了然。这时候排查问题非常方便按下启动按钮如果X0的触点没有高亮说明输入信号根本没进入PLC如果X0高亮了但Y0没输出那说明中间某个条件没满足。我特别想提醒一个容易出岔子的地方在线下载程序。不同品牌支持在线修改的程度不一样。有些品牌你可以在运行状态下直接修改梯形图并下载有些品牌则必须先把PLC切到STOP模式才能下载。如果在运行模式直接下载导致设备突然停机生产车间是要骂人的。所以下载前先确认操作模式同时在关键设备上务必先在仿真里跑通逻辑再上真机。6. 初学者最容易踩的坑与排查方法6.1 常见问题速查表我把初学者在自己做实验或者初上项目时最容易遇到的问题整理成一张表你遇到类似现象可以直接对照排查。现象可能原因排查方法程序编译报错触点或线圈重复使用、地址超出允许范围、数据类型不匹配按编译窗口提示定位检查是否有重复Y/M线圈检查变量类型设备没输出但程序监控里Y有动作输出模块坏、接线松动、外部继电器/接触器线圈故障万用表测输出端电压看PLC输出指示灯和模块通道状态按钮按了没用监控里X点不变输入信号没有进入PLC如公共端没接好、传感器无供电检查输入指示灯测按钮两端电压查公共端接线设备自己频繁启停输出一直在闪程序扫描周期内逻辑存在振荡或外部干扰引起输入抖动增加延时滤波检查慌冲检查程序内是否有无意的循环置位复位程序下载后设备马上停机运行模式下载导致PLC切STOP确认下载时运行/停止状态尽量在设备停机时下载程序定时器时间“不准”预设值单位没换算对确认定时器分辨率按需求时间除以分辨率得到预设值这张表我写的是最典型的几个实际项目里情况会更多。但记住一个原则PLC本身一般不会犯逻辑错误错的大多数是外部接线、信号丢失、程序和自己想的不一样别一上来就怀疑PLC坏了。6.2 语言选错和混用的大坑学习过程中最容易出现的问题其实是“语言选错了还不自知”。我见过有学员用ST写最简单的自锁电路代码写得挺规范但让他用梯形图表达同样逻辑他就懵了。反过来也有老工程师明明数据运算很复杂非要用梯形图一个一个字节处理程序写了上千行一个地址错查了半天。我的建议是逻辑控制、启停互锁、简单顺序老老实实用梯形图数据处理、通讯解析、配方管理别犹豫直接上ST。混用不是问题问题是不分场合乱用。还有一个ST时代的经典大坑数据类型。PLC里的BOOL、BYTE、WORD、DINT、REAL数量繁多通讯报文解析时经常要把WORD和REAL来回转换。初学者常犯的错误是把一个BOOL变量直接塞给WORD的指令编译直接报错或者两个WORD相加结果存到BYTE数据被截断。这种问题排查起来非常费劲因为逻辑可能完全正确就是数据溢出或类型不匹配造成的结果错乱。我建议你花一个下午把常用数据类型和转换指令过一遍后面能省下无数个加班的晚上。6.3 一条可以直接抄的入门路线最后给你一条我个人验证过很多次的零基础学习路线按四周来规划第一周打电气控制基础。不看PLC先把继电器控制原理图搞懂重点是点动、自锁、互锁、顺序启动、延时启动这几种经典回路。这一周决定了你后面学梯形图是“看图说话”还是“死记硬背”。第二周梯形图入门。学软元件写自锁、互锁、定时器、计数器、比较指令在仿真软件里把电机正反转、星三角延时启动跑通。重点不是背指令而是理解“CPU循环扫描”和“输出刷新”的机制。第三周进入顺序控制和模拟量。试着用梯形图加状态寄存器做一个五步顺序动作再把模拟量模块读进来做一个量程转换和上下限报警。有没有真实设备都行仿真也能练。第四周选一个真实机台的控制需求来做练习。你可以拿一部电梯模型、一台简单的分拣线、一个变频器启停控制从头到尾把I/O表、程序架构、梯形图、调试记录完整走一遍。这个阶段的目标不是写得多花哨而是体验“从需求到代码再到调试”的完整闭环。这套路线跑完你基本可以对主流设备的梯形图程序达到“能看懂、会修改、能独立写小型程序”的状态。至于ST可以在梯形图入门后同步开始先会读再会改最后自己写不要跳过基础直接看高级代码。说实话我接手过不少半路转行的学员他们在“学哪种语言”这个问题上反复纠结反而浪费了大把时间。我的建议一直很简单先用梯形图把逻辑思维和PLC的扫描机制练扎实再根据你目标岗位的需要补ST或SFC。语言只是工具核心是把设备动作、工艺时序、现场信号之间的关系搞明白。你要是能把一张继电器图纸看出花来再坐到电脑前写梯形图基本是一马平川。先把门槛跨过去后面的进阶真的不急。
← 返回资讯列表 预约报考咨询 →
NEXT STEP

看完公告,下一步怎么走?

把报考交给靠谱的人:材料预审、批次抢报、考前辅导、复审提醒,全程有人跟。

进入报考专题