1. 为什么新手入坑三菱PLC,首选学习路线和选型该怎么做
我第一次接触三菱PLC,是在一条老旧的自动化产线改造现场。当时手里只有一台FX2N,一本被翻得卷了边的编程手册,还有电脑上一个界面极其复古的编程软件。那条产线后来顺利跑起来了,但中间踩的坑、绕的弯路,至今想起来都觉得肉疼。如果你现在正准备学习三菱PLC,或者刚买回一台FX系列想动手试试,这篇内容应该能帮你省掉不少摸索的时间。
为什么说三菱PLC是很多电气人的入门首选?原因其实很现实:市面上存量设备多,招聘需求大,无论是设备维护、产线改造还是新项目开发,会三菱PLC的工程师几乎不愁活干。而且三菱的指令系统、软元件结构和编程思路,跟西门子、欧姆龙这些主流品牌有很多共通之处,学会了三菱再转其他品牌,适应成本会低很多。可以说,三菱PLC就是一台很好的"工控编程入门教练机"。
但"入门"这两个字,也最容易把人带偏。我见过太多新手一上来就抱着GX Works2去研究功能块、结构化编程,结果连X0、Y0、M0是干什么的都没搞明白,越学越懵。大家要清楚一个逻辑:三菱PLC编程的核心,不是软件操作,而是梯形图背后的扫描逻辑和软元件的使用思维。软件只是工具,你真正要理解和掌握的是"PLC在一个扫描周期里到底在做什么"。
那学习路线怎么安排?我的建议是四个阶段,按顺序走,别跳:
- 硬件认知:搞清楚PLC的输入端X、输出端Y、电源端子、通讯口,知道PLC怎么接线、怎么供电、怎么跟传感器和接触器连起来。不知道怎么接线就去编程,你会连"为什么Y0没输出"都排查不出来。
- 软件操作:会安装软件、会新建工程、会写一个简单的梯形图、会下载到PLC里、会在线监控。这一步的目的不是学软件,是让自己具备"写进去跑起来"的闭环能力。
- 指令与软元件:掌握基本指令(LD、LDI、OUT、AND、OR、SET、RST等)和常用软元件(X、Y、M、T、C、D),能用梯形图实现启保停、互锁、延时、计数这些经典逻辑。
- 案例实战:把电机正反转、星三角启动、流水灯、自动送料这些真实场景搬到梯形图里,边练边调试,直到能独立完成一个简单项目的全套控制逻辑。
这四个阶段里,大部分人会卡在第三和第四阶段之间。原因很简单:指令看着都会,一写复杂逻辑就蒙。别急,后面我会用一个完整案例把整个思路串一遍。先卖个关子,接下来先解决环境问题——软件装不上、连不上PLC,是新手放弃率最高的一个坎。
2. 编程软件选择与安装避坑:GX Works2、GX Developer、FXGPWIN
三菱PLC的编程软件,市面上主力是三个:GX Developer、GX Works2、GX Works3。还有一个专门给FX老型号用的FXGPWIN。新手最常问的问题是"我该装哪个",我直接给结论:现在学习,装GX Works2。别犹豫。
2.1 三个软件的核心区别
| 软件 | 适用PLC系列 | 界面与操作 | 我的评价 |
|---|---|---|---|
| FXGPWIN | FX1S、FX0N、FX2N等老款FX | 极其简陋,DOS时代风格 | 老设备维护偶尔用,新学别碰 |
| GX Developer | FX全系列、Q系列、A系列 | 传统Windows界面,视觉较旧 | 老工程师用得最多,稳定但功能有限 |
| GX Works2 | FX系列、L系列、Q系列 | 现代界面,支持工程内多程序 | 目前主流,新手首选 |
| GX Works3 | FX5U、IQ-R系列 | 最新界面,性能强 | 等FX3U学熟再转也不迟 |
为什么我推荐GX Works2而不是GX Developer?因为GX Works2不仅支持传统的梯形图编辑,还支持标签化编程和结构化工程,将来你从FX系列往更高端PLC走的时候,操作习惯不用推翻重来。而且它的仿真功能比GX Developer完善,在线监控、软元件批量监视、时序图监控这些调试手段都很顺手。对于学习来说,一个好的调试界面比花哨的功能重要得多。
2.2 安装过程中最容易踩的坑
安装GX Works2看着简单,实际不少人在第一步就翻车。最常见的是安装到一半报错,或者安装完打开工程时提示环境异常。根据我这几年帮人远程解决安装问题的经验,90%的失败都出在下面几件事上:
第一,安装路径和系统语言问题。GX Works2对中文路径支持不好,工程文件、安装目录只要带上中文,就可能出现打不开、保存报错的诡异问题。正确做法是:安装路径默认用英文目录(比如C:\MELSEC),电脑用户名也尽量用英文。这说起来是小事,但真的能坑掉你一整天。
第二,通用环境(EnvMEL)必须装。GX Works2安装目录里有个"EnvMEL"文件夹,里面的环境软件不装的话,主程序装完也会各种报错。很多绿色版、精简版安装包会把这个步骤略过,导致软件能打开但驱动和通讯功能缺失。安装时一定按顺序来:先装EnvMEL,再装主程序,最后重启电脑。
第三,驱动安装要单独处理。这是个大坑——GX Works2安装完成后,并不会自动安装PLC的USB通讯驱动。你需要手动进入安装目录下的"EasySocket"或"USB驱动"文件夹里找安装程序。否则你会遇到一个经典场景:软件装好了,梯形图写好了,点击"在线→PLC读取"却提示"无法与PLC通信"。新手第一次遇到这个提示,第一反应往往是怀疑PLC坏了,实际上就是驱动没装。
第四,系统兼容性。GX Works2对Win10、Win11的适配还算可以,但偶尔会出现安装后无法启动的情况。这时右键软件图标,选择"属性→兼容性",把兼容模式设置成Windows 7,一般就能解决。如果你用的是Win7或XP的老电脑,反而不用调。另外,关于Win7_8_10_XP的兼容性问题,网上很多人找FXGPWIN的老版本安装包,建议直接用GX Works2代替,因为FXGPWIN不支持USB通讯,只能走老式编程线,转接麻烦,学习阶段完全没必要。
2.3 关于"Works2能不能读FX3U"这个老问题
经常有人在网上问"GX Works2能读FX3U吗",答案是能,而且FX3U是GX Works2的主要支持对象之一。但这个问题的背后有个容易误解的点:GX Works2新建工程时,PLC系列要选对才行。如果你选成FX系列里的FX2N,去读FX3U的工程,会提示型号不匹配;反过来选成FX3U,读老设备的FX2N工程也会有问题。经验是:新建设备时尽量选你实际PLC型号的大系列,不要为了"通用"去选兼容模式,否则后期软元件范围、指令支持都会受限,调试时会出现很多奇怪现象。
另外提醒一下,FX3U和FX3G、FX3GC、FX3UC这几个型号在GX Works2里是分开的,选错型号虽然一般也能连接,但部分特殊软元件、定位指令的地址会不一致,新手容易搞晕。拿不准的时候,看PLC本体侧面的铭牌,型号写得清清楚楚,照着选就行。
3. 三菱PLC编程必须吃透的核心基�础:扫描周期、软元件与数据格式
软件装好,接下来就得说真正的东西了。很多新手教程一上来就画几个梯形图让照抄,抄完了图也能动,但换个场景、换个设备就完全不会写了。问题出在基础概念没打通。这一节我用最直白的话,把三个最核心的概念讲透。
3.1 扫描周期:PLC不是"同时执行"程序的
PLC执行程序的方式,跟很多人想象的不一样。它不是像人看图纸一样从头扫到尾然后"同时"驱动所有输出,而是从上到下、从左到右逐行扫描,扫完一遍再从头扫,无限循环。这个循环一次的时间,叫扫描周期,FX系列的扫描周期通常在几十毫秒级别(程序大的话会更长)。
为什么要重视扫描周期?因为它会直接影响程序的执行结果。举个例子,你写了一个逻辑:X0接通后让Y0置位,Y0又作为条件去触发Y1,Y1再反过来影响X0的判断。如果不懂扫描周期,你会觉得"这些条件应该同时成立",但实际执行的时候,每一行指令在扫描到的那一刻才被处理,前面的输出状态变化,要到下一轮扫描才会被后面的指令"看到"。这就是为什么在PLC编程里,"输出刷新"和"程序执行"是分开的两个阶段。调试的时候遇到"明明逻辑看着没问题但输出不对"的情况,十有八九是扫描周期的理解出了偏差。
提示:新手调试第一件事,永远先看"监控模式下的当前值变化",而不是猜逻辑。在线监控时每个软元件旁边会实时显示通断状态,你能直观看到扫描过程对结果的影响。
3.2 软元件:PLC的"内存变量",但用法有讲究
三菱PLC里,各种编号的X、Y、M、T、C、D,统称软元件。它们本质上就是PLC内部的存储单元,功能上类似编程语言里的变量,但使用上有一些特殊规则。
- X(输入继电器):接外部按钮、传感器信号,编号按十六进制排列,如X0、X1、X2……不能由程序内部强制驱动,只能靠外部硬件信号改变状态。
- Y(输出继电器):驱动外部接触器、指示灯、电磁阀,程序里写Y0的输出状态,最终通过PLC的输出端子反映到外部。这里注意,同一个Y在程序里不要写两次以上(俗称双线圈),后面我会专门讲这个坑。
- M(辅助继电器):程序内部用的中间变量,相当于内部标志位。FX3U的M编号范围很大,M0~M7679这些普通型的够新手随便用。特别注意M8000及以后的部分是特殊辅助继电器,有固定含义(比如M8000是运行监视常开触点),不要去改它。
- T(定时器):延时用,单位有100ms、10ms、1ms等,取决于编号段(比如T0~T199是100ms定时器)。
- C(计数器):计数用,C0~C199是普通计数器。
- D(数据寄存器):16位存储单元,用来存数值,比如传感器采到的距离数据、计算的结果、报警代码等。
这些软元件的地址范围,我强烈建议你拿到手册后把表格完整看一遍。不用背,但要知道"我用的这个型号,M到多少号是普通区、T哪些是10ms"这种边界。因为软元件一旦用超范围,程序编译时会报错,但用错类型(比如把定时器T当计数器C用)编译不报错,运行结果却完全不对。这种错误在初学者程序里非常常见,而且是那种"看半天看不出来"的隐蔽bug。
3.3 数字格式:BIN、HEX和BCD千万别混淆
PLC内部处理数据,默认是二进制(三菱手册里常叫BIN)。但人机交互时,我们习惯看十进制,有些传感器或外部设备输出的又是BCD码(二进制编码的十进制)。这三者之间的转换,是新手容易栽跟头的地方。
举一个真实例子:你用拨码开关给PLC输入一个数字,拨码开关输出的一般是BCD码,每一位拨码对应一位十进制数(用4个bit表示0~9)。如果你在程序里直接用MOV指令把这个值搬给D0,再把D0拿去和K100比较,结果会完全错误。因为D0里存的BCD码值100,换算成二进制后实际对应的是十进制的256(假设你拨的BCD是0100 0000 0000这种)。经验性的做法是:先判断数据源是什么格式,再用BCD转换指令或者直接用对应指令去处理,不要上来就MOV。
新手阶段,你至少要知道三组常用关系:
- K后面跟的是十进制数(比如K100代表十进制的100)
- H后面跟的是十六进制数(比如H10代表16)
- BCD码和BIN码互转需要用到指令(比如MOV带着转换属性,或者用特殊的数值输入指令)
搞清这些,你后面学模拟量采集(把4~20mA信号换算成工程值)、学通讯数据解析(Modbus报文里的寄存器值都是16进制)都会顺畅很多。可以说,数值格式是PLC编程从"画图"迈向"写逻辑"的一道分水岭,跨过去之后,你能处理的问题复杂度会一下子提升一大截。
4. 梯形图基本指令的实战理解:从点亮一个输出到完整逻辑控制
梯形图是三菱PLC编程的主要语言。很多新手把它当成"电气接线图"来看,这个类比有道理但不够准确——梯形图虽然长得像电路图,但它表达的其实是逻辑运算关系,不是电流流动关系。你要理解的是"触点闭合产生逻辑真,逻辑真驱动线圈置位",而不是"电流从左边流到右边"。
4.1 必须掌握的十来个基本指令
我把新手第一周内必须熟练掌握的指令列出来,建议每个都在软件里敲一遍、下载到PLC里实际验证一遍:
| 指令 | 功能 | 使用场合 |
|---|---|---|
| LD | 常开触点,逻辑起始 | 每一行梯形图的第一个条件 |
| LDI | 常闭触点,逻辑起始 | 用"停止"信号做常闭条件时 |
| OUT | 驱动线圈输出 | Y、M都能用 |
| AND | 串联常开触点 | 多个条件同时满足时 |
| ANI | 串联常闭触点 | 互锁、禁止类条件 |
| OR | 并联常开触点 | 多个条件任一满足时 |
| ORI | 并联常闭触点 | 常闭触点的并联 |
| SET | 置位线圈并保持 | 需要锁存状态的场合 |
| RST | 复位线圈 | 取消SET的保持状态 |
| PLS/PLF | 上升沿/下降沿脉冲 | 只在信号变化瞬间有效一周期 |
| MC/MCR | 主控开始/结束 | 一段逻辑的总开关 |
| MOV | 数据传送 | 把数值搬入寄存器 |
这里重点说SET和RST。很多新手区分不清SET/RST和OUT的区别,其实很简单:OUT的输出状态取决于每一扫描周期该行条件是否成立,条件一断就熄灭;而SET一旦触发就会一直保持,直到执行RST才断开。这个特性在搞"气缸到位后要一直保持某个状态"、"报警发生后要锁定报警信号"这类场景时非常实用。
4.2 一个例子串起基本指令:电机启保停加运行指示
光讲指令没意义,我们串一个最简单的实战逻辑——电机启保停控制,这在电气控制里是必学电路。
控制要求:按下启动按钮(X0),电机接触器(Y0)吸合并保持;按下停止按钮(X1),Y0断开;电机运行期间,运行指示灯(Y1)常亮。
梯形图逻辑(简化描述):
第一行:X0常开触点与X1常闭触点串联,再与Y0自身的常开触点并联——这就是启保停经典结构。
- 按下X0时,X0导通,Y0线圈得电;
- Y0得电后,它自己的常开触点闭合,即使X0松开,电流"路径"仍然保持;
- 按下X1时,X1常闭触点断开,Y0失电。
第二行:Y0的常开触点串联一个Y1线圈,Y0得电时Y1跟着亮。
这个程序看起来简单,但它包含了PLC编程最核心的几个思想:常开常闭触点的用法、自锁保持的实现、逻辑条件的串联和并联。你能独立不看答案写出这个程序,并且把X0、X1、Y0、Y1接好线和PLC实际跑通一遍,基本指令就算是入门了。
4.3 互锁逻辑:机械安全的重要屏障
再往深一点,做电机正反转控制时,必须加互锁。正转接触器(Y0)和反转接触器(Y1)绝对不能同时吸合,否则就是相间短路,轻则烧接触器,重则出安全事故。
梯形图里做互锁的标准手法有两道:
- 程序互锁:在Y0的线圈回路里串联Y1的常闭触点,在Y1的线圈回路里串联Y0的常闭触点。这样Y1一旦吸合,Y0回路里的Y1常闭触点就断开,Y0永远不可能得电。
- 按钮连锁(可选但推荐):正转按钮X0和反转按钮X1也做常闭串入对方的回路,防止操作人员同时按下两个按钮。
这里想强调的是,互锁不能只靠一套。我见过一个工程案例,程序里互锁做得好好的,但现场调试时接触器依然同时动作了,查了半天发现是外部接线里接触器的辅助触点接错。所以做设备控制时,程序互锁要写,外部硬互锁(接触器辅助触点的物理互锁)也要做,两道都上了才叫安全。这一条经验,希望所有搞PLC编程的同行都刻在脑子里——你写的每一行梯形图,最终是去控制一台物理设备的,出错是要出事的。
5. 一个完整案例吃透扫描逻辑:定时器与计数器的综合应用
讲完基础指令,我们来做一个稍微复杂的练习。这个案例是我当时教过一个零基础朋友用的,他跟着做完后,对PLC编程的理解一下子上了一个台阶。你不妨也在GX Works2里敲一遍,有条件的话下载到PLC里接上开关和灯泡测试。
5.1 控制要求
设计一个流水灯控制系统:按下启动按钮X0后,三盏灯L1(Y0)、L2(Y1)、L3(Y2)按以下规律动作:
- 三盏灯全部熄灭1秒;
- L1点亮1秒后熄灭;
- L2点亮1秒后熄灭;
- L3点亮1秒后熄灭;
- 回到第1步循环,直到按下停止按钮X1。
5.2 定时器链条的写法与原理
这个程序的核心思路是"定时器接力"。每个定时器的常开触点作为下一个定时器的启动条件,形成一个时序链条。
梯形图逻辑(简化表述):
- T0定时2秒:X0按下后,T0开始计时,2秒后T0触点动作。这个2秒包含了"全灭1秒+L1亮1秒"的时长。
- T1定时1秒:T0触点动作后启动T1计时,同时Y0得电(L1亮)。1秒后T1动作,把Y0断开。
- T2定时1秒:T1触点动作后启动T2计时,同时Y1得电(L2亮)。1秒后T2动作,把Y1断开。
- T3定时1秒:T2触点动作后启动T3计时,同时Y2得电(L3亮)。1秒后T3动作,把Y2断开。
- 循环:T3触点动作后,再启动一个T4(或者直接利用T3触点重新触发T0),整个链条从头开始。
写完你会发现一个关键问题:T0计时2秒,是从扫描到T0那一行开始的,但T1、T2、T3是接力触发的,它们每一轮开始计时的时机不同。在这个程序里,每次定时器链条跑完之后,一定要确保所有定时器和输出都复位到初始状态,否则下一轮循环会错位。处理办法是让停止按钮X1按下时,对T0~T3、Y0~Y2全部做RST复位。
这个案例看着简单,但它训练了三个能力:定时器接力延时、循环逻辑的构建、复位处理的完整性。尤其是最后一个"复位要完整"的意识,很多初学者就没有——写完启动逻辑忘了复位逻辑,结果程序跑三五个循环后状态就乱了。
5.3 计数器配合使用:生产计件场景
定时器搞定了,计数器其实思路类似。比如产线上来一个工件,光电传感器X2给一个脉冲,计数器C0加1。当C0计满10个时,给一个Y10输出,提示"一箱已满"。
计数器使用有两个细节值得注意:
- 计数器的复位必须可靠。C0计数到10后,即使你输出Y10,如果不执行RST C0,它不会再重新计数。实际项目里,通常用"人工按下确认按钮"或者"PLC内部定时延时"来复位计数器,同时联动一个装箱完成的标志位。
- 输入信号的去抖问题。现实中传感器的信号不是理想的脉冲,工件经过时可能有抖动,一次到位会产生多个脉冲。解决办法是给输入信号加延时滤波,可以用一个几毫秒~几十毫秒的定时器对输入做"确认",只有在X2持续导通超过一定时间才认定为有效信号。这个技巧在计数、定位、防抖场景都适用,属于工控编程里的通用经验。
6. 初学者最容易翻车的五个问题与排查思路
最后这一部分,我专门聊聊初学者在实际操作中反复出问题的五个场景。这些都是我自己见过、帮人排查过无数次的真实问题,每一条都有代表性。如果你正在调试却不知道从哪里下手,按这条思路走一遍,多半能解决问题。
6.1 双线圈输出:程序里同一Y写了两次
新手很容易写出这样的程序:程序前半段因为有某个条件,Y0需要输出;程序后半段又有另一个条件,Y0再次被OUT。这在编译时不报错,但运行的最终结果只有最后一个OUT生效。因为PLC扫描是从上到下的,后面的OUT覆盖前面的OUT,前面的逻辑等于白写了。
排查方法很简单:在线监控时,如果发现某个Y的状态跟你前半段程序推出来的结果不一致,优先检查整个程序里这个Y出现了几次。改法有两种,要么把逻辑合并成一行(用串联并联一个输出),要么改用SET/RST分离控制。记住一条铁律:一个线圈在一个程序里只OUT一次,这是PLC编程的入门红线。
6.2 输入信号抖动用"闪烁""乱跳"去猜
刚才提过的去抖问题,在按钮和传感器上都常见。尤其是老式按钮,按下和松开的过程中触点会有弹跳,导致PLC捕捉到多个高低电平脉冲。如果你的程序里有PLS上升沿或计数器,就会错误触发。
处理思路不是靠硬件滤除,而是在程序里做软件滤波:用定时器做一个延时确认,X0信号持续20ms以上才认定为有效。FX等PLC的输入端子本身有滤波时间设置,但默认值对机械触点可能不够,建议还是程序里自己写。
6.3 分不清"停止信号"该用常开还是常闭
这是一个老生常谈但每次都有人问的问题。控制要求里说"X1按下停止",那么梯形图里X1应该用常闭触点串联在其他条件后面。逻辑是:常闭触点代表"没有按下时有电",一旦按下就断电,正好对应停止。
但很多人会写反,把停止按钮接到常开触点上,然后发现程序运行不了或者逻辑混乱。判断标准其实很简单:对停止信号、急停信号、限位保护信号这类"断开才安全"的输入,一律用常闭触点;对启动信号这类"接通才动作"的输入,用常开触点。这里有一个安全惯例:急停按钮硬件上一定要接常闭触点,因为急停线断了、接触不良时,系统能检测出信号并安全停止,而不是默认"没按下就是正常"。
6.4 在线监控连不上:驱动、COM口、型号不匹配
这问题我放在最后写,但实际发生频率最高。一台FX3U,USB线连电脑,GX Works2点通讯测试就是失败。原因按出现频率排序:
- USB驱动没装(前面讲过,最常见);
- COM口被其他软件占用(关闭串口调试工具、其他PLC软件);
- 通讯测试里选错COM口号(设备管理器里看清实际端口);
- 工程里的PLC型号与实际设备不匹配;
- USB线问题(有些线只能充电不能传数据)。
排查就是按这个顺序从上往下查。对了,还有一个经常被忽略的小细节——PLC要上电。这个问题听起来可笑,但我真见过好几个新手拿着USB线接上没通电的PLC,在电脑前折腾半小时。设备都没通电,通讯当然失败。
6.5 程序下进去设备不动作:先查外部接线,再查程序
很多新手程序逻辑明明没问题,Y0的监控状态也显示"接通",但设备就是不动作。这时候别去改PLC程序,先拿万用表量Y0端子有没有电压、公共端S/S的接线是否正确。PLC输出端子的接线和传感器接线不是一回事,漏接公共端、接错电源极性,输出逻辑再对设备也起不来。我一直跟学员强调:PLC编程和电气接线是两条腿走路,只会写梯形图、不会查外围线路,调不了设备。
最后说点真心话
在我接触过的所有可编程控制器里,三菱PLC确实是对新手最友好的一个。它入门不难、资料好找、网上能搜到大量案例,但入门之后能不能真正长本事,取决于你对扫描周期、软元件这些基础概念的重视程度。这些东西不扎实,后面玩定位控制、通讯、模拟量处理都会非常吃力。
顺便再分享一个很有用的学习方法:拿到任何一道控制逻辑题,先别急着打开软件画梯形图,先在纸上用文字把条件梳理清楚——"什么条件下什么输出动作、什么条件下保持、什么条件下复位"。这一步做顺了,写梯形图就是翻译工作。我这么多年带人做项目,凡是养成了这个习惯的,上手速度都比别人快一大截。
这次先聊这么多。等你有机会把文章里的启保停、定时器链条、计数器计件这几个案例都在PLC上跑通,就可以去看模拟量采集和RS485通讯了,那才是真正通往高手的下一道关卡。祝大家早日点亮自己的第一台设备。