是否可以使用linux box或arduino构建modbus-RTU以太网网关?
我使用modbus RTU将plc从站连接在一起,我想将其中一个通过TCP连接到我的pc作为主站。
我想知道我是否可以使用连接到路由器的linux盒(rasbery pi/raspbian)作为modbus到tcp的转换器,通过管道将usb端口连接到某个端口上的本地ip,因为一个plc将在modbus rtu中连接到linux盒的usb端口。管道命令将如下所示:
nc -l 5626 > /dev/ttyUSB0 < /dev/ttyUSB0
我的目标是使用modbus通过linux盒将pc (与linux盒联网)连接到该plc。
发布于 2018-12-13 23:03:57
是的,你可以使用带以太网端口的linux机器。
这不是一个简单的'nc‘,它是。
首先,您需要知道,您的PLC是否支持Modbus TCP或Modbus RTU over TCP。
bcos这两种格式并不相同,它们是不可互换的。
一旦确定了这一点,就需要编写一个TCP客户端,以便在从机运行服务器时连接到从机。
如果它们还不支持Modbus TCP,您还需要编写一个TCP服务器。
最重要的是,你有握手延迟和半开放的连接等等。
如果它是商业设备,您还需要查看它将运行的设置。
希望这能有所帮助
发布于 2019-01-31 23:45:49
发布于 2018-08-26 18:30:31
虽然当然可以构建Modbus TCP/RTU网关,但您不能使用简单的nc
命令来实现,原因有两个:
对于RTU,“附加地址”是识别串行线路上的单元/从机的单个字节,而“错误校验”是16位CRC。
对于TCP,“附加地址”是7字节的Modbus应用协议报头(MBAP),由事务标识符、协议标识符和长度字段(每个2字节)加上标识单元/从站的单个字节组成(通常为255,但对于网关,这将是其后面的RTU从站的ID )。“错误检查”是空的(零字节),因为它已经由TCP负责。
对于RTU,您向串行线路写入请求,等待回复,然后才写入下一个请求。帧之间必须有3.5个静音字符。
对于TCP,原则上可以同时处理多个连接。如果您尝试同时将两个TCP请求转发到串行线路,则会出现混乱。
不过,您可以使用比nc
稍微复杂的程序来构建工作网关
这当然可以在Raspberry Pi上工作,也可能在Arduino上工作,这取决于您希望队列有多大。
资料来源:
https://stackoverflow.com/questions/50605244
复制相似问题