不少刚接触自动化的朋友来问我第一台PLC到底该选什么。我每次都回答先学三菱FX系列。不是因为它性能多强而是因为它足够“友好”——指令直观、资料遍地、兼容设备多二手硬件也便宜特别适合PLC编程入门。我当年就是靠一台FX3U从零起步从点亮第一个输出继电器到后来能独立写完一条小型产线的控制程序中间的弯路没少走。今天这篇就把三菱FX入门阶段最常用的基本编程环节从头到尾捋一遍包括软元件、基本指令、定时器计数器、顺序控制这四道必修课再加上我平时调试真机时踩过的坑和排查思路。文章里每个例子都是可以直接抄去练习的“最小可运行程序”希望看完你能少走我当年走过的那些弯路。1. 选型与准备工作工具不对后面全白费1.1 三菱FX家族到底怎么选不用太纠结三菱FX系列听起来型号很多FX3U、FX3G、FX5U还有老古董FX2N、FX1N新手很容易看花眼。我的建议非常明确入门首选FX3U没有之一。为什么因为市面上绝大多数教材、视频、题库都以FX3U为基准你拿着它学遇到问题随便一搜就有答案。而且FX3U的指令体系很完整模拟量、通信、高速计数、位置控制都能扩展就算以后做实际项目也够用。FX3G是FX3U的“精简版”价格更低体积小一些简单设备上能看到它的身影但它的指令和存储器要比FX3U少一些部分高级功能不支持拿来学习倒是没问题但我不太推荐起步用它因为很多教程里的例子在FX3G上会报错。FX5U属于新一代的iQ-F系列性能强很多自带以太网口但它用的编程软件是GX Works3界面和操作习惯跟传统的GX Works2不一样对零基础的人来说有点“超前”。等你用FX3U把基本编程环节吃透了再转到FX5U是很顺的事反过来就比较痛苦。还有一点必须提醒买PLC时要看输出类型。型号里带“MR”的是继电器输出带“MT”的是晶体管输出。继电器输出便宜、能接交流负载但响应慢触点寿命有限晶体管输出响应快适合发脉冲控制步进电机但只能接直流负载。入门练习用继电器输出的MR型号就够了以后搞定位再考虑MT型号。提示入门可以买二手FX3U价格便宜坏了不心疼。但拿到手先看PLC右上角有没有电池报警灯电池没电会导致程序丢失别问我怎么知道的。1.2 编程软件装哪个GX Works2就对了三菱PLC的编程软件主要有三个老的GX Developer、主流的GX Works2、以及FX5U专用的GX Works3。新手直接用GX Works2不要碰GX Developer。虽然很多老教材用的是GX Developer界面里全是英文菜单梯形图编辑方式也比较落后学它纯粹是浪费时间。GX Works2支持梯形图、SFC顺序功能图、结构化文本在线监控模拟仿真都方便而且FX3U、FX3G、FX2N都能用。新建工程的操作很简单菜单“工程”→“新建工程”PLC系列选择“FX3U/C”PLC类型选择“FX3U”工程类型默认是“简单工程”编程语言选“梯形图”确认就进去了。这里有个容易误解的地方GX Works2里的“简单工程”和“结构化工程”是两种模式入门先老老实实用“简单工程”它最接近课本上的梯形图习惯写起来最直接。软件装好之后建议先别接PLC用自带的仿真器练习。在GX Works2里点击“调试”→“模拟开始”软件会启动一个虚拟PLC把程序下载进去自己跑点一下“软元件测试”就能强制改变输入信号看输出变化。很多基本指令、定时器、计数器的实验在仿真器上就能完成七八成等逻辑跑通了再上真机省时又安全。1.3 接线可以不精通但不能不懂有人觉得学编程就不用管接线了这想法挺危险。PLC不是纯软件程序最终要通过输入输出点跟外部设备打交道。你至少得搞明白三件事。第一是输入端子的接法。三菱FX3U的输入端子是漏型/源型可切换的FX3U的S/S端子可以接正极或负极但很多日系PLC老款默认是“漏型输入”也就是传感器输出NPN型公共端S/S接24V正极传感器输出低电平给X端子。国产新手的常见错误是拿PNP传感器往上一接结果输入信号死活不亮其实不是PLC坏了是极性不对。第二是输出端子的公共端。继电器输出的COM端子是内部触点的公共端外部负载的另一端要接电源千万不能把负载直接接到PLC的24V供电端子上那样会烧板子。我就是曾经把Y0接到电磁阀线圈的一端另一端直接接到开关电源24V上结果一上电直接把输出点干废了。第三是八进制编号问题。FX系列的数字量输入X和输出Y是按八进制编号的X0到X7、X10到X17、X20到X27没有X8和X9。很多新手在程序里写了X8编译直接报错还一脸懵。内部软元件M、定时器T、计数器C、数据寄存器D则都是十进制别搞混。2. 基本软元件和指令PLC世界的“积木块”2.1 先记住这张软元件地图PLC编程本质上就是对这些软元件进行“读”和“写”。三菱FX3U里最常用的八类软元件我整理了一张表建议打印出来放桌上软元件类别符号编号范围常用作用输入继电器XX0~X7X10~X17…读取外部按钮、开关、传感器信号输出继电器YY0~Y7Y10~Y17…驱动外部接触器、电磁阀、指示灯内部继电器MM0~M7679程序内部的中间状态可作自锁、互锁、标志位状态继电器SS0~S499SFC用顺序控制中的“步”记录当前执行到哪一步定时器TT0~T255延时接通、延时断开、振荡计数器CC0~C255计次数、计转速、计圈数数据寄存器DD0~D7999存放数值模拟量采集、运算、通信都用它常数K/HK是十进制H是十六进制设定值、地址值初学者最容易忽略的是数据寄存器D。很多人学了两个星期以为PLC只有X和Y其实D才是PLC的“内存条”以后做模拟量采集、配方切换、上位机通信全靠D。2.2 基本指令骨架LD、OUT、AND、OR、SET/RST梯形图长得很像继电器电路图左边一条竖线叫“左母线”右边是线圈。每一行从左母线开始先放触点最后放线圈。最基本的指令就几个LD把一个常开触点接到左母线上相当于电路里的“开始”。LDI把一个常闭触点接到左母线上。OUT驱动线圈输出相当于给某个软元件“得电”。AND/ANI串联一个常开/常闭触点逻辑上相当于“并且”。OR/ORI并联一个常开/常闭触点逻辑上相当于“或者”。SET/RST置位/复位线圈。SET让线圈一直保持通电RST让它断电。举个例子最经典的“启保停”电路一个启动按钮X0一个停止按钮X1一个输出Y0。按下启动按钮Y0得电并保持按下停止按钮Y0断电。用指令表写就是LD X000 OR M0 ANI X001 OUT M0 OUT Y000这个程序的逻辑是X0按一下或M0已经自保持并且X1没按下M0就通电同时Y0跟着通电。M0的常开触点并联在X0触点下面这就是“自锁”也叫自保持。松下手指头之后M0自己给自己供电Y0一直保持。这就是PLC里最基础也是最核心的“记忆”能力整个顺序控制都建立在这个逻辑上。注意同一编号的线圈在程序里理论上只应该出现一次输出但它的触点可以无限次使用。如果同一个线圈在程序里写两次最后一次的指令会覆盖前面的状态这种“双线圈输出”很容易出bug。2.3 边沿指令让信号“只响一下”普通触点是电平型的只要条件成立它一直导通。但有时候我们需要“按一下按钮只动作一次”比如每次按按钮计数值加1。这时就要用边沿信号。三菱FX有两种方式一种是专门的指令PLS/PLFPLS在输入信号由OFF变ON的瞬间输出一个扫描周期的脉冲PLF则是ON变OFF的瞬间输出脉冲。另一种更现代在FX3U里直接用触点型边沿指令LDP上升沿、LDF下降沿写起来更简洁。举个例子用计数器记录X0被按下的次数LD X000 LDP X000 OUT M0 LD M0 INC D0这里我用了LDP意思是X0从OFF变成ON的那一瞬间M0才接通一个扫描周期然后INC指令给D0加1。如果用普通触点X0一直按着D0会在一遍遍扫描里疯狂增加出来的计数值完全不对。记住一个原则凡是做“一次性的动作”优先考虑边沿条件。3. 定时器和计数器让程序“等一等”和“数一数”3.1 定时器的编号与延时精度三菱FX定时器种类很多但入门只要记住三类就够了。普通定时器T0~T199是100ms单位最大延时3276.7秒T200~T245是10ms单位T246~T255是累计型定时器其中T246~T249是1ms累计T250~T255是100ms累计。“累计型”和“普通型”的区别很关键。普通定时器在计时过程中如果条件断开时间会清零重来累计型定时器则会记住已经累计的时间即使条件断开下次再接通时它继续接着计只有用RST指令才能把它清零复位。定时器指令的写法也很固定OUT T0 K50意思是给T0设定值50。如果T0是100ms型50代表50×0.1秒5秒。K是十进制常数这个K千万别丢。延时5秒后输出Y0的程序就三行LD X000 OUT T0 K50 LD T0 OUT Y000X0一接通T0开始计时5秒后T0的常开触点闭合Y0得电。整个过程非常直观。提示如果发现定时器数值老是不对先检查你用的T编号是哪一档精度100ms和10ms差了10倍。还有定时器线圈不要在多个地方重复输出否则计时会被反复清零。3.2 计数器计件和循环都靠它计数器C也分两大类16位计数器C0~C199计数范围0~32767只能加不能减32位计数器C200~C255计数范围很大而且可以加减双向计数控制方向的是特殊继电器M8200~M8255M8xxx为ON时减计数。计数器最大的坑在于“停电保持”。FX3U的部分计数器默认是断电保持型的你在程序里用C0计数断电重启后它还会保留最后的计数值。如果不想让它保留要么在程序初始化时用RST C0清一遍要么在PLC参数里改成非保持。我刚学的时候就被这玩意坑过设备明明显示计了1000个断电重启居然还是1000我还以为是计数器出故障。给一个最简单的计数例子X0每按下一次C0加1当C0等于10次时Y0输出LD X000 OUT C0 K10 LD C0 OUT Y000 LD X001 RST C0C0计数满10后常开触点闭合Y0亮。X1是复位按钮按下后RST C0把计数值清零。这种“计数器定时器”的组合可以做产量统计、设备运行次数限制、定时保养提醒实际项目里用得特别多。3.3 综合小案例红绿灯闪烁逻辑学完定时器一定要练一个经典案例闪烁电路。用一个按钮X0控制红灯Y0闪烁亮1秒、灭1秒。很多人一开始会想到用延时但PLC的定时器不是“延时断开”它只能延时接通。正确的做法是用两个定时器互相“掐表”LD X000 ANI T1 OUT T0 K10 LD T0 OUT T1 K10 LD T0 OUT Y000这个程序的原理是X0接通后T0开始计时1秒1秒后T0常开触点闭合Y0亮同时T1也启动计时T1再计1秒后它的常闭触点断开T0T0瞬间复位它的常开触点断开Y0灭T0一复位T1也复位T1的常闭触点恢复闭合T0又马上开始计时。如此循环Y0就以1秒为周期来回翻转实现闪烁。这其实就是“十字路口红绿灯PLC程序”的核心内核真实红绿灯无非是把闪烁逻辑拆成东西向和南北向两组状态再配上绿灯、黄灯、红灯的时序。以后你练顺序控制时红绿灯是绕不开的经典题先把单灯闪烁玩明白后面就轻松很多。4. 顺序控制编程把复杂流程变成“状态机”4.1 为什么新手必须学步进梯形图STL/SFC学了基本指令和定时器计数器之后大部分人写的程序还是“一锅炖”所有逻辑挤在一起启动、停止、报警、互锁全都靠M继电器和自锁硬堆。程序超过50行之后改起来就开始头疼牵一发动全身。这时候就该上顺序控制了。三菱FX的顺序控制有三种表现形式状态继电器S配合STL指令步进梯形图、SFC顺序功能图、以及简单的“起保停状态机”写法。我强烈建议入门阶段直接学STL指令因为它是三菱FX的看家本领用起来就像画流程图每一步做什么、哪一步做完往哪走一目了然。STL指令对应的是SFC逻辑中的“步”用状态继电器S作为每一步的“住址”。STL指令会把当前步激活驱动该步的输出同时自动把前一步复位。这一点太关键了——你不用手动去设计复杂的互锁链STL帮你处理了步骤之间的“排他性”。4.2 STL基本结构三步流程写给你看SFC里的状态编号有讲究S0~S9是初始状态S10~S19是回原点状态S20~S499是一般状态。一个简单的三步流程这样写第一步等待启动条件X0接通同时用SET指令激活S20第二步S20里执行动作A比如夹紧气缸Y0等夹紧到位限位X1接通再用SET激活S21第三步S21里执行动作B比如后退Y1等后退到位X2接通回到初始状态S0。用梯形图表示STL段大概是这个感觉LD M8002 SET S0 STL S0 LD X000 SET S20 STL S20 OUT Y000 LD X001 SET S21 STL S21 OUT Y001 LD X002 OUT S0 RET END第一行的M8002是三菱的特殊继电器上电瞬间闭合一个扫描周期用来做“初始脉冲”它负责把系统带进S0。每段STL开头就是“STL Sxx”把该步激活每步结尾用转移条件去SET下一步。最后一行RET表示STL区域结束一定要写不写程序会出问题。这里有个很多人问过的细节为什么最后回到S0是用OUT而不是SET因为S0是初始步用OUT指令当“复位式转移”转移条件满足后S0被激活、S21自动复位而中间步骤之间的转移都用SET这样才能保证“先复位前一步、再激活下一步”的顺序正确。写成SET S0也能跑但会产生双线圈输出之类的隐患。4.3 四层电梯简化思路顺序控制怎么对付复杂流程“PLC四层电梯控制程序”经常被拿来当毕业设计和面试题看着复杂其实用SFC梳理就很简单。电梯控制本质上是一个“状态机”停车开门→关门→判断方向→上行/下行→到站停车。每一层就是一个状态电梯当前在哪一层就是哪个S步被激活。但电梯比普通流水线多一些分支逻辑比如在一楼时如果三楼有人按召唤状态就要从“一层开门”转移到“上行到三层”如果五楼也有人按就得按顺序一个个停。这种“多个条件同时可能满足但只能选一个执行”的场景在SFC里叫“选择分支”用STL写就是在一个步后面放多个转移条件哪个条件先满足就跳到哪个分支。同样如果一台设备上有两个机械臂要同时工作一个负责上料一个负责加工两者互不干扰这时可以用SFC里的“并行分支”让两个流程同时激活。入门阶段我建议先把单序列和选择分支练熟并行分支可以先了解真到项目需要时再回头研究也不迟。经验用STL写顺序控制最重要的是“画状态转移图”而不是急着写代码。拿张纸把每一步、每个转移条件列出来图形画对了梯形图只是机械翻译。我见过太多人直接上手写STL结果写一半忘了条件在哪硬着头皮堆最后程序又臭又乱。5. 调试实战与疑难排查程序写完了真机跑不起来怎么办5.1 仿真器“启动不了且没有报错”的通用排查法很多人在GX Works2里点“模拟开始”发现仿真器转了几下就没动静了也不弹任何错误提示。这个现象特别迷惑人我第一次也卡了半天。我的排查顺序是先看电脑上是不是装了多个版本的三菱软件GX Works2对运行环境很敏感杀毒软件拦截或者安装路径带中文都可能让仿真器闪退再看系统的服务列表里有没有“MELSOFT”相关服务停掉了有就手动启动最后实在不行把工程文件另存为一个纯英文路径下的新文件再试一次。这类“没有报错但没反应”的问题有个基本思路把问题拆成“软件层”和“环境层”。软件层看编译有没有通过、仿真器配置对不对环境层看Windows服务、防火墙、路径权限、安装版本冲突。排查的时候别盯着一个点死磕逐项排除反而快。5.2 真机不动作从电源慢慢往上查程序在仿真里跑得好好的一到真机上Y0就是没输出这是新手最常见的崩溃现场。我的习惯是按下图这个顺序查一遍。第一看PLC面板的POWER灯和RUN灯。POWER不亮检查220V电源和开关RUN灯没亮就按一下RUN开关很多情况下程序没写进去PLC根本没运行。第二查输入信号有没有进到PLC。用万用表量X端子和公共端之间的电压按一下按钮看X0指示灯亮不亮。如果对应输入点指示灯不亮问题在外部接线或者传感器极性跟程序无关。第三看程序里的输出点有没有被内部条件“卡”住。输出线圈前面串了一堆常闭触点可能某个M继电器状态不对导致条件不成立这时要在线监控里看梯形图哪一行不通一目了然。这里特别想多说一句PLC是循环扫描执行的顺序大概是“读取输入→执行程序→刷新输出→再循环”。扫描一圈通常只要几毫秒到几十毫秒所以输出反映看起来是“同时”的。但如果你程序里用了大量通信指令、比较指令或者写得很长的线性程序扫描周期会变长有些对时序敏感的场合就会出问题气动系统的动作延迟可能就是从这里来的。5.3 常见问题速查表照着查能救急症状可能原因排查和处理程序写不进PLCPLC处于RUN状态或存储保护开关打开把PLC切到STOP再写入检查DIP开关PLC在RUN但程序不执行电池没电、程序丢失、CPU异常看电池灯报警重新写入程序必要时恢复出厂输入灯不亮接线错误、传感器类型不匹配、公共端接法不对用万用表测端子电压检查NPN/PNP接线输出灯亮但外部设备不动作输出触点容量不够、外部电源没接、保险丝烧了查看是否过流检查负载电源和公共端输出灯不亮但程序条件应该满足其他线圈竞争该输出、互锁条件未满足在线监控该Y线圈前的条件查看是否有双线圈定时器不走用了累计型没有复位、扫描周期太短看漏检查T编号用RST清零或在监控里看当前值计数器乱跳触点信号抖动、没有用边沿指令按钮加硬件消抖程序改用LDP通信连不上PLC驱动没装、COM口号不对、电缆不是原装设备管理器里看端口号重新装USB驱动这张表是很多次现场“救火”经历的浓缩。新手往往觉得“程序对就行了”其实设备调试时程序只是其中一环接线、电源、传感器、通信任何一个环节出错都可能导致程序“看起来”不对。6. 给新手的几点经验入门阶段最容易忽略的好习惯6.1 注释工程真的不是浪费时间我见过太多人写程序一个注释都不加软元件全是M0、M1、Y0过两个星期自己都看不懂写了什么更别说别人接手维护了。从入门第一天起我就养成了把每个软元件注释写在程序里的习惯。GX Works2里右键软元件可以编辑注释比如“M0 自动允许”“Y0 电机正转”“D10 计件总数”。养成这个习惯之后程序的可读性会有一个质的飞跃。另外建议给每个输入输出点做一个点表。点表上写清楚信号名称、PLC地址、线色、连接端子号、电气类型常开/常闭。做调试的时候点表就是你的地图照着点表查线、查信号效率至少翻倍。6.2 程序分块别写“大坨坨”一上来就写一个几百行的巨型梯形图是很多新手的通病。我的习惯是把程序按功能拆成若干块手动操作块、自动运行块、报警处理块、参数初始化块。在GX Works2里可以用跳转指令CJ或子程序调用CALL把这些块串联起来或者至少用注释把梯形图分区隔开让每一段的功能一目了然。按功能分块还有个隐藏好处排查问题的时候能快速定位。之前调试一台半自动设备自动流程走一半卡住如果程序是全堆在一起的我可能要翻半天分块之后我直接去查自动运行块里当前S步是哪一步一看就知道卡在哪个动作上。6.3 我的学习路线建议如果你刚买了FX3U和GX Works2不知道该从哪里练起我给你一条我后来总结的路线。别贪多一个一个来先点亮一个Y0理解输入输出和接线然后写启保停电路理解自锁再加互锁理解“防止冲突”然后学定时器做延时和闪烁接着学计数器做计件再学STL顺序控制控制一套气缸动作最后才去碰模拟量、步进电机、触摸屏通信。这条路线我验证过很多次稳扎稳打每一步的成就感都很强。网上有人一上来就研究通信协议、SCADA上位机怎么连接PLC我觉得这属于“还没学会走路就想跑”。PLC里的数据寄存器D、通信指令、特殊功能模块都需要前面这些基本编程环节做基础。先把手头的X/Y/M/T/C用明白比什么都有用。最后再分享一个小技巧在你电脑里专门建一个“PLC学习”的文件夹按日期保存每个练习工程每次程序改动前先备份一份。别小看这一步当年我就是没有这个习惯有一次写了几天的程序被覆盖了欲哭无泪。后来我每次写程序都习惯性地“另存为”一个新版本这个习惯帮我少受了太多罪。三菱FX入门说难也不难关键是把每个基本环节都砸实尤其是软元件体系、基本指令和顺序控制这三块它们就像是搭房子的砖砖不扎实房子早晚歪。我文中这些程序和排查方法都是我自己一点点试出来的照着练你很快也能从“抄程序”变成“写程序”。
阅读完成 · 觉得有帮助?