我先说个实在话:市面上一堆讲三菱FX5U的资料,要么是官方手册那种几百页的“天书”,要么是培训机构的营销软文,真正能让人看一遍就上手、还讲清楚原理的,少。今天这篇,我就按自己这些年调试设备的经验,把FX5U最核心的基础知识一次性拆开讲透,从选型、软件环境、编程语法到调试思路,全走一遍。看完你至少能自己写一段能跑的程序,知道程序下载进去之后怎么监控、怎么排查,而不是对着屏幕发呆。
这篇内容更适合刚接触三菱PLC、或者从FX3U往FX5U迁移的朋友。有经验的老师傅可以跳过基础部分直接看通讯和避坑那两章,那些坑是我实际干活踩出来的。
1. 为什么是FX5U:三菱小型PLC的新一代主力
1.1 FX5U的定位与产品矩阵
三菱PLC产品线里,FX系列一直是小型机的主力。早年FX3U在市场上统治了很多年,直到现在还有大量设备在用,所以很多人的学习路径是FX3U起步。但FX5U从推出那天起就不是简单升级,它是三菱在小型机领域重新画了一条产品线,底子完全变了。
FX5U的定位是“小型机里的中端全能选手”,往上对接CC-Link IE现场网络,往下兼容传统RS-485串口通讯,本体自带以太网口,这个在FX3U时代是不敢想的。FX3U本体只有422通讯口,想联网得上扩展模块,成本和复杂度都高。FX5U把以太网做成标配之后,不管是连触摸屏、连SCADA上位机、还是跨PLC互相通信,都省了一大截功夫。
选型时要注意一个点:FX5U的CPU型号后缀有区别。比如FX5U-32MT/ES,这里的”32“代表IO点数(16输入+16输出),”M“是继电器输出,”T“是晶体管输出,”ES“是交流电源版本,”ESS“是直流电源版本。很多新手在选型时直接照着旧习惯买,结果把输出的负载类型搞错了。继电器输出能接交流负载但响应慢,晶体管输出只能接直流但能跑高速脉冲。做定位控制、带伺服或者步进的话,只能选晶体管输出,这个一开始就要想清楚,不然后期换CPU成本很高。
1.2 硬件扩展与内存配置逻辑
FX5U的扩展方式跟FX3U逻辑类似,左侧扩展模块接特殊功能模块(模拟量、通讯、定位),右侧扩展IO模块。但FX5U的扩展能力更强,最大IO点数可以做到256点(配合CC-Link远程站还能更多),程序容量64K步,数据寄存器空间也翻倍了。
实际项目里,FX5U最常见的扩展是模拟量模块和串口通讯模块。比如现场用压力变送器、温度传感器,0-10V或4-20mA信号接入,就需要FX5-4AD-ADP这类适配器;要和变频器走Modbus通讯,除了本体自带的485口,还能再扩展一个FX5-485ADP。我建议新手在做系统设计时先列一个IO清单,再列一个通讯需求清单,最后再决定需不需要扩展。很多项目出问题不是PLC本身不行,是选型时漏了需求,做到一半发现接口不够,只能强行加模块,布线乱成一团。
还有一个容易被忽略的地方是内置存储。FX5U支持SD存储卡,这点跟FX3U不同。SD卡可以存程序备份、配方数据、报警历史,还能做简单的数据采集。我做过一个项目,现场要求断电保存运行数据,当时就是用SD卡定时写数据,实际使用下来比用寄存器保持区灵活得多。存储卡不用买大容量,原厂1GB小卡就能跑得动,关键是要选兼容型号,不然初始化会报错。
2. 搭建开发环境:GX Works3与硬件连接
2.1 GX Works3软件的安装与工程创建
FX5U对应的编程软件是GX Works3,不是老款的GX Developer,也不是GX Works2。这一点很重要,我遇到很多从FX3U转过来的人,第一反应是拿GX Works2去连FX5U,结果发现设备列表里根本没有这个型号。GX Works3是三菱现在的统一工程软件,支持FX5U、L系列、Q系列、iQ-R系列,界面风格比GX Works2现代化很多,但学习曲线也陡一些。
安装方面,GX Works3目前主要支持Windows 10 64位和Windows 11系统,安装包有好几个G,安装时建议关闭杀毒软件,否则会有组件被杀掉导致打不开。装完后首次创建工程,系列选择“FX5U”,CPU类型要跟你手头实物一致,比如FX5U-32MT/ES就选FX5U-32MT/ES,选错了程序结构一样,但后续IO分配和注释可能对不上。
工程创建时的“扫描”机制值得说一句。FX5U的软元件分配通过“PLC参数”设置,用GX Works3配置特殊功能模块时,软件会自动分配地址空间,这点比GX Developer手动算地址好用。但有个坑是:当你修改了IO分配或添加了模块,需要做一次“全编译”再下载,否则PLC运行时可能出现软元件冲突,程序监控正常但输出不对,排查起来非常费劲。
2.2 程序下载与监控的基本操作
程序写好后,下载有两种方式:USB直连和以太网连接。USB连接最简单,用USB线连PLC的USB口(FX5U本体在左侧盖板里,有个Mini-B口),GX Works3里点“在线—当前连接目标”,选择“USB连接”,点测试之后能识别到CPU,然后就能下载了。
以太网连接需要先把IP地址设置对。FX5U出厂默认IP是192.168.3.250(具体以硬件铭牌为准),你的电脑要设成同一网段,比如192.168.3.100,然后在软件里通过IP连接。这里我踩过很多次坑,总结三个常见问题:
- 网线插对了没有?FX5U本体自带一个RJ45口,别跟扩展模块的口搞混。
- 防火墙有没有拦?Windows防火墙经常静默拦截,测试连接时一直超时,关掉防火墙瞬间就通了。
- IP网段对不对?这个是最常见的,电脑和PLC不在同一个网段,怎么连都连不上。
下载前记得先“编译”,编译通过后再点“写入”。写入时软件会提示是否执行全量写入,我建议初学者选全量写入,省得出一些莫名其妙的“程序不一致”问题。程序下载完成后,PLC会从停止状态切回运行状态,此时打开“监视模式”就能看到梯形图上的线条和软元件实时状态。
监视模式是调试的第一大工具。你在梯形图上能直接看到哪个触点通了(蓝色的高亮)、哪个线圈得电了。FX5U的在线监视刷新速度比FX3U快,基本上是毫秒级,肉眼观察足够了。遇到程序不动作,先看输入点X有没有过来,再看中间继电器M有没有置位,逐段排查,比瞎猜效率高十倍。
3. 编程基础:软元件与指令系统
3.1 软元件体系:X/Y/M/S/D怎么用
任何PLC程序都不外乎是“读输入—做运算—写输出”的循环。FX5U的软元件体系跟FX3U一脉相承,核心就那几类:
- X:输入继电器,对应物理输入端子。FX5U的输入编号是八进制,比如X0到X7,然后X10到X17,没有X8和X9。新手第一次看到X20这种编号会懵,其实就是八进制,数到7就进1。
- Y:输出继电器,对应物理输出端子,同样是八进制编号。
- M:内部继电器,相当于中间变量,不对外输出,只用于逻辑中间态。
- S:状态继电器,步进指令专用,后面做顺序控制时会用到。
- D:数据寄存器,16位存储数据。FX5U的D寄存器空间很大,可以做32位、64位运算。
- R:文件寄存器,掉电保持的大容量数据区,适合存放配方、报警记录等需要长期保存的数据。
- T/C:定时器和计数器,这个下面单独讲。
实际编程时,我建议养成一个习惯:给每个软元件写注释。GX Works3支持软元件注释批量设置,不要嫌麻烦。程序跑起来之后,注释就是你的“地图”,没有注释的程序三个月后自己都看不懂。我见过不少设备维保出了大问题,就是因为原程序没有注释,后来的人完全不敢动。
还有一个小细节:FX5U的M软元件分锁存区和非锁存区。默认情况下,M500以后的区域带电池保持功能,断电后状态不丢。如果你做的是需要断电恢复现场状态的设备,就要注意把关键M变量放在锁存区,否则一断电,中间状态全清零,重新上电后设备可能从零开始,这在自动化产线上是很危险的事。
3.2 基本指令:常开常闭、线圈与置位复位
梯形图编程的核心指令就是那些,跟你用什么PLC关系不大。FX5U基本指令包括LD(取常开触点)、LDI(取常闭触点)、AND(串联常开)、ANI(串联常闭)、OR(并联常开)、ORI(并联常闭)、OUT(输出线圈)、SET(置位)、RST(复位)。
举个例子,最简单的起保停电路:
X0(启动按钮) X1(停止按钮) Y0(电机接触器) |--| |----------|/|--------------( )--| | | |--Y0------------------------------|这段梯形图的逻辑是:按X0,Y0得电;松开X0后,Y0的常开触点形成自锁,所以Y0继续得电;按X1(常闭触点断开),Y0断电。这是电机控制里最经典的电路,搞懂它,你就理解了PLC“扫描执行”的基本逻辑:从左母线开始,按触点形态判断通断,最后决定线圈是否得电。
SET和RST指令的应用场景更广。SET是“置位”,执行后线圈一直接通,直到遇到RST。我习惯把SET/RST用在设备的状态控制上,比如一个气缸伸出用SET,缩回用RST。这样写程序逻辑清晰、不容易乱,而且调试时能直接通过置位强制某个动作,排查故障非常方便。
3.3 定时器与计数器:扫描时间思维入门
定时器在FX5U里有三种类型:T是通用定时器,ST是累计定时器,还有高速定时器。最常用的是T0-T199这类通用定时器,单位100ms或10ms。写法上,OUT T0 K50表示定时器T0定时50×100ms=5秒。定时器用起来很简单,但理解它的原理很重要:定时器是一个“倒计时”的软元件,线圈得电后开始计时,计时到预先设置的值,触点动作。
这里有个坑是断电复位。FX5U默认的T定时器是断电清零的,也就是PLC一掉电,所有定时时间清零重新开始。如果设备需要断电保持剩余时间(比如一个正在计时的工序突然断电,来电后继续计时),你就要用累计型定时器ST,它在断电后还能记住累计时间,下次通电接着走。做有工序时间的设备时,这个细节直接关系到断料后能不能恢复生产。
计数器逻辑类似,C0到C199是普通计数器,C200以后是高速计数器。普通计数器用法是:输入一个脉冲信号,计数器的当前值加1,等于设定值后触点动作。高速计数器则用来接编码器这类高频脉冲信号,做定位和测速。FX5U的高速计数功能比FX3U强一些,内置的计数通道配置在“PLC参数—高速计数器”里设置,不是直接用梯形图指令完成的,这点很多教程没讲清楚,很多人拿着指令手册找高速计数器指令,找半天找不到。
3.4 数据运算指令:加减乘除与数据传送
FX5U的数据运算指令比FX3U强大不少,尤其是浮点运算和字符串处理。最常用的几类:
- MOV:数据传送,把常数或寄存器的值复制到另一个寄存器。MOV K100 D0,就是把100存到D0。
- ADD/SUB:16位整数加减。ADD D0 D2 D4,含义是D0+D2的结果存到D4。注意运算结果的存储位置是最后一个操作数。
- MUL/DIV:乘法指令注意位数。16位乘16位结果可能是32位,FX5U有32位运算指令DADD、DSUB等,D开头的指令表示双字(32位)运算。
- 浮点指令:处理小数运算时用,比如DEADD是32位浮点加。实际项目中,模拟量信号转换、PID计算都涉及浮点,FX5U处理浮点速度很快,不像老款FX3U做浮点运算需要额外的运算时间。
举个例子,现场有一个压力变送器,输出4-20mA,接在模拟量模块通道1上,对应数值范围是0-1600(数字量)。如果你要显示实际压力,就要做一次量程换算:
// 假设模拟量值存在D100,实际压力存D110 // 第一步:减去偏移量(4mA对应的数字量约400) // 第二步:除以量程差值(20mA对应1600,4mA对应400,差1200) // 第三步:乘以压力上限(比如1.6MPa)这类换算如果全程用整数运算,会因为舍入误差导致显示跳变,所以我一般用浮点指令处理,最后再取整给触摸屏显示。FX5U的浮点指令用起来很顺手,但要注意浮点数在触摸屏上显示时,需要把寄存器类型设置为“浮点”,否则看到的是一个完全不对的整数。
4. 程序设计的核心思路:状态机与模块化
4.1 程序扫描机制与“顺序即逻辑”
理解PLC程序的本质,是掌握FX5U的关键。PLC是循环扫描的:从头执行到尾,然后重新从头开始,周而复始。扫描时间跟程序长度和指令类型有关,FX5U的扫描周期通常在几毫秒到几十毫秒之间。这意味着你在写程序时,要考虑“上一行执行完,下一行紧接着执行”的顺序特性。
新手最容易犯的错误,是以为PLC程序是“同时执行”的。实际上,同一个扫描周期内,X0的状态读取发生在程序最开始,Y0的输出刷新发生在程序最后。如果你在程序的靠前位置改变了Y0的状态,又在程序靠后位置用Y0的触点做判断,那用的是“上一轮扫描”的旧状态。这在复杂的联锁逻辑中会埋雷——程序看起来对,实际跑起来有时候动作、有时候不动。
我自己的做法是:写程序时尽量数据流单向流动,前一段算好的结果存到寄存器,后一段只用寄存器判断,不直接用输出触点。这样程序逻辑清晰,时序问题少很多。
4.2 用状态转移替代“爬梯形图”
设备控制程序写到一定规模后,全用梯形图“阶梯式”编程会让程序越来越乱。这时候要引入状态机思想。FX5U的步进梯形图指令(STL)就是为此设计的,内部对应S状态继电器。
举个最常见的例子:一个自动送料装置,有等待、送料、夹紧、延时、加工、退回、结束等步骤。用STL指令把每个步骤封装成一个状态块,状态之间有转移条件。这样做的好处是:
- 程序可读性极高,每一步做什么一目了然。
- 调试时可以看着当前停在哪个S状态,快速定位问题。
- 增加新工序,不需要改原有逻辑,只需新增一个状态块。
STL的用法是:SET S0 进入初始状态;每个状态块里,用LD条件+SET S20的方式跳转到下一个状态;状态块结束时用STL指令结束。FX5U的STL功能比FX3U更完善,支持嵌套和分支选择。
很多人觉得状态机编程难,其实掌握了套路后,比硬撸梯形图省力太多。我建议每个初学者都做一个小实践:用STL写一个红绿灯控制程序。十字路口红绿灯是经典的顺序控制案例——东西绿灯亮20秒,闪烁3秒,黄灯2秒,然后南北方向再循环。写完这个程序并仿真跑通,你就迈过了PLC入门的最大门槛。
4.3 模块化封装:子程序与FB
FX5U支持子程序调用和功能块(FB),这是它比FX3U更“现代化”的地方。子程序用CALL指令调用,适合把一个独立功能(比如一段初始化流程)单独写在子程序里。FB则更进阶,相当于你自定义一个“指令”,有自己的输入参数、输出参数和内部变量。
实际项目中,我经常把电机控制封装成FB:输入是启动信号、停止信号、故障信号、保护时间,输出是运行状态、故障状态。这样每个电机只要调用一次FB,填好对应的IO点就行。程序结构瞬间清爽很多,而且修改FB内部逻辑时,所有调用它的地方都会同步生效。
不过新手刚开始不要追求用FB,先把梯形图和STL掌握扎实。FB的调试难度比普通梯形图高,一旦封装内部有缺陷,排查起来要绕圈子。先把基本功练好,再做封装,水到渠成。
5. 通讯应用:触摸屏、变频器与上位机
5.1 FX5U以太网通讯的基本配置
FX5U最吸引人的一点,就是标配以太网口。这意味着你可以直接跟三菱GOT触摸屏、上位机SCADA系统以太网通讯,速度比传统串口快一个数量级。配置方法在GX Works3的“模块参数—以太网端口”中设置。
以连接威伦通触摸屏为例:威伦通在软件里选择“三菱FX5U Ethernet”驱动,填PLC的IP地址,通讯端口填默认的,就能直接读到软元件地址。这里有一个常见坑:FX5U的软元件地址映射到第三方触摸屏时,往往要加偏移量,比如D100在触摸屏上可能对应D1100或者偏移后的地址,具体看驱动说明。我第一次用威伦通连FX5U,数据死活读不上来,后来发现就是地址偏移没设置对,调整后秒通。
5.2 串口通讯:与变频器Modbus RTU实战
很多现场设备(变频器、温控表、仪表)走的是RS-485串口。FX5U本体自带的485口支持Modbus RTU主站通讯。配置时,在GX Works3里把串口设置为“Modbus RTU”,然后通过专用指令或直接读写从站地址实现通讯。
写一个最简单的例子:读变频器当前频率。前提是变频器的站号设为1,频率地址一般为40001(即Modbus地址2000H)。在FX5U里用Modbus指令执行读写,把返回的数据放到寄存器,再转换成实际频率值显示。这个过程涉及寄存器地址和字节顺序,三菱的数据格式是高位在前还是低位在前,不同厂家的变频器可能不一样,实测下来如果读出数值完全不对,大概率是字节顺序没设置对。
串口通讯的调试心得是:先用电脑的串口调试助手跟目标设备单独通讯一遍,确认地址、波特率、校验位都正确,再让PLC去跟设备通讯。这样可以排除很多干扰因素。不要PLC一通讯不上就去查PLC程序,八成问题出在参数配置上,尤其是波特率不一致、站号重复、485线A/B接反这三个基础问题。
5.3 远程监控:SCADA与生产数据看板
热词里有一类需求很典型:三菱可视化生产数据看板、SCADA如何与PLC连接。FX5U做SCADA通讯通常有两种方式:一是走以太网协议直接通讯(三菱的SLMP协议),二是在PLC程序里把实时数据整理到连续寄存器区,上位机周期读取。第二种方式最常用,也最可靠。
我在项目里经常这样设计:PLC把当前产量、运行状态、报警代码、温度值等数据,通过MOV指令集中存放到一段连续的D寄存器区域(比如D500-D599),上位机每500毫秒扫描读取一次这段区域。这样做的好处是通讯逻辑简单,上位机只读一个数据块,也不干扰PLC主程序。数据看板上的刷新率、历史趋势曲线都靠这段数据支撑,实测非常稳。
如果你打算用C#写上位机读PLC数据,频率控制很重要。不是越快越好,建议轮询周期设在200毫秒以上,读取命令打包批量读取,而不是一条一条读。否则PLC的通讯负载会被你撑满,影响主程序扫描,严重时表现为触摸屏按键迟钝、程序动作卡顿。
6. 常见问题与排查技巧实录
6.1 新手最容易遇到的五个问题
我做技术支持这些年,发现高频问题高度集中,这里整理成表格:
| 现象 | 最可能的原因 | 排查方向 |
|---|---|---|
| 程序下载不进去 | 通讯参数错误、PLC处在运行中 | 检查IP/USB连接、把PLC切到STOP再下载 |
| 输出点没动作但监控显示线圈得电 | 输出接线错误、晶体管输出接交流负载 | 查负载类型和接线,查COM端公共线 |
| 模拟量读数为0或满量程 | 信号类型与模块配置不匹配 | 查短路环/跳线设置、查通道量程配置 |
| 程序偶尔动作不正常 | 软元件地址冲突、定时器精度不够 | 查是否有重复使用地址、改用高速定时器 |
| 触摸屏数据全为0 | 地址映射错误、通讯参数不对 | 查驱动地址偏移、查PLC端以太网配置 |
6.2 排查的思路比技巧更重要
遇到问题最忌讳的就是盲目改参数、乱接线。我自己的排查习惯是:一看二测三换。先看PLC的RUN灯是否正常、通讯指示灯是否闪烁;再测端子上的电压,确认传感器信号确实进到PLC了;最后才考虑是否更换硬件或改程序。
举一个很典型的排查过程:现场反映某台设备动作没反应。我先看PLC输入指示灯有没有亮,如果输入灯没亮,说明传感器或信号源有问题,查传感器电源和线路;如果输入灯亮了,再看监控模式里X点是否置1;如果X点能置1但程序输出没变化,说明程序逻辑有问题,顺着梯形图逐段查;如果程序输出正常但外部设备不动,那就是输出回路或执行机构的问题。
这种层层递进的方法,能帮你快速把问题定位到“输入—程序—输出”三段中的某一段,而不是到处乱试。很多老师傅排查快,靠的就是这套方法。
6.3 FX5U特有的坑和习惯建议
对比FX3U,FX5U有几个不同的特性,容易让人栽跟头:
- 首次上电默认IP地址是固定的,如果你的网络里有多个FX5U且都未改IP,会冲突。新设备上电第一件事就是改IP地址。
- GX Works3的工程文件不兼容旧版软件,同事之间互传程序时,确认对方软件版本不能太低,不然打不开。
- FX5U的输入信号响应速度较快,如果现场传感器信号有抖动,需要在“PLC参数—输入响应时间”里设置滤波,否则计数不稳定。
- 用高速计数功能时要正确分配输入端子,FX5U的高速计数输入通道是固定映射到特定X端的,不是随便哪个输入口都能接高速信号,配置前必须先查手册确认通道占用的输入点,避免规划IO时把高速输入点当成普通输入用了,结果接上编码器才发现通道被别的信号占用,只能返工改接线。
最后再分享一个小习惯。我用FX5U做项目,一定会在程序开头留一个初始化段:把需要的M断电位全部RST,把D清零,把输出设备全部复位。这一段程序看似多余,实际非常有用——它能保证每次上电都是干净的初始状态,避免设备在复电后出现意外动作。这个习惯陪了我很多年,也让我少处理了很多“半夜三更设备自己动了”的麻烦电话。
FX5U是一个下限很低、上限很高的PLC。入门不难,但要真正在项目里玩好转它,需要时间去积累现场经验。希望这篇基础文章能帮你把地基打牢,建议拿一台实体机器或仿真软件边看边练,三个小时写出来的程序比你读十篇文章都有效。