首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MODBUS RTU命令的语法

MODBUS RTU命令的语法
EN

Stack Overflow用户
提问于 2021-07-20 17:57:38
回答 1查看 94关注 0票数 0

我一直在尝试通过树莓派上的RS485引脚,使用MODBUS RTU读取天气传感器的数据。我在识别我必须编写的命令的语法时遇到了问题。在pymodbus readme上,它说:

代码语言:javascript
复制
 read_coils(address, count=1, **kwargs)

 Parameters:    
    address – The starting address to read from
    count – The number of coils to read
    unit – The slave unit this request is targeting

我无法理解我应该输入十六进制格式的地址还是DEC格式的地址,我也无法理解参数"unit“是什么意思。

在气象站的数据表中,以下值是作为寄存器地址给出的,但我不知道哪些值进入了命令Datasheet of weather station。谁能告诉我应该以哪种格式写入地址,以及应该在“单位”字段中写入什么

提前感谢这个令人惊叹的社区

EN

回答 1

Stack Overflow用户

发布于 2021-07-20 18:24:50

地址作为整数类型(number)传递。在Python中,您可以用十六进制(如0x75fb)或十进制(如30203)甚至二进制(0b111010111111011)来写一个数字。你喜欢哪一种都行。

在Modbus中,术语线圈指的是布尔输出。您可以将线圈设置为“开”或“关”。您可能希望使用read_input_registers()。从链接的数据表中可以看出: 30001-39999 (十进制)是输入寄存器。你应该读一点关于Modbus的基础知识,例如simplymodbus.ca FAQ有一个地址范围表。

术语“单元”只是一个非常糟糕和令人困惑的名称。我认为它指的是Modbus从属ID。在同一总线上可以有多个从属(“单元”)。你可能可以在你的设备上配置它,手册应该会告诉你。对于Modbus-RTU (不是Modbus-TCP),如果您选择了错误的号码,您将得不到任何答案。但请记住,有100个其他可能的原因,为什么你可能无法从设备上得到答案。

如果示波器不能工作,最好在伸手可及的地方放置一个示波器,以检查您的设备是否没有发送信号,或者其他设备是否没有应答,或者电压是否错误。也有机会“盲目”地修复问题,通过仔细检查你所做的每件事,但这可能会令人沮丧。

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

https://stackoverflow.com/questions/68452937

复制
相关文章

相似问题

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