通过TCP串行连接使用Pymodbus(串行)

0 投票
2 回答
2098 浏览
提问于 2025-04-17 19:35

我将要在我的Linux服务器和一个蜂窝调制解调器之间建立连接,这个调制解调器会作为一个TCP的串行服务器。

这个调制解调器通过RS232连接到一个modbus设备(这是一种工业协议)。

我想用pymodbus来和这个modbus设备进行通信。不过,我不能在PyModbus中使用TCP的modbus选项,因为这个设备是通过串行modbus(Modbus RTU)来交流的。而且我也不能使用PyModbus中的串行modbus选项,因为它需要在Linux服务器上打开一个实际的本地串行端口(tty设备)。

我该如何将这个串行连接桥接起来,让pymodbus库能够把这个连接当作一个本地的串行设备来使用呢?

2 个回答

0

其实我之前也在做类似的事情,所以决定自己做一个串口/TCP的桥接工具。这个工具使用虚拟串口来和每个调制解调器进行通信。

我用了一个叫minimalmodbus的库,不过我稍微改了一下,以便它能处理虚拟串口。

希望你已经解决了你的问题,如果还没解决,我可以试着帮你。

0

没有简单的方法可以让你的Linux服务器误以为MODBUS RTU其实是MODBUS TCP连接。

无论如何,你的调制解调器必须能够在TCP和串口之间传输数据。所以我假设:

1) 你可以以某种方式编程你的调制解调器,让它按照你的要求工作;

2) 调制解调器的制造商提供了一个内置的机制来实现这一点。

如果是1):你需要编程你的调制解调器,让它在从TCP连接到RS链接复制数据时,可以把TCP的ADU替换成RTU的ADU(反之亦然)。

如果是2):只需将你的RTU帧提供给制造商设计的任何API即可。

撰写回答