# RS485 原始数据透传 RS485 原始数据透传会将 USB 收到的设备原始数据直接发送到 RS485 总线,并将设备反馈原样返回 USB,不需要增加接口编号或 SANPO 封装格式。 > 连续高速实时控制请使用 [SANPO USB 转 RS485](usb_rs485)封装协议。 ## USB 串口与 RS485 接口 开发板连接电脑后,通常会出现两个 USB 串口。其中一个串口控制 RS485-1 和 RS485-2,另一个控制 RS485-3 和 RS485-4。 Windows 上会显示为两个 `COM` 端口,Linux 上通常显示为两个 `/dev/ttyACM*` 设备。操作系统分配的串口编号不一定与开发板接口顺序一致,首次使用时建议只连接一个 RS485 设备,通过发送测试指令确认对应关系。 选中某个 USB 串口后,原始数据会同时发到该组的两路 RS485 接口。如果需要只向 RS485-1/2/3/4 中的某一路发送,请使用 [SANPO USB 转 RS485](usb_rs485)封装协议。 ## 使用步骤 1. 通过 USB 将开发板连接到电脑。 2. 将电机或其他 RS485 设备连接到开发板,并确认设备供电正常。 3. 在上位机中打开对应的 `COM` 或 `/dev/ttyACM*` 端口。 4. 将波特率、停止位、校验位和数据位设置为与 RS485 设备一致。 5. 以二进制方式发送设备厂家定义的完整指令。 6. 如果设备返回数据,上位机会收到对应的二进制反馈。 打开 USB 串口时选择的通信参数,会同时用于该组的两路 RS485 接口。出厂默认参数为 4 Mbps、1 个停止位、无校验、8 个数据位。 ## 保存默认 RS485 参数 如果希望开发板上电后自动使用指定参数,可以通过当前 USB 串口发送: ```text AT+SETRS485=<波特率>,<停止位>,<校验方式>,<数据位>\r\n ``` | 参数 | 可用值 | | --- | --- | | 波特率 | `1200`~`4000000` | | 停止位 | `1` 或 `2` | | 校验方式 | `0`:无校验;`1`:奇校验;`2`:偶校验 | | 数据位 | `8` 或 `9` | 例如,设置为 4 Mbps、1 个停止位、无校验、8 个数据位: ```text AT+SETRS485=4000000,1,0,8\r\n ``` 该命令需要按文本发送,并以 `CRLF` 结尾。设置成功后返回: ```text OK\r\n ``` 参数会保存到开发板,重新上电后仍然有效。但是,上位机下次打开端口时,会再次按所选通信参数配置 RS485,因此两处参数应保持一致。 ## 宇树 GO-M8010 测试示例 1. 在上位机中设置电机的通信参数。 2. 选择二进制或十六进制发送。 3. 发送以下指令: ```text FE EE 11 00 00 00 00 00 00 00 00 00 00 00 00 18 7C ``` 如果电机 ID、通信参数、接线和供电均正确,上位机会收到电机返回的二进制数据。具体指令和返回内容请以电机厂家的协议说明为准。 ## 使用限制 - 原始透传每次发送的数据不应超过 72 字节,建议每次只发送一条完整设备指令。 - 同一 USB 串口对应的两路 RS485 会同时收到指令。多个设备共用时,应使用不同的设备 ID,并避免多个设备同时返回数据。 - 设备指令的前两个字节不能是 `41 54`、`45 54` 或 `53 54`。如果设备协议使用了这些开头,请联系技术支持获取兼容方案。 ## 常见问题 | 现象 | 处理方法 | | --- | --- | | 电脑没有出现 USB 串口 | 检查 USB 线、接口和驱动,然后重新拔插开发板 | | 不确定串口对应哪两路 RS485 | 只连接一个设备,分别使用两个 USB 串口发送测试指令 | | USB 串口提示被占用 | 关闭其他占用该端口的程序,再重新打开端口 | | 发送后没有回复 | 检查设备供电、A/B 接线、设备 ID、指令校验和串口通信参数 | | 返回数据错乱或长度不对 | 确认波特率、停止位、校验位和数据位与设备一致,并检查 A/B 接线质量 | | 两路 RS485 都收到了指令 | 这是原始透传的正常行为;如需指定单路接口,请使用 [SANPO USB 转 RS485](usb_rs485)封装协议 |