首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RTU Modbus的Python脚本

RTU Modbus的Python脚本
EN

Stack Overflow用户
提问于 2020-04-18 00:49:38
回答 1查看 612关注 0票数 0

我正在用覆盆子pi 3B+实现我家的自动化。

我买了一个电子能量计MEMO4-M-MOD。https://docs-emea.rs-online.com/webdocs/152f/0900766b8152f22b.pdf为了把它连接到树莓派,我买了一条RS485/USB电缆。

我有兴趣从电能表中读取一些值(例如,电能表的数据表中显示电压的寄存器地址在地址2000(十六进制)上)我写了这段代码

代码语言:javascript
复制
#!/usr/bin/env python3
import minimalmodbus
import serial


instrument = minimalmodbus.Instrument('/dev/ttyUSB0',0) 
instrument.serial.port
instrument.serial.baudrate = 9600
instrument.serial.bytesize = 8
instrument.serial.parity =serial.PARITY_NONE
instrument.serial.stopbits = 1
instrument.serial.timeout = 0.05
instrument.mode = minimalmodbus.MODE_RTU

try:
    
    valeur= instrument.read_register(2000,1,3,False) 
    print(valeur) 
except IOError:
    print("no connection")

我在这里面临的问题是打印没有连接,所以我认为我正确地使用了这个库。你用过这个库吗?你能给我一些建议吗?非常感谢

EN

回答 1

Stack Overflow用户

发布于 2020-05-12 22:01:10

代码语言:javascript
复制
#!/usr/bin/env python3
import minimalmodbus
import serial

instrument = minimalmodbus.Instrument('/dev/ttyUSB0',1)
instrument.serial.baudrate = 9600
instrument.close_port_after_each_call = True

valeur = instrument.read_float(2000, functioncode=3, number_of_registers=2, byteorder=0)

print(valeur)

将您的RS485 USB设备连接到您的pi,并确保您的pi可以看到它...通过运行"dmesg | grep ttyUSB“检查,你将得到一个最有可能的ttyUSB0输出,使用它作为你的设备地址。

你还需要设置电能表的modbus地址,我在上面设置为1…

你的寄存器是大端的,我在这里查看了关于返回大端双寄存器值(分类为read_float)的官方文档:https://minimalmodbus.readthedocs.io/en/stable/internalminimalmodbus.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61276673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档