问题标签 [minimalmodbus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
76 浏览

python - 使用 minimumModbus 存储 modbus 消息

我需要从串行设备写入和读取寄存器。一切正常,但我需要将消息存储在一个变量中。例如:

我得到的是

哪个是对的; 我需要的是存储':010300010001FA\r\n'':0103020000FA\r\n'在一个变量中,可能还有预期返回的字节数。我该怎么做?我在文档中没有找到任何关于此的内容

0 投票
1 回答
188 浏览

python - Python 最小 Modbus CRC 字节顺序

我希望使用 Minimal Modbus 通过 RS485-USB 适配器连接到我的太阳能逆变器 (GivEnergy)。不幸的是,Modbus 协议的实现反转了 CRC 字节,因此 Minimal Modbus 在 CRC 校验上失败。有没有办法在调用中反转 CRC 字节,可能带有选项标志,或者我可以手动构建 CRC 并注入我自己的?

0 投票
0 回答
29 浏览

python - MinimalModbus - 单个寄存器返回大于 7 字节

我正在连接到太阳能逆变器,当请求单个 input_register 时,它将返回多个字节的数据。Minimalmodbus 似乎只期望返回 7 字节。是否有不同的调用将读取返回数据的整个缓冲区,而不仅仅是 7 个字节,然后关闭连接?

如果我使用 read_registers() 则逆变器将此视为多寄存器调用并尝试发送更多数据...

0 投票
1 回答
38 浏览

modbus - 在我的 Modbus Console.WriteLine 中查找错误

我有这个 C# 代码,它正在产生一个错误Console.WriteLine($"Register {startAddress + i}={registers[i]}");。我试过 double )),并将它放在声明中的任何地方。我根本看不到错误在哪里。我可能错过了一些简单的东西,我只是没有看到它。

0 投票
1 回答
183 浏览

python - Noob试图通过python中的Modbus RTU RS485从他的EnergyMeter获取值

如果我搜索足够长的时间,我通常会找到答案。但是今天是这一天......我从 Aliexpress 购买了一个带有 MODBUS RTU 连接的 EnergyMeter,我正试图读出它。我已经尝试了很多来自互联网的东西。

这是 EnergyMeter 1的数据表

我试过pyModbus和minimalmodbus。

我的两个脚本:

看来我可以读取数据(第一个脚本输出 17942 和第二个 17248。但老实说,我不知道如何处理它。我也不明白那个代码......手册指出我必须发送一个 Hi 和一个低地址,但我该怎么做?0x00 是六进制 - 我必须转换这个吗?如何?

我必须发送 Adress+functioncode+data+crc 的手动统计信息 - 如何执行此操作,或者 pymod/minimod 是否自动执行此操作?现在如何正确的功能代码等?我完全糊涂了,如果有人可以帮助我,我会很高兴...

谢谢

0 投票
2 回答
683 浏览

python - 使用 Python 读取 MODBUS 寄存器时遇到问题

我正在尝试使用 Python (PyCharm) 读取 modbus 设备上的寄存器。我已确认 COM 端口、波特率和其他通信设置,我可以使用设备应用程序读取值(它是水位记录器)。我没有得到仪器的响应。

使用 mbpoll 可以读取寄存器 -

在此处输入图像描述 (地址与在 Pi 而非 PC 上运行时不同)

和 MBPOLL - 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

我的代码如下 -

收到错误 - 在此处输入图像描述

编辑以包括尝试 - 除了

任何帮助表示赞赏!

编辑:链接到设备手册 - h​​ttps: //in-situ.com/en/pub/media/support/documents/Modbus_Manual.pdf 设备是通过制造商电缆连接到 PC 的 Level Troll 400

编辑 2:我试图合并最小的 modbus 结构,但无济于事。

编辑 3:我可以使用 Modbus Poll 读取寄存器。寄存器是 40046,所以我理解这是保持寄存器中的寄存器 45?我如何将它翻译成最小的modbus?

编辑 4:我没有嫁给最小的 modbus - 我很高兴使用任何工具来完成这项工作

编辑 5:我也尝试depth = instrument.read_long(x, x)过不同的值

0 投票
1 回答
222 浏览

python - 如何用最小的modbus读取数字计数器的寄存器

我正在尝试使用 Modbus RTU RS-485 读取工业数字计数器的值。使用 USB-RS-485 转换,这里的主发送代码取自以下数据表,

数据表链接

Autonics CT 系列数据表的片段

我期望读取的输入寄存器是我所期望的,minimalmodbus 的 API 期望指定寄存器号、小数位数和功能代码。

  • 图书馆是否自动分配从属编号,还是我们必须定义它?
  • 从数据表中,是寄存器号是地址吗?
  • 如果有两个数据序列作为响应,我期望多少个小数?
  • CRC16 检查是否已包含在库中,因为我不应该对其进行编码?

到目前为止,这是我的代码,修改示例。

我已经阅读了 python Modbus 的其他库,我很乐意获得与 Modbus 相关的任何更好的编码建议。事先谢谢你。

0 投票
1 回答
87 浏览

python - SMC LEC 6的python minimummodbus协议实现:写入多个线圈

minimalmodbus不提供一次设置多个线圈的方法。我找不到解决方法。

客观的:

SMC LEC 6 控制器数据表中的 modbus 协议描述,请参见链接。我尝试通过使用 pyton library 发送列出的 modbus 命令来遵循从第 7 页开始的示例中的说明minimalmodbus

我想发送命令01 0F 00 10 00 08 01 02 BE 97,但找不到使用minimalmodbus. 没有实现功能码15 ( OF)。

我试图做的事情:

我的推理如下:

  • 我想设置多个线圈:0F
  • 从位置开始:00 10
  • 我想设置8个线圈:00 08,或一个字节01
  • 我想要做的是将此字节设置为值 2 ( 02),或二进制00000010

我认为这可以通过单独设置这些位置来实现:

执行器虽然不动...

谢谢,扬

0 投票
0 回答
29 浏览

python - Minimalmodbus 响应出现不当,不会更新

我正在尝试从为 Modbus RTU 协议配置的称重传感器面板读取数据。该程序的目标是记录数据,我将在下面链接整个程序,但设置是我遇到问题的地方。我已经让模块响应数据,并且它是在唯一允许通过 USB 通信的配置中连接的,所以我认为这是正确完成的。

我保存为返回给我的“加载”的响应是:

*星号代表根据预期返回值看起来完全不正确的响应部分。

这似乎是不正确的,我期望的响应的特点是:

总共 9 个字节(72 位)。所以,我希望回复看起来更像这样:

*星号代表根据预期返回值看起来完全不正确的响应部分。

**预期回复来自:https ://www.modbustools.com/modbus.html#function04

我还希望数据字节的值随着我在调用中添加或删除负载而改变,因为面板仪表读数正确,但响应不会随着程序循环而改变。有 MinimalModbus 经验的人是否对获得此回报可能出现的问题有任何猜测?

这是感兴趣的代码:

这是完整的程序,如果有人感兴趣的话,但出现故障的部分是上面列出的:

0 投票
0 回答
51 浏览

python - Minimalmodbus 不写超过 1000 的值?

我正在尝试使用 minimummodbus 库将值写入 1000 以上,但我的代码会生成以下错误:

如果我使用低于 1001 的值,则不会产生错误。这是我的代码:

任何帮助表示赞赏。