做自动化这些年,隔三差五就有人跑来问我“PLC到底怎么学”。市面上的资料是真不少,光是网上流传的全套视频教程,就能列出一长串名字,什么叶强PLC编程、厚俊霞老师的入门课、小羽的案例解析……标题一个比一个全,但很多人的实际情况是:网盘里塞了好几百G资源,真正看完的没几个,能独立写出程序的更少。问题从来不是缺教程,而是缺一条清晰的学习路径,缺一个“看完知道怎么动手”的落地方法。
这篇我想结合自己当年从零摸PLC、后来又带过不少新人的经验,把PLC学习这件事从选教程、搭环境、写程序、查故障到做项目,从头到尾理一遍。不管你是刚毕业进自动化行业的应届生,还是电气维修转编程的老师傅,只要方向对了,PLC入门的门槛并不高,真正的分水岭在后期的实战能力,这部分我会多写一些。
1. 先把底层逻辑吃透,再碰软件,否则你会一直被指令表拖着走
很多人学PLC上来就装软件,然后照着教程一个指令一个指令地敲。敲了半个月,发现换一台PLC、换一个软件,自己又不会了,因为学的全是“操作”,不是“逻辑”。
1.1 PLC的底层逻辑,其实就是继电器控制柜的数字化版本
在没有PLC的年代,产线控制靠的是成百上千个中间继电器、时间继电器、接触器,接线接得密密麻麻。今天你看着一台PLC,觉得它神秘,其实它的工作方式和那一柜子继电器是高度对应的:
- 输入端子对应原来按钮、开关、传感器接线的位置;
- 输出端子对应原来接触器、指示灯、电磁阀的接线位置;
- 程序里一行一行的梯形图,对应原来继电器和触点之间的串联、并联关系。
理解了这一点,你就抓住了PLC最核心的思维:程序就是逻辑关系,输入决定输出,中间通过“软继电器”来完成组合逻辑。很多电工老师傅学PLC快,就是因为他们在继电器电路上积累的逻辑直觉可以直接迁移过来。
1.2 扫描周期这个概念,建议一开始就建立清晰认知
PLC不是同时处理所有程序,而是从头到尾一遍一遍循环扫描,这个循环就叫扫描周期。一次扫描大致分三步:读输入、执行程序、刷新输出。
我见过不少新手写程序出问题,就是没理解这个顺序。举个例子,一个按钮按下,程序里I0.0先置位了M0.0,后面又用M0.0去控制Q0.0,这没问题;但如果程序后半段又改写了M0.0,再往后才用它去驱动输出,那最终结果就取决于程序顺序,而不是你的“直觉”。顺着扫描周期的逻辑去分析程序,很多诡异现象都能解释得通。
1.3 先死磕梯形图,ST和SFC可以后面再说
PLC的主流编程语言有五种,但新手阶段没必要全扑上去。梯形图和继电器电路长得几乎一样,看得懂电路图的人基本能看懂梯形图,这是最友好的切入点。先把常开触点、常闭触点、线圈、置位复位、定时器、计数器这六类基础元件玩熟,你的底子就立住了一半。
结构化文本ST语言更接近高级编程语言,适合做复杂运算;顺序功能图SFC适合流程控制。这些是进阶内容,等梯形图能独立做小项目了再去碰,效率比一开始就全都碰高得多。
提示:学梯形图阶段,就只专注梯形图。一会儿看ST、一会儿弄SFC,心气散了,很容易在一个地方卡死然后放弃。
1.4 选品牌这件事,建议从你所在地区的主流品牌入手
PLC品牌选哪个,网上吵得不可开交。我的建议很实际:看看你所在城市、你目标行业的设备里用得最多的是哪个品牌,就选哪个。
| 品牌 | 常用软件 | 主要应用场景 | 特点 |
|---|---|---|---|
| 西门子 | 博途(TIA Portal) | 大型产线、汽车、食品、化工 | 生态完善,块调用理念强,市场占比大 |
| 三菱 | GX Works2/3 | 小型设备、单机自动化 | 指令简洁、上手快,教学资源多 |
| 欧姆龙 | Sysmac Studio | 包装、电子、医药设备 | 运动控制功能强,NJ/NX系列理念新 |
| 国产(汇川、信捷等) | 自家软件 | 替代进口的中小型项目 | 性价比高,技术支持响应快,这几年用得越来越多 |
选定一个品牌就沉下心啃。指令系统的差异没有你想象的大,真正共通的“输入输出映射、程序结构、逻辑思想”才是核心,换品牌时你会发现,大部分知识是直接平移的。
2. 一套完整PLC教程的正确打开方式,不是从头放到尾
很多人拿到全套教程,习惯从第1集开始一天看十集,看到第30集发现前面的忘了,再重头来。这种学法对PLC这种技能型内容特别不划算,因为看会的知识不用就丢,练会的本事才能留下来。
2.1 把教程拆成三块来消化:原理、指令、案例
我在实际使用的经验是,不管哪一套教程,哪怕是叶强、厚俊霞、小羽这些资料里,内容再丰富,也基本可以拆成三大块来学:
- 第一块,原理基础类,讲PLC是什么、扫描周期、软元件、I/O映射;
- 第二块,指令讲解类,讲各条指令怎么用、带什么参数;
- 第三块,案例实操类,讲具体工艺怎么实现,比如电机正反转、传送带控制。
原理基础类,建议刷两遍,你不理解的地方多看几遍不亏。指令讲解类,别背,看一遍知道“存在什么指令”就行,真用的时候查手册比凭记忆靠谱。案例实操类,重点看人家的“解题思路”,别满足于把程序抄下来能跑通,那没意义。
2.2 跟教程练的“五步法”,是我最推荐的方式
这一套是我当年自己摸索出来的,后来带人也一直在用,步骤很简单:
- 只看案例的题目要求,不看解决方案,先自己把I/O表列出来;
- 凭自己的理解写一版梯形图,哪怕是错的,也要写完;
- 再去看教程里老师的做法,对比差异;
- 把差异点找出来,问自己“他为什么这么写”“他的方案好在哪”;
- 关掉教程里的答案,自己重新写一遍。
第一次做可能磕磕绊绊,做完这五步,这道题的掌握程度会远超“看懂了”。说实话,教程里很多题我早忘了具体答案,但当年那些对比复盘出的思路,到今天还在影响我写程序的方式。
2.3 仿真软件练逻辑,代替不了实机,但可以先靠它起飞
现在主流PLC软件都自带仿真器,西门子的PLCSIM、三菱的GX Works仿真、欧姆龙CX-Simulator,能把程序跑起来,看到输入输出状态变化。这对新手来说是极好的练习环境,没有硬件成本,也不怕烧东西。
但仿真器代替不了实机里有几个逃不掉的问题:输入接线的松动、传感器的干扰、输出触点带负载后的火花与抖动、通信线的屏蔽质量。这些“物理世界的脏活”,仿真器永远模拟不了。我的建议是,仿真练程序逻辑,练到程序结构稳定;实机练调试手感,练到知道现场问题出在哪一环。
3. 第一个能跑的程序,建议从“启保停”和“红绿灯”开始
光说不练等于零。现在假设你按教程装好了软件,下面是一套我反复带人走过的最小实践路径,跟完这一节,你就算正式“入门自动化”了。
3.1 建工程时容易被卡住的几个坎
建工程看着简单,实际卡住新手的地方不少。西门子博途版本多,安装时选错版本或忘记授权,连项目都建不出来;三菱GX Works也需要对应操作系统,Windows新版本不兼容老软件是常事。
另外,我第一次用博途的时候,建好工程找不到“程序块”——后来才知道要先在左侧“PLC变量表”里定义好I/O变量,再在“主组织块OB1”里写程序,而且PLC型号选错的话,很多指令根本没有。这些都会让人怀疑自己是不是不适合干这行。我只能说,都是这么过来的,卡住就查一下软件版本匹配,别硬扛。
3.2 先学会做I/O分配,再写程序
拿到一个控制需求,第一件事不是写指令,而是把输入输出表列出来。以“电机启保停”为例:
| 信号方向 | 点位 | 说明 |
|---|---|---|
| 输入 | 启动按钮 | 常开,按下接通 |
| 输入 | 停止按钮 | 常闭,断开时停止 |
| 输出 | 接触器线圈 | 控制电机主回路 |
| 程序中间 | 自锁触点(内部继电器M) | 保持启动状态 |
这里有个新手容易搞混的点:停止按钮接常闭、程序里也用常闭触点,这是为了“断线安全”,一旦线路断了设备自动停机。这种细节,教程里通常一句话带过,但现场安全全靠它。
3.3 启保停程序的两种写法:保持式和置位复位式
启保停是PLC程序里最重要的基础逻辑,没有之一。最常见的写法是这样的:
// 变量:I0.0启动,I0.1停止,Q0.0输出 A I0.0 O Q0.0 // 并联自锁 AN I0.1 // 停止为常闭 = Q0.0写成梯形图就是典型的“启动并联自锁、停止串到前面”。另一种写法用置位复位:
S Q0.0 // 启动按下,置位输出 R Q0.0 // 停止按下,复位输出两种方式现场都有人用。置位复位写起来简洁,但一定要想清楚停止条件;保持式看着啰嗦,逻辑却非常直观。我见过有人全程只用置位复位,最后忘了给中间继电器断电,设备卡死在半路——不是说置位复位不好,而是你得对它保持敬畏。
3.4 红绿灯,是理解定时器和程序结构的入门题
红绿灯题看着简单,却能把定时器、计数器、步进逻辑全练到。核心思路就是三组灯轮流点亮,每组亮多久由定时器决定。
常规的做法有两个流派。一个是“单循环计数法”:一个定时器自复位产生周期脉冲,再用计数器或者比较指令去切灯。另一个是“三步循环法”:三个定时器依次触发,T1时间到启动T2,T2时间到启动T3,T3时间到复位回T1。
两个做法我都写过,个人体会是三步循环法更贴近人的理解方式,调试时也直观。但到复杂工艺,比如十几步甚至几十步的流程,就要学顺序功能图SFC或者用步标志字了,那是下一阶段的事。
3.5 仿真和在线调试,是你顺手就行的基本功
写完程序不是结束,跑起来监控才是闭环。仿真时学会用“强制”功能,把某个输入强制为1或0,观察输出变化;下载到实机后学会监控程序状态,看哪个触点通了、哪个线圈没吸合。所有指令在程序里的激活状态都会实时显示,养成“让程序自己告诉你哪里没通”的习惯,比死盯代码高效得多。
4. 学了指令却写不出程序?卡住你的通常不是指令
很多学到一半的人会来找我,说“指令我都认识,可一拿到新题目脑子就空”。这句话我听了快十年,几乎所有人都把原因归错了方向——不是记的指令不够,而是缺少把需求“翻译”成程序的能力。下面几个坎,是最常坑人的。
4.1 不会把工艺要求翻译成I/O表
写程序前不列I/O表,直接上手写梯形图,这是新手最大的通病。PLC程序本质是“输入信号处理成输出信号”的过程,输入是哪些、输出是哪些、中间用什么软元件衔接,这三层理清了,程序等于完成了一半。
我始终推荐的办法是:拿张A4纸,先画一个表格,左边写输入(按钮、限位、传感器),右边写输出(线圈、阀、灯),中间留白。写程序的过程就是在中间把逻辑关系补上。步骤看着土,效率却真的高。
4.2 不熟悉扫描周期引起的“逻辑幻觉”
同一个变量在程序里被多处赋值,新手特别容易翻车。
举个例子,上升沿检测同一个按钮,在程序开头用一次、结尾又用一次,实际运行只有第一个上升沿指令能正常捕捉,第二个因为该信号早已被程序修改,触发不了。这种问题在梯形图上看不出来,只有用在线监控、加标志变量才能定位。处理的办法也很简单:一个输入信号不要在同一个扫描周期里被反复用来做沿检测;如果真的需要,先把它存到中间变量里,再传给后面的逻辑用。
4.3 没有程序结构观念,全部逻辑堆在一“坨”里
PLC里可以不管功能界限,把所有逻辑全写在主程序里,刚开始写五十行没问题,写到两三百行时,修改一个功能就得在程序里翻半天。
有经验的做法是从一开始就按功能划分,把程序分成手自动切换、单步运行、报警处理、输出汇总等块。西门子的FB/FC调用把逻辑封装成功能块,三菱里多分几个程序段。这个习惯看起来是程序组织问题,实际上是节省你未来调试生命的核心习惯。
4.4 调试手段太单调,只会看最终输出
新手调试往往只盯着最终输出通断,不对就怀疑设备坏了。老手调试是分级排查的:先看输入信号有没有到PLC,再看程序内部逻辑有没有正确响应,最后看输出信号有没有真实输出到负载。
这一套分级排查思维,比多会几条指令值钱太多。遇到故障不问“哪里坏了”,而是问“哪一层断了”,思路就对了。
5. 那些教程很少明说、现场吃过大亏才知道的事
视频教程能教会你怎么写程序,但现场很多让人挠头的事,是教程里不会展开讲的。我把这几年带项目踩过的一些典型坑和解决方案整理了出来,希望能帮你少走一段弯路。
5.1 程序下到PLC里,设备却不动,十有八九是这几个原因
我把最常见的现象整理成了表格形式,方便排查时对着看:
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 输入信号亮,程序监视无变化 | 变量地址与实际端口不对应 | 检查I/O映射和通道号定义 |
| 输出线圈已亮,设备却没动作 | 输出继电器触点问题或接线断开 | 用万用表量输出端有无电压、电流 |
| 程序一运行就报警,复位没用 | 急停回路被切断或安全回路接线松动 | 检查外部急停、门锁、安全继电器 |
| 带上负载后有输出但会跳 | 输出触点容量不够或外部负载短路 | 看接触器线圈是否匹配,量负载侧电流 |
| 程序正常但偶尔乱动作 | 干扰或电源质量问题 | 查屏蔽接地、24V电源波动、卡件供电裕量 |
表格里最容易被忽略的是最后一条。干扰问题在仿真器里永远遇不到,现场却是家常便饭。我在某次调试里遇到过编码器脉冲被变频器干扰,程序里莫名多了几十个计数,最后是换了屏蔽电缆、分开走了动力线槽才解决。
5.2 断电保持和上电初始化,是程序设计的“隐藏关卡”
一套设备不可能永远不停电。停电后PLC的存储器里有些值要保持(比如产量累计),有些值必须清零(比如设备状态、报警记录)。这种设计几乎没有一个教程会单独拎出来讲,但在现场极其重要。
做法也不复杂:把重要的保持数据放到掉电保持区(三菱的D寄存器指定范围、西门子的保持性DB块),在开机第一个扫描周期做一次初始化——把需要复位的软元件清掉。我曾经见过有同事因为没做上电初始化,设备断电重启后默认状态处于“运行中”,一上电电机直接启动,差点出事故。这块千万别省。
5.3 学会看电气原理图,是PLC程序员的隐藏基本功
写PLC程序的人,不能只盯着屏幕。你在程序里写了一个Q0.0来控制接触器,但现场这个输出点接的是不是那个接触器、中间隔没隔中间继电器、接触器线圈电压是220V还是24V,这些全在图里。
我见过新人调试,程序逻辑完全正确,设备就是不动,查了两小时发现输出继电器接的是另一路负载。养成拿到图纸先看输出回路的习惯,后面你会感谢自己当年的这个习惯。说白了,PLC程序员的竞争力,一半在程序里,一半在图纸和设备上。
6. 从会写程序到能独立做项目,中间差的是这四样东西
技能树到了能写程序、能排查常见故障之后,再往上走就不是纯粹编程的事了。四样东西我称为“隐性能力”,它们不写在任何教程目录里,却决定你值多少钱。
第一个是理解工艺。同一个程序在不同工艺里,实现细节天差地别。传送带的延时启停,在物流线里是为了防止物料拥堵,在涂装线里可能是为了烤炉内温度均匀。不懂工艺,程序能跑但不好用,只是满足了“能动”,离“好用”还很远。
第二个是风险意识。哪些按钮是急停级别的,哪些开关动了会撞机,哪些参数不能让人随便改。这些在程序里要用逻辑去保证,比如限制运行条件、设置权限密码、写报警保护。能跑的程序和能安全跑的程序,完全是两个水准。
第三个是沟通能力。做自动化项目,你要接需求的人可能是机械工程师、车间操作工、老板。对方不懂梯形图,你怎么用大白话讲清楚你的方案、讲明白你需要哪些输入、会让设备产生什么新行为,这项能力直接决定项目推进顺不顺利。我的一些教训表明:程序写得再漂亮,沟通不畅一样会返工。
第四个是文档习惯。每个版本的程序保留存档,每次修改记录改动内容和原因,给每一个自定义功能块加注释。这套习惯在一个人写小项目时看不出作用,一旦设备出故障需要远程排查、或者换了同事接手,一份清晰的程序文档是最宝贵的资产。
最后再分享一个小技巧,是我个人一直沿用的:每学完一个案例,把核心思路写在一张卡片上,一句话说清楚这个程序“解决什么问题、关键逻辑是什么”。半年积累下来,你就拥有一套属于自己的编程思路库。任何新项目来了,先从库里找相似场景,再根据工艺细节做调整——这比从零开始硬想靠谱得多。PLC这行没有捷径,但每一步都会长在你手上。