Skip to content

Modbus RTU Over TCP 协议

我们知道 Modbus RTU 和 Modbus TCP,但是这个 Modbus RTU Over TCP 是什么东西?

它其实是一种非官方实现的协议,一句话概括就是:

通过 TCP 层传输 RTU 格式帧

使用场景

其实这种场景也挺常见的,多数用于企业内的旧 Modbus 设备需要联网进行数据采集或监控,由于旧设备不支持联网(不支持 Modbus TCP 协议),那么就需要有一种中间服务器能中转我们的 RTU 帧

任何问题都可以通过增加一个中间层来解决,如果不行,就再加一层 😂

原理

中间服务器通过 RS-485 总线连接多个 Modbus 设备,中间服务器(主机)与设备(从机)之间使用 Modbus RTU 通信

我们的采集系统通过 TCP 连接中间服务器,向它发送 RTU 帧,中间服务器需要做的就是帮我们把这个 RTU 帧转发给对应的从机,拿到数据后在响应给我们

[采集系统] --->(TCP/IP)---> [中间服务器] --->(RS-485)---> [多个 Modbus RTU 设备]

注意事项

  1. 请求/响应报文严格按照 Modbus RTU 帧来解析,没有 Modbus TCP 的 MBAP 头
  2. 虽然 TCP 协议有数据可靠性,但是一般中间服务器会直接将从机返回给它的数据返回给你, 从机通过 Modbus RTU 传输给中间服务器这个步骤中可能出现数据损坏,所以你拿到数据后必须通过 CRC 校验码验证数据
  3. 你需要注意频率,因为中间服务器与 Modbus 设备通信的过程仍有时序问题
  4. 请求同一个中间服务器,你应该避免使用异步/多线程请求,不然可能出现串帧问题(即可能出现连续请求时 第 1 次请求返回第 2 次请求的数据给你)

如有转载请标注本站原文地址