你帮我重新描述下我的提问,我觉得用词不太好
对端是RS-422 四线全双工设备。我先用USB 转 RS-485 连接,只接对端发送差分线时 PC 能正常接收;再把对端接收差分线也接上后,PC 接收数据就出错。改用 USB 转 RS-422 后收发正常。请问这是否是RS-485 半双工与RS-422 全双工不兼容导致的?
你遇到的现象,本质上是RS422 和 RS485 的双工方式、线数不一样,虽然它们电气电平兼容,但不能简单互换。
核心区别
| 项目 | RS422 | RS485 |
|---|---|---|
| 双工方式 | 全双工 | 半双工 |
| 线数 | 4 线:TX+、TX-、RX+、RX- | 2 线:A、B |
| 收发关系 | 发送和接收独立,可同时进行 | 收发共用一对差分线,不能同时收发 |
| 典型转换器 | USB转422,有独立 TX± 和 RX± | USB转485,只有 A/B 一对 |
你的设备另一端是RS422,说明它是四线全双工。
而你一开始用的是USB转485,它只有一对 A/B,内部收发共用,天生是半双工。
为什么只接“接收线”能收?
USB转485 适配器在接收状态下,A/B 对总线呈高阻,相当于一个监听者。
你把 RS422 设备的发送差分对接到 USB转485 的 A/B,它只接收、不驱动总线,所以能正常收到数据。
这时相当于:
RS422设备 TX+ / TX- ---> USB转485 A/B只监听,不冲突,所以没问题。
为什么接入“发送线”后,接收字节就出错?
因为 USB转485 只有一对 A/B,它既要当接收,又要当发送。
如果你想让它也发送给 RS422 设备,通常会把RS422 的接收差分对也接到同一对 A/B 上,变成类似:
RS422设备 TX+ / TX- ---> USB转485 A/B <--- RS422设备 RX+ / RX-TX+,TX-,RX+,RX-是什么?
TX+、TX-、RX+、RX-是RS-422 四线全双工串口里的一对发送差分线和一对接收差分线。
字母含义
TX= Transmit,发送
RX= Receive,接收
+ / -= 差分信号的正端和负端
它们不是四根独立的数据线,而是两对差分线:
| 信号 | 含义 |
|---|---|
| TX+ / TX- | 一对发送差分线 |
| RX+ / RX- | 一对接收差分线 |
RS485是半双工啊
通常说的 RS-485 就是两线半双工。A/B 一对差分线,收发分时复用,不能同时收发。
严格从标准层面说,RS-485 只是电气标准,并没有规定只能半双工;
它也可以做四线全双工。但工程上默认讲“RS-485”,基本都指两线半双工;
四线全双工那个一般就直接叫RS-422了。
市面上常见的 USB 转 485 模块,也基本都是两线半双工,内部自动切换收发方向。
RS-422到底长什么样?
RS-422 的“四线”在实际现场,通常不会直接看到四根裸线,而是藏在DB9 接头、端子排或航空插头里。
DB9接头:
端子排:
最常见的物理形态
USB 转 RS-422 转换器
电脑 USB 口 │ ▼ +-------------------+ | USB 转 422 盒子 |---- DB9 公头/母头 +-------------------+ 或 绿色端子排