python - 使用 Python 代码从 Modbus RTU 从站获取整数值
问题描述
我正在读取 modbus 从站寄存器中的值。但是存储在寄存器中的值是两个寄存器的组合。也就是说,如果寄存器 3 有 72,寄存器 4 有 489。实际值为 72489。我能够做到这一点。
但是问题来了,当第二个寄存器中的值以0开头时。也就是说,如果寄存器2有72,寄存器4有012。实际值应该是72012,但我得到7212。有没有办法防止这种情况。
执行此操作的代码部分是,
`rr = client.read_holding_registers(2, 22, unit=1)
unconcatenateSensorConsumptionValues = rr.registers
sensorsConsumptionValues = []
for i in range(0, 10, 2):
ftemp = ""+str(unconcatenateSensorConsumptionValues[i])
stemp = ""+str(unconcatenateSensorConsumptionValues[i+1])
fin = ftemp+stemp
sensorsConsumptionValues.append(int(fin))`
解决方案
将寄存器数字视为字符串。
fin = int(unconcatenateSensorConsumptionValues[i]) * 1000 + int(unconcatenateSensorConsumptionValues[i+1]) * 1
第一个寄存器是 1000,第二个寄存器是 1。
推荐阅读
- javascript - 如何使用 Javascript 数组过滤器过滤 0?
- python - 配置导入路径——pycharm和jupyter notebook
- mapael - 可见图的计数
- android - Parse - 离线对象崩溃
- apache-flink - Apache Flink“无法实现检查点”
- mysql - 如何使用sails.js模型文件中的大小定义“TINYINT”数据类型
- c# - 如何使用 powershell 构建、发布 ASP.NET 核心项目来构建服务器?
- php - Laravel PHP & Mysql:通过统计字符串的实例将表数据转换为列和行
- javascript - 如何使我的 JavaScript 代码更具动态性和可扩展性
- docker - Docker容器上传到gcp cloud-run,核心Web api应用程序不起作用