资讯动态

台达PLC与三菱变频器Modbus RTU通讯:从接线到梯形图实战解析

发布时间:2026/10/21 18:50:53 来源:尧图企业网站定制
1. 为什么是台达PLC去控三菱变频器先把结论放在前面台达PLC和三菱变频器之间做Modbus通讯真正麻烦的不是指令代码而是地址映射和那根RS-485尾巴。只要把寄存器地址对准、把变频器的运行模式放对DVP-ES2的COM2口加几条Modbus RTU指令就能控制FR-A700/E700系列变频器的启停、正反转、频率设定、状态监视和故障复位。这个案例来自我给某台收卷设备做的电气改造。变频器是原先就装在设备上的三菱FR-A700一直通过外部端子和电位器调速控制逻辑用的是老式继电器回路。后来设备要并入整套控制系统上位需要远程启停、远程调速、状态反馈改造的时候评估来评估去最省钱、最不耽误生产的方案就是把继电器控制柜换成台达DVP系列PLC用RS-485把PLC和变频器连起来走标准Modbus RTU协议。1.1 改造背景变频器没坏控制柜该换了设备上那台变频器用了六七年电机侧的绝缘、电流都正常变频器本身也没有大毛病。如果我为了凑协议强行把它换掉成本高不说现场调试周期也要拉长。后来我们算了一笔账加一块带RS-485口的PLC、拉一根屏蔽双绞线、改一下变频器参数、写几段梯形图两天之内就能恢复生产。剩下的老电位器和继电器逻辑全部作废控制权交到PLC这边。这个方案成立的前提是台达PLC自带Modbus主站功能三菱变频器内置RS-485接口且支持Modbus RTU从站协议。两者都不需要额外选配通讯网卡只是很多人一看到不同品牌就条件反射地想加网关其实完全是绕远路。1.2 这套方案需要的硬件设备型号参考作用PLC主机台达DVP-ES2系列带COM2 RS-485口作为Modbus主站变频器三菱FR-A700 / FR-E700系列Modbus从站用内置RS-485口通讯线RVSP屏蔽双绞线2×0.75mm²RS-485信号线水晶头RJ45压接变频器PU口连接三菱PU口端子终端电阻120Ω1/4W长线时两端并联工具串口调试助手、编程数据线排查通讯和核对寄存器这里有个选型提醒台达DVP-14SS2这类主机有些只有一个RS-232口不是自带RS-485的这种情况要么换ES2系列要么加一块RS-485通讯板。我手上这台是DVP-14ES2COM2口直接出来的是D/D-端子接起来最省事。2. 通讯前先把三菱变频器的寄存器地图看熟很多第一次做跨品牌通讯的人最容易栽在把Modbus寄存器号和实际设备寄存器地址弄混上。Modbus RTU本身很简单主站发报文从站回报文靠功能码区分是读还是写。三菱变频器侧比较特殊的是它对外提供的是16位保持寄存器地址编号和市面上常见的仪表不太一样必须按手册里的十六进制地址来算。2.1 Modbus RTU的基础动作正常情况下PLC侧只需要用三种功能码03H读保持寄存器比如读运行状态、输出频率、输出电流06H写单个保持寄存器比如写运行指令、频率设定10H写多个保持寄存器需要连续写多个字时用三菱变频器的寄存器属于保持寄存器所以读状态用03H写指令用06H或10H不需要用到线圈类功能码。有些资料把寄存器写成40001、40002那是把Modbus协议层的1基址直接映射过来的表达方式PLC指令里真正填的从站地址一般还是十六进制比如H0000、H0001。2.2 这台变频器我常用的几张寄存器表以我现场用的FR-A700为例常用保持寄存器地址如下寄存器地址含义方向说明H0000变频器状态监视只读bit0运行中bit1正转bit2反转bit3故障H0001运行指令字写bit0正转bit1反转bit3复位H0002频率设定值写单位0.01Hz50.00Hz写5000H000D参数读写入口读/写通过数据代码访问Pr.参数这张表不同系列有一点点差别。A700和E700基本是一致的但如果是D700、F800这些型号位定义可能调整过抄之前务必把手头变频器手册翻开核对一遍。我就是吃过一次亏拿A700的寄存器表去控制某台E700启停能通频率也写得进去但状态字里的故障位怎么都对不上最后查手册发现两个系列的bit分配并不完全相同。2.3 地址偏移和0.01Hz的量纲这里有两个容易搞混的坑第一个坑是地址偏移。Modbus协议里说的寄存器0对应很多组态软件里的40001PLC指令里用H0000寄存器1对应40002指令里用H0001。如果你在程序里直接填K1表示1号寄存器其实访问的是协议里的第一个寄存器也就是40002不是H0001对应的第二个寄存器。这种1和0的错位在跨品牌调试时最容易出现我在现场用串口调试助手对照过才把这个问题看透。第二个坑是频率的量纲。三菱变频器Modbus通讯里频率设定寄存器的单位是0.01Hz。也就是说你PLC里要给50.00Hz寄存器写入的值是5000不是50。刚开始调试时如果发现变频器显示0.00Hz或者疯狂往低频跑多半就是量纲没换算。同样读取输出频率的时候读回来的值也要除以100才是Hz。3. 接线细节PU口是四根线Modbus只走两根程序写得再好485线接错一样全盘白搭。这台三菱FR-A700的RS-485口是一个RJ45形状的PU口很多初次接触的人会误以为这是网口拿一根普通网线往上一插就想通讯结果一点反应都没有。实际上这是一个串行通讯口引脚定义和以太网完全不是一回事。3.1 RJ45引脚识别FR-A700/E700的PU口引脚定义大致如下引脚号信号名说明1SG信号地2P5S5V电源输出一般不接3RDA接收数据A4SDA发送数据A5SDB发送数据B6RDB接收数据B7SG信号地8P5S5V电源输出一般不接这里必须看清一个关键点PU口内部的接收和发送是分开的RDA、SDA是一组A线RDB、SDB是一组B线。也就是说这个口默认是RS-422四线制的硬件结构而Modbus RTU跑在RS-485两线制半双工网络上。直接拿两根A、B线接上去变频器收到的信号根本不完整。3.2 四线转两线的短接做法解决办法是在RJ45水晶头内部做短接把接收、发送的差分对合并成一组两线制总线。具体这样处理把水晶头里的第3脚RDA和第4脚SDA短接在一起作为A把水晶头里的第6脚RDB和第5脚SDB短接在一起作为B-第1脚或第7脚SG和PLC侧的GNDCOM口参考地选一端连接然后台达PLC的COM2端子就非常简单D接到RJ45的AD-接到RJ45的B-。测试过多次这个接法只要没接反通讯稳定性都还可以。3.3 屏蔽层与终端电阻RS-485的屏蔽层不能两头都接这是我的一个习惯做法。线缆屏蔽层一端接到变频器PU口的SG另一端悬空或者接PLC的接地端子总之只允许选择一个接地点。两头都接屏蔽层反而容易形成地环路变频器一启动屏蔽层上感应出来的共模电流会让通讯瞬间乱掉。终端电阻方面通讯距离短、只有一台变频器的情况下可以只在变频器端并一个120Ω电阻。如果PLC到变频器之间走线超过30米或者线上挂了多台变频器最好是在总线两端各并一个120Ω。有一点要特别注意不能既在变频器端并又在PLC端并还在中间某处再加一个三个电阻并联感抗不合适信号会明显衰减偶尔还会出现一会通一会断的现象。4. 参数设置和扫雷要点这部分看起来只是填几个数字实际上大多数通讯不成功都出在这里。我已经不止一次遇到有人把接线和程序都做完了结果变频器还是不理PLC一问才知道Pr.79还在外部端子运行模式。4.1 台达PLC侧COM2通讯参数台达DVP-ES2的COM2口通讯参数在PLC内部有对应的特殊寄存器。我手里这台机器COM1的参数对应D1120/D1121COM2的参数对应D1320/D1321但不同型号、不同固件版本的索引略有差异使用前先翻PLC手册的特殊寄存器表。我并不会手工去算那些十六进制格式字。在WPLSoft或ISPSoft里把通讯口2的格式直接勾选出来Modbus RTU、9600bps、8数据位、偶校验、1停止位软件会自己把格式字写进对应寄存器。这里要用的协议一定选RTU不要选成ASCII。RTU的数据帧是二进制方式效率高也最适合和变频器通讯。站号也设一下PLC这个主站在总线上的站号不是太关键但从站站号必须和变频器Pr.117一致。我在这个案例里把变频器设为1号站PLC侧只需要知道我要访问1号站并不需要给自己专门设一个主站站号。4.2 三菱变频器侧参数变频器侧要设置的参数主要围绕Pr.117到Pr.124这是内置RS-485通讯最核心的一组参数参数号设置内容我的设定Pr.79运行模式1PU/网络运行模式Pr.117Modbus站号1Pr.118通讯波特率09600bpsPr.119停止位/数据位01停止位Pr.120奇偶校验0偶校验Pr.121通讯重试次数1Pr.122通讯校验时间0初调时先关掉Pr.123等待时间0Pr.124CR/LF选择1带CR/LFPr.77参数写入选择1允许通过通讯写参数各个系列的Pr.118取值不一定一样比如有的型号用0到2表示4800/9600/19200有的用数字直接对应波特率值。最好的办法是看手册里通讯速率设定这一页拿表对一下再填。4.3 那些隐蔽的运行模式坑Pr.79是最大的坑。三菱变频器有外部端子运行、PU面板运行、网络运行几种模式只有Pr.79设置正确PLC发过来的启动指令才会被接收。我习惯把Pr.79设为1也就是由PU口/网络侧接管运行指令来源。另一个容易被忽视的是STF/STR外部端子。有些设备原先的启动按钮直接接在STF、STR端子上虽然你Pr.79已经设成1但如果STF端子还是被外部回路强制拉高变频器可能仍然优先响应端子信号。我在改造时直接把STF、STR上的旧线拆掉了保证运行指令唯一来源是通讯报文。还有Pr.122。它一旦设了非零值变频器会做通讯超时检测如果超过设定时间没收到有效报文就会报E.PUE并停机。初调阶段我建议把它设成0先把通讯跑通最后再根据PLC程序的扫描周期和设备安全要求决定要不要打开。5. 梯形图思路与可复现代码调试过程中我一开始也想过自己按Modbus RTU格式组帧、算CRC后来想想完全没必要。台达DVP系列本身就有Modbus主站通讯指令可以直接发出读保持寄存器、写单个寄存器、写多个寄存器的请求我只要把站号、功能码、从站地址和本地数据寄存器准备好就行。5.1 能用现成Modbus指令就别自己拼CRC台达DVP-ES2上我习惯用MODRD和MODWR这两条指令MODRD对应Modbus的03H读保持寄存器MODWR对应06H写单个保持寄存器。如果一次要连续写多个寄存器再改用10H功能码写多个保持寄存器。用现成指令比手工拼帧省心尤其是CRC校验这部分PLC都已经算好了。这里补充一句不同系列、不同固件版本的指令操作数排列顺序可能有差异我下面的写法是我这台机器上的常用样子抄程序时请对照自己手里手册的指令说明。5.2 启停和频率的控制逻辑梯形图的文字化表达大致是这样; 正转启动 LD M10 ; M10为上升沿 MOV H1 D0 ; 运行指令字bit01正转 MODWR K1 H06 H0001 D0 ; 站号1功能码06从站地址H0001写入D0 ; 反转启动 LD M11 MOV H2 D0 MODWR K1 H06 H0001 D0 ; 停止 LD M12 MOV K0 D0 MODWR K1 H06 H0001 D0 ; 频率设定 LD M20 ; M20为100ms脉冲周期刷新 MOV K5000 D1 ; 50.00Hz 5000 MODWR K1 H06 H0002 D1这里有几个小细节值得展开。运行指令字是整个写入的不能用SET、RST这种位操作去改其中一位。因为正转和反转的bit在同一个寄存器里如果程序里先置位了正转下一秒又去复位反转很容易把整字算错导致正转反转同时给到变频器。高频刷新时我都是先把整个字算好再用一条MODWR发下去。启动前先给频率这点很重要。如果上电后先发运行指令、再写频率变频器可能按原先记忆的旧频率启动一小段现场滚筒瞬间冲一下很危险。我在程序里特意做了顺序上电后先写一次目标频率确认写成功了再给运行指令字。停止逻辑最推荐的是把运行指令字清零。这样一来效果等同于给STF/STR端子断电变频器按设定的减速时间停下来。不要通过Modbus去频繁断电上电那样反而容易触发瞬间停电重试逻辑。5.3 状态读取与故障复位状态监视我用MODRD读H0000寄存器也就是从站1号、功能码03H、地址H0000读回来的字放到D2里。; 读变频器状态 LD M30 ; 200ms周期脉冲 MODRD K1 H03 H0000 K1 D2如果D2的bit0是1说明变频器正在运行bit3是1说明变频器当前有故障。程序里可以把bit3单独拉出来接到PLC侧故障灯或者上位机报警信号上。需要故障复位时在运行指令字里把复位位置1发送一次再恢复正常的运行指令字。有一点要提醒状态读取是只读操作不影响变频器运行所以这个周期可以放短一点但写指令要避免高频重复写尤其是正转、反转这种动作尽量用上升沿触发不然一条写指令每个扫描周期都发出去通讯口占用率会很高。6. 调试中遇到的三类问题这个项目从接线到跑通大约花了两天其中大部分时间都花在排查问题上。我把实际踩过的问题整理成三类基本覆盖了台达PLC配三菱变频器时最常见的故障。6.1 完全无应答先查硬件再查Pr.79第一类现象是PLC发送报文后完全无应答变频器面板也没有任何反应。这种问题我的排查顺序是固定的先看线有没有接反再看水晶头里的RDA/SDA短接有没有做对最后才查参数。有几次问题就出在RJ45水晶头压接上第4脚和第5脚压反了信号完全串位。如果这些都没问题把PLC的COM口单独接一个RS-485转USB调试器用电脑上的串口调试助手直接发03H报文去读变频器。电脑端能读通说明问题在PLC的参数设定或程序电脑端也不通问题几乎都在变频器侧。变频器侧十个里有八个是Pr.79没改到通讯运行模式剩下的要么是Pr.118波特率、Pr.119停止位、Pr.120校验和PLC侧设置不一致要么是站号Pr.117对不上。6.2 能通讯但启动不了或者频率卡住通讯已经通了03H读状态能读回来但写运行指令后电机就是不动。我第一反应是看运行模式是否真的切到通讯侧很多变频器即使Pr.79设了1控制面板上的运行按钮仍然能用容易造成参数已经对了的错觉。把STF/STR的线拆掉之后再看如果还是不动就去查运行指令字的位定义确定bit0正转对不对。频率卡在0.00Hz多半是量纲问题。我有一次写了50给频率寄存器变频器面板显示的始终是0.00Hz后来用串口调试助手手动写5000频率马上起来了才意识到PLC程序里漏掉了0.01Hz的倍率换算。6.3 跑一段时间偶发E.PUE掉线通讯刚开始一切正常机器跑个把小时偶尔报一次E.PUE这种间歇性问题是现场最难受的。E.PUE是三菱变频器在检测到PU口通讯异常时报的故障码大概率不是程序问题而是物理链路被干扰。我的处理套路是把通讯线和变频器主电源动力线分开走线槽不要平行长距离捆在一起确认屏蔽层只有单端接地总线两端各并一个120Ω终端电阻如果PLC的RS-485是非隔离型的而现场又有明显的强干扰在PLC和变频器之间加隔离型RS-485中继器把Pr.121重试次数从0改成1到3让变频器有重试的余地还有一点很关键如果Pr.122通讯校验时间设了非零值PLC程序里的写指令周期必须比这个时间短。我在最终程序里用100ms脉冲周期去刷新频率设定和运行指令字再把Pr.122设成0.5s这样即使偶发丢一帧报文下一帧也能在超时前救回来。如果是把Pr.122设成0来调试的产品交付前一定要想清楚0代表不检测通讯中断PLC死机或通讯线断掉后变频器可能会按最后一条指令一直运行下去这是非常危险的隐患。另外多台变频器挂在同一条RS-485总线上时建议把运行指令字和频率设定字用10H功能码一次性写入这样一条报文搞定两个寄存器总线的负载低很多干扰窗口也小。台达PLC写多个连续寄存器时只要从站地址连续指令长度设K2就把两个寄存器都带上了。我后来在另一个项目里就是这么干的一台PLC带三台不同站号的变频器跑起来比单寄存器一条条写要稳得多。最后再分享一个个人习惯项目文件里一定留一张寄存器地址对照表标明哪个地址对应哪台变频器的哪个功能最好连量纲一起写上。跨品牌调试最大的敌人不是协议难懂而是资料散落各处今天翻PLC手册明天翻变频器手册后天发现变频器手册上的地址写法和PLC指令里对不上。把这张表做出来改设备、换人维护的时候才能少走弯路。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑