
新手入门三菱FX系列PLC最容易被卡住的其实不是编程本身而是对“这台设备到底能干什么、我要从哪里开始”没有清晰的概念。尤其是FX3U这类经典型号网上资料多但太散官方手册又厚得吓人翻两页就劝退了。这篇文章我尽量按自己实际带新人时总结的路径来讲——选型、装软件、搞懂软元件、上手指令、跑几个典型案例、再聊聊通信和排查一路走完你至少能独立写一个完整的控制程序并且有信心把它调通。1. 动手前的整体设计选对型号装对软件1.1 搞清楚FX系列的家谱再下手三菱FX系列是小型PLC里生命力最顽强的一支从早期的FX0、FX1N、FX2N到如今主流的FX3U、FX3G、FX3GA还有内置以太网的FX5U这十多年走过来硬件接口和控制指令基本一路兼容。初学者最常问的就是“我该买FX3U还是FX3G”我的建议很简单如果预算允许直接上FX3U原因不是参数更好看而是它的扩展能力和指令集完整度能让你从入门一直用到做中小型项目不换平台。FX3U和FX2N的指令体系高度兼容这意味着网上大量前辈用FX2N写的老例程拿到FX3U上基本可以直接导入修改。对学习来说能参考的实战资料多比那一点差价重要得多。如果你只是做简单的小设备继电器输出型的FX3U-32MR就够用要是涉及脉冲定位、模拟量采集就要考虑晶体管输出型MT或者加扩展模块。这一块很多人买回来才发现输出类型不对白折腾一场。还有一个容易忽略的细节FX3U的输入输出端子是拆卸式排插接线比老款方便不少维修时拔下来就能换点。实地干活的人会懂这个设计多贴心。1.2 编程软件GX Works2是当前唯一推荐老手可能还记得FXGP/WIN那个蓝色小窗口那是FX2N时代的标配。问题是它在Win7之后的系统上兼容性相当差装上了要么打不开要么连不上PLC折腾驱动的工夫比写程序还长。如果你手里只有FX2N老设备那没办法只能去找FXGP/WIN的兼容版配合虚拟机用但凡你的设备是FX3U或更新型号直接上GX Works2别犹豫。GX Works2一个软件同时支持简单工程和结构化工程两种模式。简单工程就是传统的梯形图一个程序段一个程序段往下写和FXGP/WIN的习惯一脉相承结构化工程则是按功能块组织程序更适合复杂项目和团队协作。入门阶段用简单工程就好等你有了一定积累再研究结构化不迟。安装方面说两个容易踩的坑一是GX Works2对环境要求比较“洁癖”最好在纯净系统上装杀毒软件可能误杀它的注册机或驱动文件装之前先把实时防护关掉二是安装路径不要带中文否则仿真和通信驱动偶尔会出莫名其妙的问题。我第一次装的时候就因为路径里带了个中文文件夹名仿真死活连不上虚拟PLC查了半天才醒悟过来。2. 编程基础X、Y、M、D这套字母体系就是PLC的“细胞”2.1 软元件分类与命名规则PLC程序里所有操作对象都叫软元件你可以理解成PLC内部划出来的一块块存储区每个区域有固定的字母前缀和编号范围。FX3U最常用的有这么几类X是输入继电器对应物理输入端子比如X0就是第0号输入点Y是输出继电器对应输出端子M是内部辅助继电器相当于程序里的中间变量D是数据寄存器存数值用。这里最关键的一点是X和Y的编号和实际端子是一一对应的写程序时千万不要凭感觉改编号。有人为了“看起来整齐”把程序里的输出点从Y10开始编结果实际接线的设备在Y0上程序怎么跑都没反应。排查半天最后发现是编号错位这种低级错误在老现场并不少见。M继电器又分几种通常型M0-M499断电不保持断电保持型M500-M1023停电后状态不丢。用哪一类取决于工艺要求——比如设备急停后重新上电需要恢复之前的状态就选保持型只是临时用的中间状态用普通型就够了免得PLC里存了一堆没用的旧数据下次开机出问题。2.2 数据类型和寻址方式别搞混FX3U的D寄存器默认是16位存的范围是-32768到32767。如果你要存大于这个范围的数就必须用32位指令也就是把相邻两个D寄存器合并起来用。这一块初学者最容易犯迷糊——比如想存一个50000的数值直接往D0里写结果PLC显示负数或者乱码其实就是数据溢出D0装不下得用D0和D1组合并且指令用32位的版本比如DMOV。寻址方式上FX3U支持直接寻址和变址寻址。直接寻址就是指定具体编号的软元件比如MOV D0 D10把D0的值拷贝到D10。变址寻址时要配合变址寄存器Z和V使用简单理解就是“地址本身也是变量”比如MOV D0Z D10实际操作的地址是D0加Z当前值的那个寄存器。这个功能在做配方切换、多轴联动时非常实用。但入门阶段先别碰把固定寻址练熟了再说。2.3 梯形图的扫描逻辑思维PLC程序和电脑程序最大的区别在于它是循环扫描执行的。CPU从上到下、从左到右把整个程序扫一遍扫完之后再从头开始这个循环周期叫扫描周期。FX3U基础型号的扫描速度是纳秒级每条指令一个几百步的程序通常几毫秒就扫完了。这个机制直接决定了你写程序的思维方式不是“事件驱动”而是“状态刷新”。比如电脑程序里你写一个if语句满足条件就执行一次PLC里你写一个常闭触点串在回路里只要它断开输出就立刻跟着断不需要任何事件通知。理解“每一行指令在每个扫描周期都要被重新评估”这件事是PLC编程思维和软件编程思维最大的分水岭。3. 指令系统实操真正常用的没几个但每个都要吃透3.1 位逻辑指令是地基三菱PLC的位逻辑指令是所有程序的地基。最基础的五个LD取常开触点、LDI取常闭触点、AND串联常开、ANI串联常闭、OUT驱动线圈。别看简单真正常用的组合其实非常有限但它们的排列组合能组成所有逻辑控制。举个例子电动机启保停电路老电工都知道的经典控制翻译成梯形图就是X0启动按钮并联Y0输出线圈再串联X1停止按钮的常闭触点最后驱动Y0。这个逻辑之所以经典是因为它完美展示了PLC和继电器控制的对应关系。很多人在这一步才真正明白“常闭触点”的意义X1平时是通的一旦按下停止按钮X1的常闭触点就断开线圈失电设备停机。把这段逻辑亲手在GX Works2里敲出来下载到PLC并实际通电验证之后你对梯形图的信任感会完全不同。3.2 定时器和计数器控制节奏的灵魂定时器T是接入程序的“时间传感器”。FX3U的定时器分两类通用定时器T0-T199精度100ms高速定时器T200-T245精度10ms。100ms什么意思就是设定值K100代表10秒。这个换算关系每年都有新人搞错把K100当成1秒程序跑出来的时间完全不对。定时器的用法也分通电延时和断电延时。通电延时是最常见的——条件满足后开始计时时间到常开触点闭合。断电延时在FX3U里需要用定时器和辅助继电器组合实现初学者不需要深究知道有这个区别就行。实际项目中电机星三角启动的延时切换、传送带的分段停歇、设备预热时间都是定时器在起作用。计数器C则是“数次数”的元件。FX3U的计数器分16位增计数器和32位增减计数器。16位增计数器的特点是只能往上加数到设定值就动作需要手动复位。比如你要求设备运行满100次后报警就用C0配合K100的设定值把需要计数的信号串到C0的计数脉冲输入端再加一个复位按钮。计数器在冲压、注塑这类按次数计件的设备里用得非常多。3.3 应用指令重点四则运算、比较与传送应用指令也叫功能指令是FX3U真正强大的地方。热词里专门提到“三菱FX3U加减乘除指令用法”这里集中讲清楚。四则运算指令的核心就四条ADD加法、SUB减法、MUL乘法、DIV除法。写法上要注意的是指令的格式是“指令名 源操作数1 源操作数2 目标操作数”。比如ADD D0 D1 D2含义是D0加D1的结果存到D2。这里有个隐藏的细节源操作数有两个目标操作数只有一个而且目标操作数不能和源操作数互相覆盖否则结果可能被覆盖掉。我第一次写的时候图方便ADD D0 D1 D0以为把结果存回D0没问题结果扫描周期一变后面的程序取D0时已经是新值逻辑全乱。乘除法要特别注意32位数据的问题。MUL是16位乘法两16位相乘结果是32位必须占用两个目标寄存器。比如MUL D0 D1 D2实际结果是D2低位和D3高位组合成的32位数。如果后面还要对这个结果继续运算得用DMOV把D2和D3一起搬到别处。DIV除法也一样16位除法余数存在目标操作数1的寄存器里——这个细节在官方手册里写得清清楚楚但新手基本都吃过亏。比较指令CMP也是高频指令。CMP D0 D1 M0的意思是比较D0和D1的值结果自动影响M0、M1、M2三个继电器——D0D1时M0导通相等时M1导通小于时M2导通。这种三合一的输出逻辑在程序里做分拣、报警、模式切换时非常方便。还有传送指令MOV和FMOV。MOV是把数值或软元件的值拷贝到目标比如MOV K100 D0就是给D0赋值为100。FMOV则是把一个值填充到一段连续的寄存器区域常用于批量复位——一次FMOV K0 D0 K50把D0到D49全部清零比写50条MOV高效多了。3.4 使用应用指令的几条实战纪律应用指令虽然强大但用起来有几个纪律必须遵守第一目标操作数尽量单独划分区域别和源操作数挤在一起方便后期排查第二涉及32位数据计算前后指令统一用32位版本别一会儿16位一会儿32位很容易算出个不伦不类的数第三除法运算前最好用比较指令判断一下除数是否为0否则PLC运行时会报运算错误虽然不一定停机但会触发错误标志对整个程序的稳定性是隐患。我一直建议新手把常用应用指令的格式做一张速查表打印出来贴在工位上。比如ADD、SUB、MUL、DIV、CMP、MOV、ZCP区间比较、ALT交替输出这些是日常项目里出现频率最高的十条指令先把它们的格式、操作数类型、16位/32位对应关系背熟再去看其他指令就非常快了。4. 完整实操过程从梯形图绘制到上电调试4.1 案例一电机启动停止与过载保护我们用一个最经典的三菱FX3U入门案例——异步电机的启停控制把整个从建工程到下载调试的流程走一遍。新建工程时在GX Works2中选择PLC系列为FX3U机型为FX3U-32M编程语言选梯形图。工程建好后先敲入启保停程序X0是启动按钮常开X1是停止按钮常闭Y0是电机接触器线圈X2是热继电器常闭触点。梯形图逻辑是X0常开并联Y0常开作为自锁串联X1的常闭和X2的常闭最后驱动Y0输出。这一段写完按F4编译然后下载到PLC。下载前记得PLC要处于STOP状态GX Works2会引导你完成切换。下载完成后切到RUN实际按下启动按钮Y0亮起电机启动松开按钮由于Y0自锁电机继续运行按下停止按钮Y0熄灭。如果接的是真电机这个动作就是一台设备的基础控制逻辑。这个案例引申出编程习惯问题自锁、互锁、软保护三层结构是几乎所有设备手动控制程序的基本骨架。自锁保证了持续运行互锁保证正转反转不能同时导通软保护用程序替代一部分硬件保护。不要在入门阶段觉得这些太简单真正设备上的事故很多时候就是基础逻辑缺了一层。4.2 案例二十字路口红绿灯控制红绿灯程序是学定时器的最佳载体。我让新人做的版本是南北方向绿灯亮30秒接着黄灯闪3秒然后红灯亮30秒东西方向刚好相反。用到的定时器至少三组每组定时器的触点要配合辅助继电器完成状态切换。这里有一个关键技巧用定时器实现顺序控制时不要试图在一个梯级里把所有时间都算完而是“一个定时器管一个阶段”阶段结束时接通下一阶段的启动条件。比如T0计时30秒后它的常开触点接通T1的线圈T1接着计时3秒完成后接通T2的线圈等等。这样一层层接力逻辑非常清晰后期想调整某一段时长只改对应的K值就行。红绿灯程序的真正难点不是写法而是调试。在GX Works2里可以开仿真模式不需要真PLC就能看到软元件的状态变化。监视状态下把定时器T0的当前值窗口打开你能实时看到它一秒一秒往上跳。这种可视化的反馈对建立“时间观念”特别有帮助。跑通之后再下载到实体PLC接上指示灯或者直接用输出点的LED观察状态切换。4.3 案例三传送带上产品计数与满箱报警这个案例把我前面讲的计数器、比较指令、传送指令全串起来了。假设一个简单的装箱工位产品经过传感器X0时X0上升沿触发C0计数每计满20个Y0输出电磁阀动作1秒把箱子推到下一工位同时计数器复位开始下一轮计数。这里核心代码大概三段第一段X0的上升沿触点接通C0的计数输入端第二段C0的常开触点接通一个辅助继电器M10表示“计满”第三段M10驱动Y0同时用T0计时1秒1秒后复位C0和M10。这个流程跑通之后新人一般都能理解“计数—触发—动作—复位”这套循环逻辑以后再面对更复杂的节拍控制就有信心了。4.4 调试阶段的几个好习惯程序写好后不要急着下载先在GX Works2里做一次“编译检查”它会提示语法错误和未定义软元件。很多新人忽略了这一步直接下载然后在PLC里看到报错灯才回头检查浪费时间。下载前再检查一遍PLC的RUN/STOP开关状态STOP状态下才能写入程序。写入完成后如果是第一次使用建议先执行一次“远程RUN/STOP”操作确认通信正常。真正上电调试时先用GX Works2的监视模式在线看软元件状态把输入信号一个个模拟触发看程序里的X、Y、M、T、C是怎么变化的。这时候你才真正体会到“在线监视是PLC调试的第三只眼”。5. 通信与组网基础程序写出去了数据也要能出去5.1 FX3U的通信接口与常用协议一台PLC只是自动化系统里的一个节点把数据从PLC里拿出来交给触摸屏、SCADA或者生产看板展示是工厂里最常见的需求。FX3U标配一个编程口Mini-DIN8支持三菱专用的编程通信协议GX Works2就是通过这个口和PLC通信的。如果想要更方便的上位机通信FX3U可以加装通信扩展板如FX3U-232ADP、FX3U-485ADP或者直接选带内置网口的型号FX3U-ENET-ADP配合以太网模块。上位机读取PLC数据的常用协议是MC协议三菱几乎所有型号都支持。MC协议走串口时是二进制帧格式走以太网时是TCP帧格式。对初学者来说不建议上来就手搓协议帧先用现成工具比如组态软件或OPC服务器它们自带三菱驱动填好IP和端口就能读到数据。等你理解了数据交互的基本流程再回头研究协议帧结构就轻松得多。5.2 PLC数据与SCADA联动的基本套路热词里一直出现“SCADA如何与PLC连接”和“可视化生产数据看板”这里说一条最典型的路径FX3U通过以太网模块接入局域网上位机上运行组态软件如组态王、WinCC、InTouch或国产的力控等组态软件里建一个三菱TCP驱动连接配置PLC的IP地址和端口号然后在画面上建立变量关联——比如把D0关联到一个数字显示框把Y0关联到一个指示灯。这套结构里PLC侧只需要做一件事把要监控的数据放到固定的D寄存器区域并且定期刷新。比如产量数据存放在D100设备状态存放在M100-M120组态软件按固定周期去读取。哪天你想在办公室的大屏上看车间产量只需要在上位机侧把数据源接入数据库或Web APIPLC本身不用做任何改动。这也是为什么我一直强调程序里“数据区域划分”的重要性——好的变量规划能让后期做数据采集省一大半事。5.3 通信不上的排查顺序通信不上是新手心态最容易崩的时刻。别慌按顺序排查第一看PLC侧通信模块的指示灯LINK灯闪烁表示数据在传输如果完全不亮检查网线或串口线大概率是硬件没通第二在上位机用Ping命令测试到PLC IP的连通性不同就查IP地址、子网掩码和物理连接第三检查通信驱动配置里的端口号是否和PLC侧一致三菱TCP默认端口是502但有些场景会被改掉第四确认PLC确实在RUN状态且程序里没有占用通信端口。实际项目里通信问题十有八九是IP地址冲突、网线松动、端口号错误这三类。不要在第一个环节就怀疑协议设置基础物理层通了软件层面往往很简单。6. 常见故障排查与实操笔记6.1 程序下载不进去PLC报错怎么办下载程序时最常见的提示是“无法与PLC通信”。这时候先看数据线——FX3U的编程线必须是USB-SC09或FX-USB-AW之类的专用线普通的USB转232线往往不行里面还涉及电平转换和握手协议。驱动方面到设备管理器里确认虚拟串口号是否正常识别GX Works2通信设置里的COM口要和驱动分配的完全一致。还有一种情况是PLC面板上的ERROR灯常亮说明程序语法或软元件配置有问题。这时先把PLC切到STOP用GX Works2在线菜单里读取错误信息并清除。很多错误代码的含义在手册里有解释最典型的是“运算错误”一般是指令的操作数类型不匹配比如把16位指令用到了32位寄存器组合上。6.2 程序不执行十有八九是状态没切换新人写成程序下载成功结果PLC一点反应都没有。第一个检查点永远是PLC面板上的RUN指示灯是否亮着。如果没亮要么是RUN/STOP开关没拨到RUN位置要么是在GX Works2里还处于STOP状态。下载程序后一定要记得远程RUN一次这个动作是培训时所有人都会走一遍的弯路。还有一类隐蔽问题程序里写的输出点编号超过了选型型号的实际点数。比如你选的FX3U-16M只有8个输出点Y0-Y7程序里却写了一个Y10驱动线圈这种越界程序在编译时不一定报错运行时也不会输出因为物理上那个点根本不存在。排查方式很简单监视模式下看这个线圈的导通状态发现它显示为导通但Y LED不亮基本就是点号越界。6.3 输入信号采集不到接线和参数双查设备没反应但程序逻辑看起来对这时要检查输入点。先用监视模式看X点有没有变灰色导通状态如果按下按钮X0还是黑色断开说明硬线信号没进PLC。查一下按钮的公共端是否接对FX3U的输入是漏型接法DC24V公共端接正极传感器输出接输入点接反了信号就进不来。如果接线没问题检查输入端子是否松动。FX3U的可拆卸端子排用久了会有接触不良的情况拔下来重插一次往往就好了。实在不行可以考虑换一个输入点在程序里同步修改编号这也是现场临时排查的正常操作。6.4 在线修改程序的一个省事技巧GX Works2支持在线修改功能PLC在RUN状态下可以直接写入部分程序变更。这个功能对调试特别有用——发现定时器时间不对直接在软件里把K值改了写入PLC不停机就生效。但要注意在线修改仅支持梯形图逻辑类变更如果你改了软元件注释或者新增应用指令安全性就得打个问号稳妥起见还是停机再改毕竟设备安全比效率重要。在我的经验里调试速度和前期规划直接相关——软元件注释写清楚、程序段加注释、每个设备的输出点单独命名后期在线修改时思路清晰出错率能降低一半以上。7. 入门到进阶的路径建议从FX3U开始切入三菱PLC我认为是自学自动化控制最省钱的路线。FX3U价格亲民二手市场也多几百块就能收到一台成色不错的配上编程线和开关电源整套学习环境一千块以内能搭起来。对比动辄几千的教育实验台这笔投入性价比极高。学完FX3U再去接触FX5U你会发现以太网内置、结构化编程、FB功能块这些新特性都是水到渠成的事学了三菱再看西门子S7-1200虽然指令体系不同但PLC的核心原理都是输入输出扫描、定时计数、通信组网这一套完全可以触类旁通。个人体会最深的一点是PLC编程不是什么高深学问它就是一门“逻辑组织”的工程手艺。你不需要成为计算机天才只需要把现场工艺理解透然后像拼积木一样把指令组合起来。真正拉开差距的不是你背了多少条指令而是你见过多少种设备、排过多少奇怪的问题、积累了多少“原来还能这样搞”的瞬间。这些经验没有捷径只能一台一台设备去磨。如果看完这篇你还不知道从哪里下手我建议今晚就在电脑上装好GX Works2随便建一个工程把上文的电机启保停程序敲一遍然后接上仿真跑一跑。程序写出来的那一刻你就算正式进门了。