分类 Python 下的文章

之前使用minimalmodbus可以实现与ModBus485传感器通信了,但是有个检测SF6和氧气的传感器却无法获取数据,不管是minimalmodbus还是pymodbus,都是在获取最后一位校验码时失败了,导致CRC错误,报文被丢弃。尝试了很多方法和咨询厂家之后也没有更好的方法。最后只能选择使用最原始的方式,串口通信。

# 加载 ModBus模块
import minimalmodbus
# 设置 串口地址 和 设备地址(此处是10进制的地址,串口报文是16进制的地址)
inst = minimalmodbus.Instrument('COM4',1)
# 设置波特率
inst.serial.baudrate=9600
# 设置超时
inst.serial.timeout=1
#报文格式
# 01 03 00 05 00 01 94 0B
# 01(设备地址)03(问询)0005(寄存器地址)0001(寄存器数量)940B(CRC)
# 00 01 表示读取1个寄存器,同理 00 02 表示读取两个连续的寄存器 报文中的寄存器地址当作首个,依次向后类推
# 温度寄存器地址 0001
tem = inst.read_register(1,1,signed=True)
# 湿度寄存器地址 0000
hum = inst.read_register(0,1,signed=False)
print("当前温度"+str(tem)+"℃")
print("当前湿度"+str(hum)+"%")