OP320 文本屏一般走 Modbus RTU,先确认三件事:通讯口是 RS-232 还是 RS-485、屏里选的协议是不是 Modbus RTU、以及站号/波特率/数据位/停止位/校验位。这四项和 51 端必须完全一致,否则连上了也是乱码。
51 端实现上,建议按下面几步行:
1. 串口用模式 1(8 位 UART),波特率尽量用 11.0592MHz 晶振配定时器 1,9600/19200 都能整除,误差小;用 12MHz 会偏。
2. 接收不要在主循环里死等,做一个字节状态机 + 定时器判 3.5 字符帧间隔,一帧收完再解析,避免屏连续刷新时丢包。
3. 常用功能码就两个:03 读保持寄存器、06 写单个寄存器。地址注意偏移,屏手册里 40001 这类地址通常对应报文里的 0x0000,先按减 1 处理。
4. CRC16 用查表法算,发送前拼好整帧,发完开 200ms 超时;超时就重发一次,仍失败则报警,不要无限重试。
5. 硬件电平别搞反:RS-485 用 MAX485,DE/RE 方向切换后要留一点延时再发;RS-232 用 MAX232,注意电荷泵电容按手册取值。
调试顺序建议反过来:先用 USB 转 485 加 Modbus Poll/Modbus Slave 在电脑上把屏的地址表和读写跑通,确认每个寄存器对应哪个显示框,再写 51 的代码,这样能少走很多弯路。
你手上是 OP320-A 还是 OP320-A-S?屏里协议选的是 Modbus RTU 还是厂家的自由协议?这两点定了,寄存器表和帧格式就能对上了。