news 2026/9/19 5:08:44

三菱FX3U与PC的RS485通信实战:FX3U-485-BD接线和D8120设置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
三菱FX3U与PC的RS485通信实战:FX3U-485-BD接线和D8120设置

简介:面向PLC控制与上位机通信开发人员的实战文档,围绕FX3U-128MT与主站PC间的无协议RS485通信展开,适用于需要远程采集PLC报警信息、且传输距离超过RS232限值的自动化项目。文档完整记录了硬件选型与接线过程,包括MOXA四通道PCI-RS485多串口卡和FX3U-485-BD模块的引脚定义、通信电缆焊接方式,以及PLC端RS指令和D8120寄存器的配置方法。包体仅含1个doc文件,约124KB,为纯文档资源。已有147人学习,适合电气工程师、PLC程序员及自动化专业学生参考。文中还复现了实验中遇到的PC与PLC无法互收问题,并给出了线序调换与D8120设置为C81H的排错思路,可帮助读者规避同类通信故障,缩短现场调试时间。

1. 挑残机项目里的RS485选型:15米限制之外的可行解

挑残机的主站PC需要记录PLC(FX3U-128MT)的报警信息,设备布局决定了通信线缆要跨越较长距离。RS232最远15米的规格在这个场景下直接出局,RS485凭借1200米的理论传输距离和差分信号抗干扰能力成为现实选择。但PLC本体不带485口,必须外挂FX3U-485-BD扩展板,这就引出两个实际问题:一是MOXA多串口卡与BD板的引脚定义如何对应,二是PLC无协议通信的格式寄存器怎么设才能让数据真正走起来。这篇文章沿着项目调试的真实路径,把硬件接线、RS指令参数、D8120设置和两轮排错过程完整拆开,适合正在做三菱PLC与PC串口通信的工程师参考,尤其是第一次接触FX3U-485-BD的人。文中所有结论都来自实际跑通的实验,不是手册抄录。

2. 硬件接线:MOXA多串口卡与FX3U-485-BD的引脚对照和线序陷阱

2.1 两端引脚定义:A/B标签的歧义根源

主站PC端用的是MOXA 4通道PCI-RS485多串口卡,DB9公头引出5个有效引脚;PLC端是FX3U-485-BD扩展板,5位端子排。两者的引脚定义如下:

引脚MOXA多串口卡定义FX3U-485-BD定义
1TXD-(A)RDA
2TXD+(B)RDB
3RXD+(B)SDB
4RXD-(A)SDA
5GNDSG

MOXA卡的数据手册用TXD+/TXD-、RXD+/RXD-四个信号标识,同时括号里标注了A/B。FX3U-485-BD这边则是RDA/RDB对应接收,SDA/SDB对应发送。RS485两线制半双工通信中,标准做法是A接Data-、B接Data+,但MOXA括号里的A/B标注与常规习惯并不一致,这正是第一次接线失败的原因。

2.2 通信电缆焊接:第一版线序为什么全灭

按直觉把同名信号对接——MOXA的TXD-(A)接PLC的RDA,TXD+(B)接RDB,RXD+(B)接SDB,RXD-(A)接SDA,GND接SG,线色定义如下:

主站PC端引脚颜色PLC端
TXD-(A)1RDA
TXD+(B)2RDB
RXD+(B)3SDB
RXD-(A)4SDA
GND5SG

焊接完成后烧录测试程序,结果PC发数据PLC收不到,PLC发数据PC也收不到,双向全灭。这时第一反应是检查拨码开关、串口调试助手的参数设置,但波特率、数据位这些都对得上。问题出在A/B标签的语义错位。

RS485标准定义A为负信号、B为正信号,可MOXA手册的括号标注把A和B的极性写反了。实际工程中经常遇到厂商把A标成Data+的坑,不能盲信括号里的字符,必须用示波器或万用表确认电平极性。

2.3 调换线序:解决了一半问题

把PLC端的RDA与RDB互换、SDA与SDB互换,同时发送和接收交叉对接:

主站PC端引脚颜色PLC端
TXD-(A)1RDB
TXD+(B)2RDA
RXD+(B)3SDA
RXD-(A)4SDB
GND5SG

重新通电测试,PLC发送、PC能正常接收,但PC发送、PLC依然收不到。这个现象很典型:发送方向通了,接收方向不通,说明物理层已经基本正确,问题转移到PLC端的收发切换或通信格式配置上。

2.4 接地和屏蔽的实务处理

RS485虽然是差分传输,但不代表可以忽略参考地。MOXA的GND和FX3U-485-BD的SG必须互联,否则共模电压超出收发器承受范围时,轻则通信误码,重则烧毁接口芯片。项目现场电缆长度超过15米,我习惯采用屏蔽双绞线,屏蔽层单端接地——两端接地会产生地环路电流,反而引入噪声。

如果通信距离超过100米,还应该在总线末端并联120欧终端电阻。挑残机项目线长约30米,MOXA卡内部自带跳线可以启用终端电阻,但PLC端BD板没有,所以只在PC端启用即可。

3. RS指令与D8120寄存器:无协议通信的参数配置

3.1 RS指令的格式与操作数含义

三菱FX系列无协议通信的核心是RS指令,功能是将数据通过基本单元上的串行通信口发送出去,同时接收外来数据。指令格式如下:

RS D0 K10 D100 K20
  • D0:发送数据寄存器的起始地址,从D0开始的10个字节会被发送
  • K10:发送数据长度(字节数),范围0~4096
  • D100:接收数据寄存器的起始地址,收到的数据会存到这里
  • K20:接收数据最大长度(字节数),实际接收长度由系统写入D8122

RS指令是主动型的,每次都要手动触发。程序里通常这样组织:

// 伪代码逻辑,对应梯形图的动作顺序 LD M8002 // 初始化脉冲 MOV H00C81 D8120 // 设置通信格式 MOV K0 D8121 // 无协议通信时保持默认 RS D0 K10 D100 K20 // 启用接收功能

发送时把要发的数据先移入D0开始的寄存器区,然后置位M8122(发送请求),PLC会自动把数据从串口发出去。接收时不需要额外指令,数据到达后自动存入D100,同时M8123(接收完成标志)置位,程序读走数据后必须复位M8123,否则后续数据无法再接收。

3.2 D8120的位定义:每一位都不能拍脑袋

D8120是通信格式寄存器,16位二进制每一位控制一种通信参数。项目最终设定为0C81H,对应的二进制是0000 1100 1000 0001,拆开来看:

含义
b01数据位8位
b10无奇偶校验
b201位停止位
b30无停止位延长
b4~b70000波特率9600bps
b8~b900无帧头帧尾
b101使用FX3U-485-BD时必须为1
b111使用FX3U-485-BD时必须为1
b12~b150000协议模式默认

这里最容易跳坑的是b10和b11。查阅《三菱FX3U用户手册》,当基本单元连接FX3U-485-BD或FX3U-232-BD时,D8120的b10、b11必须同时设为1,否则通信口不会按BD板的方式工作。最初设0081H时b10、b11都是0,对应的是基本单元内置RS422口的工作模式,BD板物理上接了线,但PLC内部根本没把通信口切换到BD板上。

3.3 特殊辅助继电器的配合

RS指令的运行依赖一组特殊辅助继电器,常用几个如下:

软元件功能使用要点
M8122发送请求置位后发送RS指令指定的数据,发送完成自动复位
M8123接收完成标志接收完成后置位,程序处理完数据后必须手动复位
M8120通信格式修改标志修改D8120之前先置位,改完复位后才能生效
M8121接收超时等待可选项,配合D8129设置超时时间

初始化流程里一定要先置位M8120、写入D8120、再复位M8120,顺序不能反。有些工程师直接在程序开头用MOV指令写D8120,结果通信参数不生效,就是这个原因。

3.4 梯形图实现:完整的发送接收框架

// 梯形图逻辑的STL描述,映射到GX Works2的梯形图 LD M8002 SET M8120 // 进入通信格式设置模式 MOV H0C81 D8120 // 9600,8,1,无校验,RS485,BD板模式 RST M8120 // 退出设置模式 RS D0 K10 D100 K20 // 初始化接收,发送长度10字节 // 发送数据准备 LD X001 MOV U0 D0 // 把要发送的数据写入D0 MOV U1 D1 SET M8122 // 启动发送 // 接收数据处理 LD M8123 // 接收完成 MOV D100 D200 // 把收到的数据转存到业务寄存器区 RST M8123 // 必须复位,否则下一条数据进不来

这段代码展示了无协议通信的最小完整框架。RS指令在初始化时就被执行,之后持续等待接收。发送数据时,先向发送缓冲区写入内容,再触发发送请求。接收完成标志M8123是边沿敏感的,如果处理程序里忘了复位,第二次接收永远不会完成。

4. 实验排错全过程:从0081H到C81H的一次典型调试

4.1 第一步:硬件连接和初测

按照第二章第二版的交叉线序焊接好电缆,把FX3U-485-BD插到FX3U-128MT基本单元的通信扩展槽上,MOXA卡安装到PC的PCI插槽并装好驱动。设备管理器里确认MOXA卡的串口号,比如COM3。PLC端程序先写最简版本:

LD M8002 MOV H0081 D8120 // 最初错误配置,后续发现BD板要求b10,b11=1 RS D0 K10 D100 K20

PC端打开串口调试助手,选择COM3,波特率9600,8位数据位,1位停止位,无校验,无流控。点击打开串口,发送区填“1234567890”(ASCII),点击发送。观察PLC端监视D100的值,如果能在软元件监视窗口看到D100~D109有数据变化,说明接收正常。但实际结果是什么都没有。

4.2 第二步:分析总线状态和线序

用示波器探头夹在MOXA卡TXD+/TXD-两端,PC发送时能看到差分信号脉冲,说明PC侧发送电路在工作。再测PLC端RDB/RDA之间的电压,完全没有响应。这种情况下先怀疑线序。调用MOXA卡自带的诊断工具,查看串口状态寄存器,确认MOXA卡实际发出的电平极性。

同时用万用表二极管档测量MXOA卡引脚和PLC BD板引脚之间的导通性,逐一核对。这里发现了一个容易被忽略的点:DB9头的引脚编号和端子排的引脚编号都是从1开始,但MOXA卡的TXD-实际对应DB9的第1脚,TXD+对应第2脚,而FX3U-485-BD的端子排第1脚是RDA,第2脚是RDB。如果依赖括号里的A/B标签做同类对接,就会像第一次焊接那样把RDA接到TXD-(A)上,等于把Data-接到Data-、Data+接到Data+,这本身没错,但MOXA的括号标注里A和B的极性与RS485标准相反,导致实际是把负信号接到了正信号上。

调换线序后,PLC发送、PC接收成功,验证了发送方向的物理连接正确。但反向不通,说明还有逻辑层问题。

4.3 第三步:深挖D8120的BD板设置

打开GX Works2的软元件监视,强制D8120当前值,发现是0081H。对照三菱官方手册FX3U-485-BD的使用章节中有一项重要说明:在D8120的b11、b10必须设定为(1,1),即选择FX3U-485-BD或FX3U-232-BD专用模式。当时手上《三菱编程手册》里写得很清楚,但初版实验时只看了D8120常用设置表,没看BD板的附加条件,漏掉了这两位。

把D8120改成0C81H,热修改PLC程序(在线写入D8120),再次测试:PC发送“1234567890”,PLC端D100接收到对应ASCII码;PLC程序里把接收到的数据加上偏移再发送回去,PC串口助手也能看到回传数据。

4.4 不同D8120取值下的表现对照

设定值b10b11通信效果
0081H00使用基本单元内置RS422口模式,BD板无效,双向不通
0481H01模式不匹配,发送可能通,接收不稳定
0C81H11使用FX3U-485-BD模式,双向正常

这个表就是这次调试最值的记录。很多现场问题最后都落在这种“多读了一页手册”的差异上。b10、b11组合代表通信口硬件选择,不能按通用格式寄存器理解。

4.5 常见误用:把D8120当普通寄存器直接改

有人为了省事,在PLC运行时通过上位机写D8120,不经过M8120设置流程。这样改完参数不会立即生效,必须先将M8120置位,写入D8120后再复位M8120,或者直接断电重启。正确做法是把D8120的写入放在M8002初始化脉冲之后,这样PLC上电即完成配置。

另一个常见误用是忘记设置接收最大长度。RS指令的第二个长度参数如果设得太小,超过长度的数据会被丢弃,而且不会有任何报错。比如PC一次发20字节,但接收长度只设了10,那么后10字节直接丢掉,而且M8123根本不会置位,程序看起来就像“没收到数据”。调试时先用短数据帧,长度为1~4个字节,容易定位。

5. 无协议通信的验证方法和稳定化技巧

5.1 用串口调试助手做双向回环测试

验证步骤分三级:

  1. PC自发自收:串口调试助手的发送区发一串数据,如果接收到相同数据,说明MOXA卡的环回模式打开或接线短路,需要关闭环回模式;
  2. PLC发送、PC接收:PLC程序定时向D0写入计数递增值,触发M8122,PC端每秒应收到一次数据,数据内容按发送缓冲区计算;
  3. PC发送、PLC接收:PC发一帧已知数据,PLC端D100区域的数值与发送内容一致,并且M8123能正常置位复位。

最容易卡住的是第3步。在PLC程序里把接收到的数据原样回传,PC端同时收到自己的回显,这就证明RS485全双工通路(两对差分线)实际上可以工作。注意RS485是半双工,发送和接收共用物理通道时由方向切换控制,这里MOXA卡和FX3U-485-BD之间用了四线制,可以实现类似全双工的效果,但官方定位仍是“无协议半双工”,所以在PLC程序里不能一边发送一边等待接收。

5.2 数据帧格式约定:给报警信息加帧头帧尾

项目里要记录的是错误报警信息,实际报警码可能是16位整数或字符串。无协议通信没有协议号,接收方必须靠帧格式自己切分数据。我通常在发送缓冲区里定义一个固定格式:

帧头(1字节:0x02) + 报警码(2字节) + 时间戳(4字节) + 帧尾(1字节:0x03)

发送程序按这个格式填充D0~D7,PC端按同样的规则解析。如果数据源是纯数字寄存器,注意高低字节顺序。三菱PLC的MOV指令把数据传到大端序,但RS指令是按字节发送,D0的高8位先发还是低8位先发取决于D8120的b14位。b14=0时低字节在前,b14=1时高字节在前。

我在项目中固定b14=1,保证与PC端解析一致。如果在GX Works2里查看D0的值是0x1234,发送后又变成0x3412,就是b14设置反了。

5.3 用M8121做接收超时,避免死等

RS485无协议通信中没有流控,如果PC端发了半帧数据就断线,PLC的M8123可能一直不置位,接收缓冲区卡住。可以给接收加超时控制:

LD M8121 // 超时标志 RST M8123 RS D0 K10 D100 K20 // 重新启用接收

M8121配合D8129(超时时间,单位10ms),当接收数据间隔超过设定值时M8121置位。在梯形图里把它作为一个复位信号,把接收缓冲区清空重新接收。超时时间我一般设20~50ms,太快会切碎正常帧,太慢则失去保护意义。

5.4 校验方式:累加和与CRC16

纯无协议通信没有CRC保障,PC端和PLC端需要自己约定校验。简单项目用累加和就够:

校验字节 = (帧头 + 数据字节1 + 数据字节2 + ... + 帧尾) 取低8位

PLC端用求和指令实现,PC端同样求和比较。如果环境电磁干扰强,报警数据容不得错,可以用CRC16-Modbus。三菱FX3U没有现成CRC指令,需要写一个子程序逐位计算,大约40步梯形图。不过通用做法还是把CRC计算放在PC端,PLC端只做累加和,减少PLC扫描周期占用。

5.5 最后的完整性检查清单

现场交付前按下面顺序过一遍:

  • 用万用表确认通信电缆线序与第二章第三版表格一致,尤其确认TXD+/TXD-与RDA/RDB的交叉关系
  • 检查PLC的D8120值是不是0C81H,并在程序里用M8120流程设置
  • 检查RS指令的接收长度是否大于最大报警帧长度
  • 检查M8123是否在读取后复位
  • 用示波器测量总线空闲电平,静态时A-B电压应在-0.2V~-6V范围,如果A-B电压为正,线序又反了
  • 检查MOXA卡驱动设置里的“流控”是否为无,RS485的自动方向切换由驱动处理,不要开启软件流控

把这六项逐条确认后,挑残机项目的报警记录功能在连续运行72小时内没有出现丢帧或乱码,整个调式过程确实就是靠线序和D8120那两位解决了问题。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/19 5:23:59

自研浏览器插件实战:从需求梳理到上线维护的完整指南

“自研插件”这四个字,在圈子里的分量其实挺微妙的。很多人一听“自己写插件”,第一反应是“大佬又在造轮子”,但以我自己折腾这几年插件的实际感受来说,大部分自研插件既不是为了秀技术,也不是为了替代那些成熟的开源…

作者头像 李华
网站建设 2026/9/19 5:15:26

数据库三范式实战:从1NF到3NF的表结构设计权衡

做数据库相关工作,范式这个概念基本绕不开。面试被问、课程设计被考、设计表结构时被同事甩一句“你这表不符合3NF”,都是常有的事。如果你去搜“三范式”或者“3NF”,能搜出一堆教科书定义,什么“每一列不可再分”“非主属性完全…

作者头像 李华
网站建设 2026/9/19 5:16:47

2026企业选型指南:主流BI产品哪家好?全方位对比评测

2026年,企业数据环境正在经历深刻变化。IDC数据显示,2025年中国BI软件市场规模达13.2亿美元,连续6年保持25%以上同比增速。对于企业客服、市场、售后等部门而言,数据已不再是IT部门的专属领地——客服团队需要实时洞察客户投诉趋势…

作者头像 李华
网站建设 2026/9/19 5:15:27

Flash倒计时器课件开发:AS2时间控制与PPT嵌入实战

简介:本资源是一份面向Flash动画初学者与课件开发者的专业教学课件,聚焦多种可自定义时间的倒计时器实现方案,解决教学演示、培训计时、互动活动等场景中动态时间可视化需求。课件系统讲解5类核心倒计时组件:形象化沙漏式倒计时、…

作者头像 李华
网站建设 2026/9/19 5:08:38

C++ 常用标准库函数实战避坑:string、vector、algorithm

简介:这是一份面向C初学者与需要随时查阅标准库接口的开发者整理的常用函数速查文档,针对日常编程中数学运算、字符串处理、内存操作与类型转换等高频需求,把零散的函数原型与返回值说明汇集到一处,便于快速定位与对照使用。压缩包…

作者头像 李华
网站建设 2026/9/19 5:02:28

数字人技术:能力边界与最佳应用场景解析

1. 数字人与真人的边界探讨最近几年,数字人技术突然火了起来。从虚拟主播到AI客服,从数字员工到元宇宙居民,各种形态的数字人层出不穷。作为一个长期关注人机交互领域的技术从业者,我经常被问到:"数字人最终能完全…

作者头像 李华