1. 为什么我劝你从FX 5U而不是FX 3U开始学三菱PLC
先聊一个很多人都有过的纠结:网上搜“三菱PLC入门”,十有八九出来的教程还在讲FX 3U、FX 2N这些老型号,配套软件还是GX Developer甚至更老的FXGP/WIN。不是说老型号不能用,而是你辛辛苦苦学完一套老掉牙的流程,到了实际项目里发现甲方图纸上写的是FX 5U,软件界面长完全不一样,指令表也对不上,等于从头再学一遍。
我自己入行第二年开始接触三菱FX 5U,当时也是从老款FX 3U转过来的,最大的感受是:5U系列不是简单升级,而是整个编程体验换了一套逻辑。它的编程软件GX Works3跟老款GX Developer完全是两个时代的产品,结构化编程、标签化变量、工程内多CPU配置这些能力,放在十年前是想都不敢想的。
所以如果你现在完全是零基础,我建议直接学FX 5U。理由很简单:你现在投入的时间,学的是未来五年、十年还会用到的技术栈,而不是一款已经停在原地的老工具。FX 5U是当前三菱小型PLC的主力机型,处理速度比FX 3U快非常多,内置以太网口,支持SD存储卡,指令体系也向中大型PLC(比如L系列、Q系列)靠拢。更关键的是,你学会了5U的GX Works3,后面遇到Q系列、iQ-R系列,至少界面逻辑是通的,不会两眼一抹黑。
这就像学车,你直接学手动挡还是自动挡?如果家里车是自动挡,你非要去驾校学手动挡,不是不行,但多花时间不说,上路之后实际用不上,反而增加负担。PLC同理,学就学当前主流选手,别跟即将淘汰的型号较劲。
这篇文章我会结合一个完整的FX 5U入门案例,从软件选择、硬件认识、编程思路、实操步骤到常见坑点,一步步带你把“PLC编程入门”这件事真正落地。你不需要有任何基础,但最好有一点点电气常识,比如知道常开常闭、继电器接触器大概是什么,否则有些概念你可能要多琢磨两遍。
2. 入门之前,先把工具链和硬件底子搞清楚
2.1 GX Works3:你以后天天要面对的主力软件
学FX 5U,第一件事不是背指令,是先把GX Works3装好。这款软件是三菱新一代工程软件,支持FX 5U、L系列、Q系列、iQ-R系列等多个产品线。它的核心变化在于:
- 基于标签的编程方式:你不再像老款GX Developer那样直接面对软元件地址,而是可以给地址起一个有意义的名字,比如
StartButton、MotorRun,程序可读性大幅提升。 - 多语言支持:梯形图、结构化文本(ST)、功能块图(FBD)可以在同一个工程里混用,这给复杂逻辑开发提供了很大自由度。
- 仿真功能:不需要马上买真机,写完程序可以先用内置仿真器跑一遍,这对零基础学习者来说太友好了,练手成本几乎为零。
- 在线修改和监控:程序在运行时可以直接修改,还能强制置位复位软元件,现场调试效率高很多。
装软件的时候注意几点:GX Works3对操作系统有要求,Windows 10/11的64位系统基本没问题,但安装路径不要带中文,否则后面编译或仿真可能出现一些莫名其妙的问题。另外第一次启动会要求注册许可证,可以先用试用版,功能上没有阉割,只是会有使用期限提示,足够你入门学习了。
2.2 认识FX 5U本体:接口、IO分配、扩展能力
FX 5U本体常见的有FX5U-32MR/MT、FX5U-64MR/MT等型号,后面的数字表示内置IO点数。比如32就是16点输入加16点输出,MR是继电器输出,MT是晶体管输出。选型的时候要结合负载类型:继电器输出可以接交直流负载,触点容量大,但响应慢、寿命短;晶体管输出只能带直流负载,但响应快,适合高频脉冲输出(比如步进电机控制)。
本体接口方面,FX 5U标配一个以太网口、一个USB口,还有RS-422/485串口,这对入门来说完全够用了。以太网口是特别实用的设计,我最早学的时候用USB线连接电脑,后来项目里远程调试时,直接通过以太网就能连接PLC,非常方便。扩展能力上,它可以扩展I/O模块、模拟量模块、高速计数模块、通信模块等,后期做实际项目不会因为点数不够而卡住。
2.3 别急着买PLC,先搭一套虚拟环境
很多初学者上来就问“我是不是得先买个PLC才能学?”。我的回答是:先不用。GX Works3自带仿真器,你可以直接新建工程,写一段梯形图,然后启动仿真,在电脑上模拟运行、观看变量变化、甚至强制修改输入状态。这套流程和真机操作几乎一致,足够支撑你完成入门阶段的大部分学习。
等你把基本指令、程序结构都摸熟了,再考虑买一台二手的FX 5U练手也不迟。我见过太多人一口气买了一套全新的PLC加扩展模块,结果学了两个月就吃灰了。工具永远是辅助,关键是先把编程逻辑的思路练通。
3. 从最简单也最实用的案例开始:电机启保停控制
3.1 案例需求拆解:启动、停止、自锁,这是PLC编程的“Hello World”
我用一个经典的电机启保停控制来做第一个案例。这个案例在工控领域的地位,就相当于编程界的“Hello World”。它的逻辑很简单:
- 按下启动按钮,电机运转。
- 按下停止按钮,电机停止。
- 启动按钮松开后,电机保持运转(自锁)。
- 过载保护动作时,电机停止。
这个需求涉及PLC编程里最基础也最重要的三个逻辑:输入采集、输出驱动、自锁回路。别看它简单,后面所有复杂程序都是由这种基础逻辑组合出来的。
为什么选择这个案例来入门?因为你能在最短时间内理解PLC程序扫描执行的核心机制:程序从头到尾循环执行,每个扫描周期读取输入状态、执行指令、更新输出状态。自锁回路的本质是利用输出触点反馈到输入逻辑中,形成保持状态。理解了这一点,你就知道PLC不是“按下按钮就有输出”那么直白,而是“满足条件才输出,输出又可能成为条件的一部分”。
3.2 软元件规划:先想清楚用哪些地址
在GX Works3里新建工程后,第一种编程方式是直接全局软元件编程,也就是传统的方式:直接用X、Y、M这些地址编程。在写程序之前,先在脑子里做一张软元件分配表:
| 软元件 | 注释 | 作用说明 |
|---|---|---|
| X0 | 启动按钮 | 常开触点,按下时闭合 |
| X1 | 停止按钮 | 常闭触点,按下时断开 |
| X2 | 过载保护 | 常闭触点,过载时断开 |
| Y0 | 电机接触器 | 控制电机运行 |
| M0 | 内部自锁继电器 | 用来辅助记忆运行状态 |
注意停止按钮和过载保护我用了常闭触点。这个设计不是随便写的,它遵循的是工业安全原则:停止按钮优先断开,如果线路断线了,设备也会停下来,而不是继续运行。也就是说,断线就等于停止信号,这是一种“失效安全”的设计思维。
很多初学者最容易犯的错误就是把停止按钮写成常开触点,按下停止按钮时才闭合。这种做法在逻辑上也能跑通,但如果按钮接线断了,系统会以为停止按钮没有被按下,该停的时候停不下来,这是非常危险的。
3.3 梯形图编写:三条指令实现启保停
在GX Works3里,新建一个梯形图程序,然后逐行写出如下逻辑:
| X0 启动 | X1 停止 | X2 过载 | Y0 电机 | |--[ ]----|--[\/]---|---[\/]--|--( )----| | Y0 自锁 | | | |--[ ]-------------| | |用文字描述就是:第一行,X0常开并联Y0常开,串联X1常闭、X2常闭,输出Y0。Y0的输出触点并联在X0两端,这就是自锁。
程序执行逻辑:按下启动按钮,X0闭合,电流通路导通,Y0得电,电机运行。松开启动按钮,Y0自身的常开触点已经闭合,所以电流仍然能通过Y0触点维持输出。按下停止按钮,X1断开,电流通路断开,Y0失电,电机停止。
这几条指令里面其实已经包含了PLC编程的三个核心思维:
- 并联关系表示“或”逻辑:X0或Y0闭合,都可以让通路导通。
- 串联关系表示“与”逻辑:X1和X2都闭合,通路才能导通。
- 输出线圈可以反过来作为输入条件,形成反馈回路。
如果你用的是GX Works3的标签式编程,可以自定义变量名,比如把X0命名为StartPB,把Y0命名为MotorRun。程序看起来会更直观,也更接近大型项目的开发方式。不过我建议入门阶段先用软元件方式,把地址和指令的关系吃透,再过渡到标签编程,这样你对底层的理解会更扎实。
3.4 仿真验证:在电脑上把程序跑起来
写完梯形图之后,点一下“编译”,确认没有语法错误。然后启动仿真模式,GX Works3会自动把程序下载到虚拟PLC中并开始运行。
仿真器的操作面板里可以强制修改软元件状态。你把X0强制为ON,模拟启动按钮按下,观察Y0是否变成ON。再把X0强制为OFF,模拟按钮松开,Y0应该保持ON不变,这说明自锁生效了。接着把X1强制为OFF,模拟停止按钮按下,Y0应该变成OFF,电机停止。最后再测试过载保护X2断开,同样能让Y0停止,并且无法重新启动,排除了过载状态下误启动的风险。
这个验证过程就是完整的调试流程。我强烈建议你每次写完程序都先仿真跑一遍,哪怕逻辑再简单也要跑,养成习惯以后做复杂项目时会省下大量现场调试时间。
4. 从启保停延伸到定时和计数:经典的两个进阶指令
4.1 定时器T:电机星三角启动为什么需要它
入门阶段第二个必学的指令是定时器T。定时器的本质就是一个延时继电器,但它的应用范围比你想的广得多。以星三角降压启动为例:电机启动时先用星形接法降压启动,经过3到5秒后切换到三角形接法全压运行。这个“延时切换”的动作,用定时器就是几行梯形图的事。
在FX 5U中,定时器编号从T0开始,分为常规定时器和累计定时器。常规定时器精度有1ms、10ms、100ms之分,一般选择时基为100ms的定时器,设定值K是定时时间除以时基。延时3秒,设定值就是30,因为30×100ms=3000ms。
梯形图里这样写:
| X0 启动 | Y0 电源接触器 | |--[ ]----|----------( )----------| | Y0 自锁 | T0 星角延时 | |--[ ]----|----------( )----------|这段的意思是:启动按钮按下后,Y0电源接触器吸合,同时T0开始计时。T0计时到3秒后,它的常开触点闭合,用来触发星角切换的下一步动作。
定时器的使用要注意一点:定时器是在它前面的条件一直成立时持续累加计时,条件一旦断开就复位清零。如果你希望累计计时,要用累计型定时器(ST系列)。很多新手用常规定时器做累计需求时发现时间不准确,就是这个原因。
4.2 计数器C:产品数量统计和一个不易察觉的坑
计数器指令C也是入门必学。它的作用是统计输入信号的通断次数。比如传送带上每经过一个产品,光电传感器就给PLC一个脉冲信号,计数器累加一次,达到设定数量后输出一个“满箱”信号,触发换箱动作。
FX 5U的计数器分为16位增计数器和32位增减计数器。入门阶段用16位增计数器就够了,编号从C0开始,设定值范围0~32767。梯形图写法类似:
| X3 计数脉冲 | C0 K100 | |--[ ]-------|-------( CC )----| | C0 满箱 | Y4 报警灯 | |--[ ]-----|-------( )--------|这段程序每检测到一次X3从OFF变为ON,C0就加1。当C0计数到100,它的常开触点闭合,Y4报警灯亮起。计数器达到设定值后继续接收脉冲,但计数不再增加,除非用RST指令复位。
这里有一个非常容易踩的坑:FX 5U的计数器边沿检测和扫描周期有关。如果输入信号持续时间太短,小于PLC的扫描周期,PLC可能检测不到这个脉冲,导致计数漏掉。解决办法是用输入响应时间更快的特殊功能,或者使用高速计数器。入门阶段你只需要知道有这个问题存在,等以后做高速计数应用时再深入。
4.3 边沿检测指令:为什么你的程序“不听话”
新手经常遇到一个困惑:按钮按一下,输出却一直翻转,或者只执行了一次就没反应了。这往往是因为没有使用边沿检测指令。
梯形图中常见的指令有:
- LDP:上升沿脉冲,检测信号从OFF变为ON的那一瞬间导通一个扫描周期。
- LDF:下降沿脉冲,检测信号从ON变为OFF的那一瞬间导通一个扫描周期。
- PLS:输出脉冲,让指定线圈导通一个扫描周期。
用一个日常例子解释:假设你要实现“按一次启动按钮,电机启动;再按一次,电机停止”,就是单按钮启停控制。如果不用边沿指令,直接用X0控制Y0取反,会产生什么结果?PLC一个扫描周期内,X0只要保持闭合,Y0的状态就会不断翻转,你会发现输出疯狂抖动。加了LDP指令后,只在X0由断开变闭合的那一瞬间执行一次取反,后续扫描周期即使X0仍然闭合,也不再触发,输出就稳定了。
边沿检测是PLC编程从“入门”到“进阶”的一道分水岭。它篇幅不长,但理解了它,你对PLC扫描周期的理解会深入很多。
5. 从简单逻辑到结构化思维:FX 5U的核心优势才刚开始
5.1 用功能块(FB)告别重复代码
入门阶段你会习惯一个程序覆盖全部逻辑,但在实际项目中,很多逻辑是重复的。比如你控制四台电机,每台的启保停逻辑、报警逻辑都一样,难道要复制粘贴四遍?当然不是,在GX Works3里可以用功能块(FB)来封装通用逻辑。
功能块相当于你自己定义的一个“指令模块”:它有输入引脚、输出引脚,内部封装了启保停逻辑。你在主程序里调用四次,每次关联不同的软元件或变量,代码量瞬间减少,而且后期要改逻辑,只改功能块内部就行了,四台电机全部同步更新。
这个思维比多记几个指令重要得多。因为PLC程序发展到最后,拼的不是指令背得多,而是怎么组织程序结构,让逻辑清晰、维护方便、排错容易。FX 5U的标签式编程和FB封装能力,就是从可靠性、可维护性角度设计出来的。
5.2 状态机思维:复杂流程怎么拆解
我见到很多初学PLC的人,一看到复杂的产线流程就头大,几十个I/O点,几十个动作,全部写在一个梯形图里,密密麻麻,改一个地方就要找半天。
比较推荐的方式是把复杂的流程拆成“状态”。比如一个自动分拣系统:待机状态、启动状态、输送状态、分拣状态、报警状态。PLC里面可以用M线圈表示当前状态,每一步只写当前状态会执行哪些动作、满足什么条件迁移到下一个状态。这就是状态机编程思想,在小型项目里用M线圈加跳转指令也能实现,在FX 5U里配合ST语言写起来更舒服。
这个思想不是PLC特有的,嵌入式编程、上位机开发里也都有。你如果一开始就养成分步、模块化思考的习惯,后面做复杂项目会轻松非常多。
5.3 什么时候从梯形图转向ST语言
FX 5U支持结构化文本(ST),这是一种类似高级语言的文本编程方式,适合数学计算、复杂逻辑判断、数据块处理。我用ST写过配方管理、模拟量换算、通信数据解析等模块,比疯狂堆梯形图要高效不少。
举个例子,一个温度传感器的模拟量转换:读到的原始值0~4000对应0~100度,如果你用梯形图写,需要先做减法、乘法、除法,一长串指令。用ST就一行搞定:
Temperature := RawValue / 4000.0 * 100.0;GX Works3允许你在一个工程里混用梯形图、ST、FBD,这就非常灵活了。我一般的原则是:开关逻辑用梯形图,因为它直观、好查线;运算和处理用ST,因为它简洁、不易出错。你入门阶段可以先全部用梯形图,把执行逻辑搞懂,然后再慢慢接触ST,不用着急。
6. 我踩过的几个坑,写出来帮你省时间
6.1 软件安装与连接的那些“奇葩问题”
GX Works3装好后,连接真实PLC时会遇到几种常见问题。
第一类是USB驱动没装好,电脑识别不到PLC。解决办法是安装软件自带的USB驱动,注意以管理员身份运行安装程序。第二类是以太网连接不上,检查电脑和PLC是否在同一个网段,FX 5U默认IP是192.168.3.250,你的电脑网卡要配成192.168.3.x。第三类是GX Works3的连接参数设置,要在“连接目标设置”里选择正确的CPU类型,如果是FX5U-32MR,别选成FX5U-64MT,选错型号会导致通信失败。
这些坑都不难解决,但网上教材很少讲,遇到时真的会卡半天。记住一句话:通信连不上的时候,先用ping命令测试网络通不通,通则查PLC侧参数,不通则查网线和电脑IP配置。
6.2 梯形图编译报错的高频原因
初学者最常见的三类编译报错:
- 线圈重复使用:同一个Y或M在程序里被输出两次以上,程序编译会报“重复输出”错误。解决办法是检查程序结构,拆分成多个输出或改用中间继电器。
- 软元件类型不匹配:定时器T、计数器C的编号和指令类型不匹配,比如把普通线圈号当成定时器编号使用。
- 上下母线不完整:梯形图必须有左母线和右母线,起始和终止逻辑要闭合。
编译报错本身不可怕,关键是养成“边写边编译”的习惯。每写一小段逻辑就编译一次,这样出错时能快速定位到具体行,而不是写了一大段才编译,满屏报错根本不知道从哪开始排查。
6.3 仿真通过,真机却不动作?原来是这些原因
仿真确实帮你排除了大量语法错误和逻辑问题,但仿真通过不等于现场没有问题。我遇到过好几次仿真一切正常,下载到真机后设备却不动作。排查下来一般是三类原因:
一是外部接线问题。PLC程序认为条件满足了,但实际接线没接通。比如启动按钮接的是X0,但你线接在X1上,程序当然没反应。排查办法是在GX Works3的监控模式下查看软元件当前状态,看X0是否真的变ON了。
二是输入输出公共端问题。三菱PLC的输入和输出模块都有公共端,公共端没接好,所有IO都不会工作。这个细节我在初学阶段经常忽略。
三是某个特殊辅助继电器的状态不对。比如某些情况下M0未复位、特殊寄存器配置不对,导致程序无法正常运行。这时要看特殊继电器M8000(运行监视常开)、M8001(运行监视常闭)等的状态,确认PLC确实处于运行状态。
6.4 学习路径建议:三个月从零到能接小项目
有些读者可能会问:“我到底要学多久才能独立做项目?”这个问题因人而异,但如果你能保持每天两小时的学习时间,我大概给你一条参考路径:
第一个月主攻软件操作和基础指令,把启保停、定时器、计数器、比较指令学透,每种指令都写一个仿真案例跑通。第二个月学习模拟量处理、常用特殊功能模块、通信基础知识,同时尝试用FB封装自己的功能块。第三个月开始做一套完整小项目,比如一台小型传送带分拣设备或者一台简单的温度控制系统,从IO分配、程序编写到仿真调试全程走一遍。
走完这条路,你就具备了接简单电气项目的基础能力。接下来再碰到新设备、新功能模块,你具备的是查文档、看手册、自己摸索的底层能力,而不是等别人教你——这才是入门真正的终点。
7. 一个学习工具:仿真器帮你建立“电-逻辑”直觉
7.1 仿真中观察扫描周期与变量变化
很多人刚接触梯形图时,很难把继电器硬接线的思维转化成PLC程序扫描的思维。仿真器最大的价值,就是让你在一个安全环境里反复观察这种转化过程。
你可以把X0强制为ON,然后单步执行程序,观察一条指令一条指令执行时,中间变量的变化顺序。你会发现,Y0的输出不是瞬间建立的,而是要等一个扫描周期结束后才更新。与此同时,X1状态被读取之后在这个周期内是不会变化的,除非到了下一个周期。这种“先采集、再处理、后输出”的节奏,就是PLC和传统继电器电路最本质的区别。
单步执行还有一个隐藏福利:你能看到程序的瓶颈在哪里。如果一段程序里有很多长延时指令或通信指令,扫描周期会被拉长,影响响应速度。通过仿真,你会开始建立“扫描时间”这个敏感度,写程序时尽量把需要快速响应的逻辑放在前面。
7.2 用仿真模拟现场故障
你不光可以仿真正常流程,还可以仿真故障。比如在电机启保停案例里,运行过程中强制断开X2过载保护,看自锁回路怎么断开输出;甚至在自锁断开后再次给X0一个ON信号,看设备能不能重新启动。这个过程能让你的逻辑设计更贴近真实场景。
养成“多考虑异常情况”的习惯很重要。写完了“主流程”只是完成了20%,剩下80%是各种边界条件:按钮失效怎么办?传感器信号抖动怎么办?断电恢复后设备应该停在什么状态?这些在仿真环境里都可以反复测试,成本为零,但能大幅减少你现场的调试时间。
7.3 仿真器的局限性,心里要有数
仿真器虽然好用,但它永远代替不了真实硬件。它的局限性主要有三点:
第一,仿真器不模拟真实外部接线,所以IO接线错误、公共端遗漏这类问题,仿真时完全看不出来。第二,仿真器不模拟真实的通信时序,涉及Modbus通信、以太网开放式通信时,最好还是上真机测试。第三,仿真器的扫描周期和真机有差异,如果用到了非常极限的高速脉冲输出或高速计数,仿真结果仅供参考。
所以我的学习建议是:仿真器作为学习工具,可以让你快速、低成本地积累逻辑经验;但你要找一个阶段点,买一台便宜的FX 5U,或者找公司设备练手,把真机调试的经验补上。这两条腿都走稳了,入门才算真正完成。
8. 下一步还能怎么走:把基础转化成项目能力
入门之后最大的考验是怎么把基础知识变成能交付的项目。我建议你给自己设一个明确的目标:做一个小项目,哪怕只是家中或实验室的一个小控制器。比如做一个“水箱液位控制系统”,用液位传感器检测水位,PLC控制进水阀和排水泵,水位高到上限停止进水,低到下限启动补水,同时输出一个故障报警。这个项目会逼你用上模拟量处理、比较指令、定时器、报警逻辑、还有状态显示,比单纯做练习题有效得多。
再从技术栈往外看一层:PLC很少单独工作,它上面连接着更复杂的现场设备,下面连接着传感器和执行器,旁边可能还有上位机系统(比如触摸屏、组态软件)。如果你后面想往智能制造方向发展,除了掌握PLC本身,还要学一点触摸屏组态(比如三菱GOT系列)、工业通信协议(Modbus RTU/TCP)、以及上位机数据采集的基础知识。PLC是一条非常清晰的“向下到底、向上无限延伸”的产业链,入门的入口不难,但天花板很高。
我在实际带新人的过程中发现,那些上手最快的人往往不是电气理论最强的,而是愿意把每个小案例反复做、直到能默写出来的那批人。PLC编程本质是逻辑思维训练,量的积累一定会带来质的变化。你不需要追求第一周就写多复杂的程序,先把启保停、定时、计数这些最朴素的小模块吃透,你就已经超过了绝大多数入门阶段就放弃的人。