You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python读取Keller Modbus深度传感器的输出数据

如何通过Modbus RTU读取Keller深度传感器的压力、温度数据并解析?

我正尝试使用Modbus协议,通过Raspberry Pi 5读取Keller品牌的一款深度传感器。该传感器可输出压力(单位bar)和温度(单位摄氏度)数据,用于计算水深。目前我已能成功读取寄存器,但由于对Modbus协议不熟悉,不清楚需要读取哪些寄存器来获取目标数据,也不知道如何正确解析返回的原始数据。传感器的通信协议文档可在产品官网获取。

通信基础参数

Mode: RTU Mode (ASCII is not supported)

Coding System: 8–bit binary, hexadecimal 0–9, A–F
Two hexadecimal characters (bytes) contained in each 8–bit field of the message

Bits per Byte: 1 start bit
8 data bits, least significant bit sent first
No parity (default) 1 parity bit: even or odd parity (programmable)
1 stop bit (default) 2 stop bit (programmable) (Class.Group-version 5.21-XX.XX and 5.24-XX.XX)

Error Check Field: 2 Byte Cyclical Redundancy Check (CRC)

Baudrate: programmable 9’600baud (default) or 115’200baud

现有代码

import minimalmodbus

mb_address = 1

sensy_boi = minimalmodbus.Instrument('/dev/ttyACM0', mb_address)

sensy_boi.serial.baudrate = 9600
sensy_boi.serial.bytesize = 8
sensy_boi.serial.parity = minimalmodbus.serial.PARITY_NONE
sensy_boi.serial.stopbits = 1
sensy_boi.serial.timeout  = 0.5
sensy_boi.mode = minimalmodbus.MODE_RTU
sensy_boi.clear_buffers_before_each_transaction = True
sensy_boi.close_port_after_each_call = True

print(sensy_boi) 

data = sensy_boi.read_registers(0, 2, 3)

print(f"Raw data is {data}")

sensy_boi.serial.close()

现寻求帮助,明确以下两点:

  • 需要读取哪些寄存器来获取压力、温度数据
  • 如何正确解析这些寄存器的原始数据为实际物理量

内容的提问来源于stack exchange,提问作者Casey Koehn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 01:34:54