我正在做一个项目,在这个项目中我使用Pymodbus连接到一个工业风扇系统。我能在这个风扇上读到一些地址,但不能读到其他地址。我正在使用的风扇说明书将地址分为"参数组",如下所示:
分组 | 描述 | 00组 | 基本参数 |
---|---|
Group 01 | V/F模式选择和设置 |
02组 | 电机参数 |
组03 | 多功能数字输入/输出 |
… | |
组15 | PLC监控功能 |
根据评论,第一个问题是您使用的手册过期了。通过搜索"V/F pattern selections and setup"
,我找到了一本更新的手册。这个更新后的手册包括一个将"分组"与寄存器联系起来的表("App3-13"至"App3-18"页)。例如函数01-0
(01组的一部分)'伏特/赫兹模式'在保持寄存器0100H(100十六进制)。
有了更新的手册,更容易确定如何从分组/函数映射到适当的寄存器。一个潜在的问题是,手册引用了十六进制寄存器(100H
),所以在Python中查询时,您需要使用modbus_conn.read_holding_registers(0x100,1,unit=1).registers[0]
之类的东西(这可能解释了为什么您最初的尝试失败)。
注意:当张贴这类问题时,您可以提供的细节越多越好(例如设备制造商,型号等)。
设备的文档中可能有如下方案:
Address GGnnH: GG表示参数组,nn表示参数号,例如,Pr 04-01的地址为0401H。("H"表示数字401在本例中是十六进制的。因此0401H是寄存器1025)
将其分类为组对我来说很困惑。
要读保持寄存器,你必须传递第一个寄存器的偏移量和你想读的数量,仅此而已。
也许设备的可读寄存器不超过20个,所以如果你传递一个偏移量为10,数量为20,那么你试图读取到第30个寄存器,而这个寄存器可能不存在。