首页 / 资讯中心 / 文章详情

三菱FX3U-80MR/DS选型避坑指南:从型号解码到伺服定位与通信协议

三菱FX3U-80MR/DS选型避坑指南:从型号解码到伺服定位与通信协议 ★ FEATURED ARTICLE
客户现场那台设备又报警了点开一看是三菱FX3U-80MR/DS伺服抖动脉冲定位走不准。我赶过去查了半天最后发现不是程序的问题——当初选型时就埋了雷继电器输出型号被拿去发高速脉冲这组合能走准才是怪事。这是我上个月真实遇到过的事。三菱FX3U系列在微型PLC里服役十几年依然是产线主力FX3U-80MR/DS更是常见型号但很多人拿到手只当作能用的三菱PLC还没摸清型号后缀里的门道就直接编程上柜。这篇就以FX3U-80MR/DS为主线把型号含义、选型陷阱、软元件保持逻辑、伺服配合和通信协议这五块讲透给正在选型或者调试卡壳的你一条可复制的排查路径。1. 型号解码FX3U-80MR/DS 每个字符都暗藏选型陷阱1.1 先把这个型号翻译成人话三菱FX3U的型号命名看着随意实际上每个字符都是有讲究的。FX3U-80MR/DS拆开就是这样FX3U系列名三菱FX家族的第三代高性能微型PLC对比FX1N、FX2N它内置了更多指令和通信能力可以做到64K步程序容量还能处理浮点和PID。FX3U在微型机里属于能扛事的那一档。80本体I/O总点数40点输入加40点输出。注意这80点不是让你数排端子数出来的输入输出编号有它自己的规则后面我会专门讲。M基本单元Main unit不是扩展模块也不是特殊功能模块是带CPU的本体。R输出形式为继电器输出Relay。相对的是T晶体管输出Transistor。D供电电源为DC24V。相对的是A或E指AC220V供电。S输入形式为直流输入。这个S在三菱命名里常被称为漏型输入标准型但实际接线时FX3U通过S/S公共端可以兼容漏型和源型所以真正决定你接NPN还是PNP传感器的是S/S端子的接法而不是这个字母本身。把这个型号翻译成大白话就是一台DC24V供电、直流输入的80点三菱FX3U基本单元40路输入、40路继电器输出。静态功耗不大但输出触点本身不带24V负载电源外部要单独供电。我用一张表把常见后缀整理出来选型时直接对着看后缀含义典型场景MR继电器输出阀门、接触器、指示灯、低频开关MT晶体管输出漏型伺服脉冲定位、高速ON/OFF、PWMESAC220V供电、直流输入标准产线配电柜DSDC24V供电、直流输入移动设备、车载、一体化设备E交流电源型常见于标准型号尾缀D直流电源型电池或开关电源供电场合1.2 选型最容易翻车的三个点**第一坑MR继电器输出做不了伺服脉冲定位。**这是我在现场见的最多的坑。FX3U的晶体输出型号MT本体自带3路高速脉冲输出频率可达100kHz可以直接带伺服或步进驱动器的脉冲端口。而MR型号内部是机械继电器触点动作频率低、有机械寿命你拿它发脉冲要么根本跟不上要么继电器很快烧毁。如果项目里有伺服电机别犹豫选MT。真选了MR且已装机后面我会在第4章讲补救方案。**第二坑电源形式选错整个柜子白配。**DS是DC24V供电ES是AC220V供电。有些采购照着网上的默认型号下单买回来发现柜子里只有220V又得换型号或者加AC-DC电源。DC24V供电本身没啥问题但要注意开关电源的容量PLC本体的功耗不大但你还要给传感器、中间继电器、触摸屏供电电源要留足余量一般按总负载1.5倍选。**第三坑NPN/PNP传感器和输入公共端的接法。**FX3U输入端子内部是双向光耦通过S/S端子的接线决定漏型还是源型。漏型接法常用S/S接24V传感器NPN输出信号线接X端子X端子导通到0V时输入为ON。源型接法则反过来S/S接0V用PNP传感器。很多人在这里搞反导致传感器信号灯亮但PLC输入点死活不亮。调试前先量一下S/S端子的电压确认接法。2. 点数编号与扩展能力为什么看到X030会吓一跳2.1 80点是怎么算出来的八进制编号规则三菱FX系列输入输出编号用的是八进制不是十进制。也就是说X0到X7是8个点接下来不是X8而是X10。同样X10到X17是8个点X20到X27是8个点。FX3U-80MR的输入编号从X0开始一路排到X47八进制总数为40点输出编号从Y0到Y47也是40点。这个规则带来的直接问题是程序里你能看到X30、X47这种编号但绝对看不到X8、X18、X28。刚接触梯形图的人常在这里犯迷糊比如写了个X8的触点编译报错半天找不到原因其实就是不存在这个地址。点位规划时也要按八进制分组来排留出空位避免以后加点位要大量改动。另外X0到X7这几个输入点不是普通的输入点。FX3U的高速计数器、输入中断和部分脉冲捕捉功能都分配在这几个点上。X0到X5用于高速计数X6、X7也有对应功能。所以做点位表的时候这几个点最好预留给编码器、光电开关的快速信号别随便拿去做普通按钮。2.2 本体之外本地扩展和网络扩展FX3U-80MR本体是80点但它不是焊死在这个规模上的。本体右侧可以接扩展模块包括I/O扩展模块增加输入输出点比如FX3U-16EX/16EYR之类总点数最高可扩展到256点。模拟量模块FX3U-4AD、FX3U-4DA等一路到多路模拟量输入输出用于连接变频器、传感器、比例阀。温度模块热电偶、PT100测温模块做温控时常用。通信模块FX3U-485-BD、FX3U-232-BD、FX3U-ENET-ADP等扩展串口和以太网口。定位/高速计数等特殊模块需要更多定位轴或更高计数频率时使用。扩展模块通过右侧的总线接口连接不需要额外编程系统自动识别。但要注意几点扩展模块的5V内部电源由本体供应挂太多模块要考虑容量I/O模块的24V负载电源通常需要外部开关电源单独供给安装扩展模块后本体的DIN导轨长度和柜内空间都要预留。网络方面FX3U通过CC-Link可以作为远程站接入大型系统也可以加CC-Link模块做主站但这属于车间级的规划选型时先确认有没有这个需求别到现场再补。3. 梯形图与软元件中绕不开的寄存器学问3.1 D0D8默认断电不保持锁存背后的电池与参数生产线上经常要累计产量、记录配方号这些数据如果存在普通寄存器里断电几分钟再上电就清零了让人以为是程序丢了。其实这是软元件属性决定的。FX3U的数据寄存器D分为保持型和非保持型。默认设置下D0D199属于非保持区断电后RAM内容丢失D200D511属于默认锁存区断电后靠本体的电池FX3U-32BL维持RAM数据重新上电后数据还在。所以热搜里说的D0D8默认断电不保持是真实存在的情况。那为什么还需要电池因为RAM是易失的PLC内部数据寄存器跑在RAM上电池就是为了在断电期间给RAM续命。注意程序本身通常写在Flash里断电不掉但锁存区的数据RAM数据依赖电池。想改变这个行为可以通过PLC参数设置。在GX Works2里打开PLC参数找到软元件或锁存范围相关页可以设置D寄存器的锁存起始点。默认是D200如果把起始点改成D0那么D0到D7999整个区域都变成保持区。代价是保持区变大后电池消耗和掉电风险都会增加而且某些应该在开机时复位的中间变量也会被恢复。所以我一般建议不改全区而是把需要保持的数据放到D200之后或者只把锁存起始点往前调一小段然后在梯形图里用M8002初始脉冲开机ON一个扫描周期对这些保持寄存器做一次初始化赋值。实操中还有一个隐藏问题PLC电池耗尽时锁存区数据照样会丢。定期检查电池状态或者在程序中监控M8005电池电压异常一旦报警及时换电池别等数据丢了才后悔。3.2 D8268这类特殊寄存器怎么读才算不被坑除了普通D寄存器FX3U还有一大批特殊数据寄存器D8000D8511每个都有固定用途。比如D8000存放自诊断错误代码D8013到D8019分别对应实时时钟的秒、分、时、日、月、年、星期。这些寄存器在GX Works2的软元件监控里可以直接看梯形图里也能直接用触点读位。网上经常有人讨论D8268.6这种写法比如fx3u梯形图 d8268.6的搜索结果很多是高速计数器或特殊功能模块的状态位。我的建议是特殊寄存器的位定义一定要以对应手册的《特殊继电器/特殊寄存器一览表》为准不同型号、不同固件版本可能有差异。我遇到过客户照抄别人程序里的D8268.6判断状态结果在自己机器上完全不对的情况。正确做法是先在GX Works2里把D8268整字监控起来用按位显示模式然后手动触发相关功能观察哪些位在翻转确认它和你理解的状态信号对应得上再写进正式程序。这块宁可多花十分钟验证也不要省。梯形图里用位触点读取的语法很简单比如LD D8268.6、OUT M10但前提是你确认这个位定义没问题。同理M8000运行常ON、M8002初始脉冲、M80131秒时钟这些基础特殊继电器是可以放心用的属于教科书级别的经典定义。3.3 高速计数器与中断FX3U的隐藏硬实力FX3U虽然叫微型PLC但内置的高速计数器能力相当能打。本体支持多路高速计数器X0X5可以配置为最高100kHz的单相计数也可以组双相计数模式X6、X7还能做低速计数。配合高速比较指令DHSCS、DHSCR、DHSZ可以实现计数到指定值立刻置位输出这样的中断级响应不走扫描周期。举个现场例子输送带上的编码器接X0想让它每转1000个脉冲就触发Y0动作一次。用指令表写法大致是LD M8000 DHSCS K1000 C235 Y000这个指令的含义是当高速计数器C235的当前值到达1000时立即置位Y0。Y0的响应速度远快于普通扫描适合做精密定位和等长切割。如果只是测转速可以用SPD指令比如LD X000 SPD X000 K100 D10SPD会自动在100ms窗口内统计X0收到的脉冲数存到D10。脉冲数乘以系数就是当前速度。这套东西用得好完全不需要再加一个高速计数模块。不过要记住高速计数和中断功能占用的X点最好不要安排给普通按钮否则等于自己废掉了PLC的内置硬实力。4. 和伺服配合实战从MR-JE报警AL10.1说起4.1 AL10.1是什么编码器通信异常的排查链路三菱MR-JE伺服放大器报警代码里AL10.1属于编码器通信异常类报警通常指向伺服电机编码器和放大器之间的通信出问题。现象是放大器数码管显示AL10.1伺服立即停机PLC侧可能同时看到报警输入信号。我处理这类报警有一套固定排查链路先断电检查编码器线插头。编码器线在伺服电机端和放大器端都是小针插头插头松动、针脚氧化是最常见原因。重新插拔并确认锁扣到位能解决一半问题。看编码器线走线。编码器线必须和伺服动力线、电源线分开走线槽至少保持10cm以上距离。如果空间不允许要使用屏蔽电缆屏蔽层在放大器侧单端接地。我遇到过最典型的案例一台设备一启动主轴就报AL10.1查了电机、查了放大器都没事最后发现编码器线和动力线在同一个线槽里并行走了3米分开走线后连续运行半年再没报过警。检查接地。伺服放大器、电机、PLC的接地要遵循星型接地原则接到同一接地排避免形成地环流。变频器和伺服共用地线时干扰尤其大。替换法确认。如果上述排查都做了还是频繁报警考虑编码器线本体或电机编码器故障。手头有备件的话先换编码器线再换电机端编码器配合放大器报警履历观察。4.2 PLC侧怎么监控和复位伺服报警FX3U和MR-JE配合时一般不用通信也能把报警管理做明白。常规接法是PLC的Y0发脉冲仅MT机型可用Y1发方向信号Y2接伺服SON伺服使能Y3接伺服RES报警复位。伺服的报警输出信号接到PLC输入点X10定位完成信号接X11。这样PLC程序里就能做到检测到报警输入变ON时停止脉冲输出点亮HMI上的报警灯。操作工处理完现场问题后按复位按钮PLC给Y3一个50~200ms的脉冲触发RES端子清除伺服报警。如果报警持续存在也可以直接给伺服断电重上电这是最彻底的复位方式。我自己更喜欢用通信方式读取伺服报警履历因为放大器面板上的历史记录只有最近几条通过通信可以把前后几十条报警全部读到上位机分析报警频率和时间规律。MR-JE支持Modbus RTU和三菱专用协议FX3U加一个485-BD扩展板就能做Modbus主站用ADPRW指令去读伺服站点的报警寄存器。三菱伺服手册里对报警地址定义得很清楚照着读就行。别嫌麻烦有这个能力之后处理现场报警的效率高很多。4.3 MR型号做不了伺服脉冲定位的补救方案回到开头那个让我跑了两次现场的坑买了FX3U-80MR/DS却发现要带伺服做定位。解决方案有三条换本体把MR换成MT型号比如FX3U-80MT/DS这是最干净的方案。如果设备还没通电调试优先走这条路。改伺服工作模式让伺服工作在速度模式或转矩模式PLC通过模拟量模块FX3U-4DA输出速度指令电压再用Y点切换方向和使能。这样做能实现定位但精度和响应速度不如脉冲串控制而且多花一个模拟量模块的钱。加定位模块FX3U本体没有脉冲输出能力时可以挂专门的定位模块但成本和编程复杂度都上去了一般不如换本体划算。说穿了选型时看清型号里那个R还是T能帮你在项目启动前省掉后面所有折腾。5. 通信协议上手FX3U的四种通信方式和MC协议组帧思路5.1 先看清楚FX3U有哪些通信通道FX3U本体自带一个编程口通常用于连接GX Works2下载程序和触摸屏。真正和外部设备通信要靠扩展板或适配器。我把常见方式整理成了表格通信方式需要硬件适用场景三菱MC协议串口本体编程口或232/485扩展板上位机读写PLC软元件MODBUS RTU/ASCIIFX3U-485-BD或485适配器与变频器、仪表、第三方PLC互联无协议通信RS指令FX3U-232-BD或485-BD自定义协议的串口设备以太网MC协议FX3U-ENET-ADP上位机、数据库、SCADA远传CC-Link / N:N网络CC-Link模块或485-BD多PLC互联、远程I/O选型逻辑很简单只要一台电脑读数据用编程口MC协议就够了要接变频器仪表上485-BD走Modbus数据要进MES或数据库加ENET-ADP走以太网最省事。别一上来就想着MC协议先把通信对象和距离定下来。5.2 MC协议组帧思路理解要素比背字节重要MC协议是三菱PLC和上位机通信的老牌协议帧格式有ASCII和二进制两种。第一次接触的人看到手册里一长串十六进制就头大其实核心要素就几个控制代码请求帧用ENQ响应帧正常用ACK异常用NAK。命令区分读还是写按字还是按位。软元件地址要把D100、M50这类软元件编号翻译成协议里的地址编码。点数本次读写的软元件个数。校验通常是把帧内某些部分累加取低字节转成ASCII用来防错。举个例子上位机要读D100开始的10个字那么组帧逻辑就是请求头读命令目标软元件D100点数10校验然后发出去等PLC回ACK和数据。具体字节怎么排每个帧格式略有不同但套路一致。如果你不是非要自己写协议栈直接用三菱官方MX Component库或者在Python里用现成的pymcprotocol库都能省掉大量调试时间。以前我写上位机时自己折腾协议解析一个校验位不对就半天后来改用库函数半天能写完一个完整的数据采集服务。给个Python读D100的参考片段前提是PLC侧已配置好以太网IP和端口端口以模块参数为准常见5000/5007段from pymcprotocol import Type3E mc Type3E() mc.connect(192.168.1.30, 5007) data mc.batchread_word_units(headdeviceD100, readsize10) print(data) mc.disconnect()这套代码跑通之后数据和PLC监控窗口看到的完全一致。注意防火墙要放行对应的TCP端口否则上位机连接总是超时。5.3 从串口到以太网的调试经验通信调试的坑大多不在协议本身而在物理层和配置。485总线用双绞屏蔽线A/B端子别接反总线两端各接一个120Ω终端电阻屏蔽层单端接地。很多偶发通信故障是没接地或者A/B反了导致的。调试时先用串口助手连接能收到数据再上位机联调。无协议通信FX3U用RS指令做自由协议收发时要把通信格式写到D8120发送请求置M8122接收完成看M8123。这三个软元件几乎是无协议通信的标配写程序前先确认它们的定义能省很多查询时间。以太网先确认PLC端IP和电脑在同一网段、网关正确然后用ping测试通不通通了再用协议测试。Wireshark抓包能直观看到TCP里的协议报文排查上位机发出来的帧到底有没有错误比对着代码猜快太多。最关键的调试建议先用一个简单的上位机工具和PLC单点通信比如只读D0一个字跑通了再增加点位。很多人一上来就写一个几百个地址的大采集程序出错时根本不知道是协议问题、地址问题还是网络问题。小步快跑通信调试稳得很。最后分享一点个人体会。FX3U-80MR/DS作为一台服役多年的经典机器稳定性和生态都是经过无数产线验证的只要选型时把输出类型、供电形式、通信需求这三件事想清楚它能非常省心地跑很多年。但如果型号选错后面加多少补救措施都是在绕路。希望这篇从型号拆解到伺服配合再到通信协议的梳理能让你在下一次面对这个型号时少走几步弯路。
阅读完成 · 觉得有帮助?
咨询建站