为何Linux下Pymodbus未请求却自动修改波特率致通信异常?
Modbus主站程序在Ubuntu下波特率异常导致通信不稳定
我有一个作为Modbus主站的Python3程序,启动ModbusSerialClient后读取从站寄存器,Windows下运行正常,但在Ubuntu环境中,ModbusSerialClient会自行修改波特率,导致通信不稳定。
已通过物理测量信号确认波特率确实发生了变化,且使用cu等命令行工具时波特率保持稳定。
初始化通信代码
from pymodbus.client.sync import ModbusSerialClient as ModbusClient ... try: self.client = ModbusClient( method = 'rtu' ,port= self.port ,baudrate=int(115200) ,parity = 'N' ,stopbits=1 ,bytesize=8 ,timeout=3 ,RetryOnEmpty = True ,RetryOnInvalid = True ) self.connection = self.client.connect() # Some delay may be necessary between connect and first transmission time.sleep(2)
其中Windows下self.port = "COM_X",Linux下self.port = "/dev/ttyS1"。
读取寄存器代码
rr = self.client.read_holding_registers(register_addr,register_block,unit=MODBUS_CONFIG_ID) if(rr.isError()): logger.debug(rr) else: # Proceed with the processing
出现的错误信息
Modbus Error: [Input/Output] Modbus Error: [Invalid Message] No response received, expected at least 2 bytes (0 received)
使用的版本信息
- pymodbus
3.1.0(2.5.3版本也存在该问题) - pyserial
3.5 - python
3.8.10 - kubuntu
22.04(Ubuntu下表现相同)
内容的提问来源于stack exchange,提问作者Ricard Molins
相关产品推荐
相关产品推荐

