问题标签 [pymodbustcp]

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 回答
1683 浏览

python - 如何使用 pymodbus TCP 库获取浮点值?

我正在从带有 pymodbusTCP 库的机器中读取一些值,但是当我读取浮点数时我的值有误。获取值的函数是:

例如,真实值是 367,但读取为 366。可能有什么问题?

0 投票
1 回答
690 浏览

python - 使用 pymodbus 转换 Modbus 响应

我想将 PC 与允许 Modbus TCP 通信的智能仪表通信,PC 将成为主机,我只需要读取保持寄存器并以浮点格式显示它们。我正在使用 python 和 pymodbus 2.2.0 我的代码是:

我得到的是:

你知道如何使用 pymodbus 2.2.0 解决它吗?

0 投票
0 回答
715 浏览

python - pyModbusTCP: read/write_single_coil - 在我的情况下位地址是什么?

我正在探索使用 pyModbusTCP 模块和 python 与设备通信的选项。供应商已向我发送了通信协议布局,但我不明白如何将手册中的信息与 pyModbusTCP 想要的输入联系起来。

我还没有该设备,而且我对 Modbus 也很陌生,主要阅读了 Wikipedia 和其他一些文章。

这是手册的摘录(抱歉,我不知道如何插入表格):

手册还说明了支持 MODBUS 功能 0x03、0x01、0x06、0x10 和 0x05。

我的计划是使用 pyModbusTCP 中的这个函数来读取线圈: read_coils(bit_addr, bit_nb=1)write_single_coil(bit_addr, bit_value)

我给你的问题——善良的读者——如下:

  1. 例如,如何实现读取“Modbus 地址”=104“位”=3?我错过了一些基本的东西吗?我想避免编写自定义通信程序,但尽可能依赖 pyModbusTCP。pyModbusTCP 的读取位示例在这里:https ://pymodbustcp.readthedocs.io/en/latest/examples/read_bit.html

  2. 例如,如何实现编写,即“Modbus 地址”=2“位”=6?以下是否正确:

非常感谢您的任何见解和帮助。

0 投票
0 回答
221 浏览

python - 使用 Pymodbus 从 SMA 集群控制器获取数据

我正在尝试使用 pymodbus 从 SMA 集群控制器获取数据,但没有得到任何响应。例如,文档说地址 30005 中的请求带有 2 个寄存器和单元 1 我将获得集群控制器的序列号,我得到以下信息:

“ModbusIOException”对象没有属性“寄存器”

我正在使用的代码:

0 投票
1 回答
43 浏览

serial-port - 如何在 PYMODBUS(Modicon?)中塑造一个 CALL

我正在与太阳能逆变器进行一场激烈的战斗,知道吗(INGETEAM 3play)我通过 TCP / IP 连接。

我需要了解如何塑造我的电话,因为我没有我想要的答案,而且我不知道我在等待多少位的答案。 这是我需要做的电话:

打电话和接听

我确定 01 是 ID 03 表示持有寄存器,那么我如何塑造其余部分(00 00 00 06)?这是代码:

我知道我必须使用 client.read_holding_registers,但是如何?文档是这样的: 在此处输入图像描述

也许被称为 Modicon 的事实是我所缺少的?

总结一下问题:

  1. 如何塑造我的通话,使其与通话 01 03 00 00 00 06 匹配?
  2. 为什么当我拨打电话 01 03 00 00 00 06 我得到所有答案(从年到秒)我不应该只得到秒?(认为​​pdf中的30006代表呼叫本身03 00 00 00 06)
  3. 如何记录我在通话时得到的调试信息?我在覆盆子里做这个,我不确定我是否能像在 jupyter 上那样看到电话

例子

提前致谢!

0 投票
1 回答
109 浏览

python-3.x - Python comunication modbus tcp with plc saia sbc

I am trying to read the registers and flags of the saia sbc PCD2 M4_x ​​plc via Modbus TCP communication. I know the IP address and the communication port of the plc, however every time I read a flag or a register I always get different values ​​from those set. I'm sure it's not a register offset problem that usually occurs in modbus communication. The code I wrote is the one listed and also the results.

however the flags 0 through 10 do not have that state and even if I change it when I start the written code the result remains the same. Even if I change addresses.

0 投票
0 回答
980 浏览

python - 如何在支持以太网的 delta plc 和 python pymodbustcp 之间进行通信

请帮帮我我的第一个测试是使用 Delta DVP-12SE11R PLC,连接使用 Modbus TCP/IP 协议。我有一个使用 pymodbustcp 模块编写的 python 代码。我已经用 modbus slave 模拟器测试了该代码,它工作正常。在模拟器上读取和写入所需的寄存器。我的问题是,当我将 plc 硬件连接到 PC 并向 python 代码提供 plc 的 IP 地址和端口号时,它将开始读取和写入我在代码中指定的寄存器,或者我是否缺少通信所需的东西?

这就是我正在使用的:

我确实使用 python 链接 tcp 模拟器进行了检查,它与模拟器完美配合。

0 投票
1 回答
1164 浏览

python - 具有多个从设备上下文的 pymodbus Modbus 服务器实现 - 写入寄存器会覆盖所有从设备

我有一个简单的 pymodbus 服务器实现的问题。根据我在文档中阅读的内容,此实现应该为每个从设备具有唯一的从上下文,即写入设备 0x01,寄存器地址 1,应该是与设备 0x02,寄存器 1 不同的寄存器。

在我的情况下,写入寄存器 1 会写入所有从地址的寄存器 1。有人可以检查我的服务器代码,看看我是否遗漏了什么,或者澄清我是否理解 pymodbus 服务器应该如何在单个标志设置为 False 的情况下工作。

干杯。代码在这里:

0 投票
0 回答
842 浏览

python-3.x - 如何通过以太网在笔记本电脑上通过 python 代码读取和写入 PLC?

我正在做一个使用 pyModbusTCP 通过笔记本电脑上的 python 代码与 PLC 通信的项目。由于网上没有太多信息,我一直不知道如何进行该过程。我已经使用 pyModbusServer 和 pyModbusClient(都在笔记本电脑上)对其进行了模拟,它们运行良好,但现在我正在使用 PLC,我不知道如何去做。任何可以提供帮助或拥有任何链接/资源的人都会非常有帮助。TIA。

服务器代码是:

客户端代码是:

这是PLC和PC通信的模拟。我想知道如何与实际的 PLC 通信,比如什么样的代码、什么库或者我可以使用类似的代码。我找不到任何与之相关的资源。你能指导我吗?

0 投票
0 回答
115 浏览

modbus - 使用 pymodbus3 同时读取线圈和保持寄存器

我有一个可以使用 pymodbus3 库连续读取线圈状态的工作代码。代码如下所示。这改编自一个基本示例,用于查找线圈状态(地址 0x01)更改为“1”并按要求执行任务而不会失败。

现在,我还需要并行监视保持寄存器(例如地址 400001)并读取值。由于保存寄存器已经在 run_server() 函数中初始化,我想我不必在那里做任何事情。但是我不确定在 updatevalues(a) 函数中要做什么,以便也可以监视保持寄存器。

谢谢您的帮助。