问题标签 [modbus-tcp]

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

python - 使用 pymodbus 读取寄存器

我正在尝试使用 pymodbus 从 PLC 读取 modbus 寄存器。我正在按照此处发布的示例进行操作。当我尝试时print.registers,出现以下错误:object has no attribute 'registers' 该示例未显示正在导入的模块,但似乎是已接受的答案。我认为错误可能是我导入了错误的模块或者我缺少一个模块。我只是想读一个寄存器。

这是我的代码:

0 投票
1 回答
1145 浏览

python - 使用 pymodbus 从 PLC 读取时出现问题

我在使用 pymodbus、python 2.7 和 Windows 从我的 WAGO 750-881 PLC 读取寄存器时遇到了一些问题。我可以使用 Modbus Poll 实用程序很好地阅读,所以我认为问题出在我的 python 代码中。使用以下代码我得到错误:runfile('C:/Users/Mike/modbustest2.py', wdir='C:/Users/Mike') Exception Response(131, 3, IllegalValue)

我意识到我的代码应该阅读print response.registers,但.registers扩展似乎对我不可用。print response.registers抛出此错误:AttributeError: 'ExceptionResponse' object has no attribute 'registers'我只包含该print response错误,因为我认为它可能在某些方面有所帮助。有谁知道问题可能是什么?

0 投票
1 回答
341 浏览

python - 使用 pymodbus 读取 PLC 时出现意外数字

在此处输入图像描述我正在使用 pymodbus 读取 Wago 750-881 PLC 上的寄存器。我还在 Modbus Poll 实用程序以及 HMI 上读取相同的寄存器。Modbus Poll 和 HMI 读取正确,但 pymodbus 程序不正确。

这是代码:

这是运行代码的响应:

正确的输出应该是 2043。它还在其他寄存器上读取相同的数字“18283”。我知道问题必须与代码相关,因为我可以从其他程序/设备读取寄存器。任何帮助表示赞赏。

0 投票
1 回答
429 浏览

c# - 已添加具有相同密钥的项目。由于多次调用嵌入式 DLL 导致的错误

我在我的 Windows 窗体应用程序中添加了一个 dll 作为嵌入式资源。我得到了如何在我的 Windows 窗体应用程序中使用嵌入式 dll 的代码。

此代码使用:

现在有一个问题,我的嵌入资源被多次加载,我得到错误 已添加具有相同密钥的项目。

Windows 窗体应用程序中是否有任何东西,例如我们在 ASP.NET MVC 中的 DependencyRegister.cs 文件?

请指导我,这样我上面写的代码就不会一次又一次地调用。

0 投票
1 回答
6001 浏览

python - Python中的ModbusTCP服务器/从机实现(pymodbus)

我尝试编写一个与数据库连接的 ModbusTCP 服务器软件。我使用 pyModbus 库来完成该任务。该库有一个更新服务器示例。通过使用该代码,我将代码编写为:

基本上,我试图实现的是服务器上下文与数据库同步。我尝试将值从数据库读取到上下文,然后最后将上下文值更新到数据库。我成功地将数据从数据库获取到上下文。因为当我使用位于另一台局域网计算机上的 modbus 客户端请求值时,我成功地在那里获得了请求的数据。但是,我无法通过 TCP 服务器写入数据库。在另一台局域网计算机上使用相同的 modbus 客户端,我发送请求以写入服务器上下文中的一些寄存器,然后将其写入数据库。在这一点上我失败了。我无法将服务器上下文的最新更新情况写入数据库。我想,我可能会从 pymodbus 文档中的“数据库数据存储示例”中受益,但我不知道该怎么做。所以我需要你对这个任务的想法。

0 投票
0 回答
712 浏览

python - 需要通过 Modbus TCP 和读/写寄存器发送心跳

所以我有一些通过 modbus tcp 进行通信的电池管理软件。我已经下载了 Modbus Master(一些免费的 modbus 测试软件),并且我已经能够成功地读取和写入寄存器,但是要让软件工作,它必须在某个寄存器上接收心跳信号。从 0 到 4 循环,每秒改变一次或类似的东西。

我可以手动完成,但我无法读取和写入其他寄存器。

如何使心跳自动化,但将写入寄存器留给我?没找到可以的软件?编写一个程序来做到这一点有多难?

我知道一些 python 并且曾经知道 C#。但两者都很生锈。

任何帮助是极大的赞赏。

0 投票
0 回答
133 浏览

python - 了解 modbus tcp 输出(从热电偶读取温度)

读取输入寄存器后,我得到以下输出:

我正在尝试将数据部分(0x4 0xf3)转换为可识别的温度。有什么帮助吗?我正在使用 T 型热电偶。我有每个点的温度应该是近似值。

其他数据点:

0 投票
1 回答
380 浏览

c++ - QModbusTcpClient 的数据大小限制

背后的故事:QModbusTcpClient我正在尝试从连接到Modbus/TCP网络的设备中读取内容。为此,我在 Qt C++(Qt 版本 5.7.0)中编写了一个 Windows 程序(在 7 和 10 上测试),它本质上调用QModbusClient::sendReadRequestwithQModbusDataUnit::QModbusDataUnit(RegisterType type, int address, quint16 size)作为参数,其中typeHoldingRegisters地址等于1000(可能是另一个地址,它不是对于这个特定问题很重要),大小是要从设备读取的所需数据的长度。

问题:size当小于或等于63寄存器时,一切都运行良好。每次超出此值的尝试都会导致错误,这取决于我正在测试程序的设备,但通常会显示无效请求。

测试:

  1. 我已经用几个真实的设备和一个Modbus/TCP 模拟器测试了这个,得到了相同的结果,即size<= 63-> 好的;size> 63-> 错误
  2. Modpoll从另一边,我可以从相同的设备和模拟器中读取size大于63寄存器的数据块

一些研究: 这里说,确实有一个限制,但它是 256 字节,相当于 128 个 16 位寄存器,换句话说 - 远高于我的读取尝试限制。

我的怀疑:似乎QModbusTcpClient不允许读取多个63寄存器。

问题:有没有人遇到过这样的问题QModbusTcpClient,除了两次读取数据之外,有没有办法克服这个限制?

0 投票
1 回答
473 浏览

networking - 端口编号如何用于接收 MODBUS TCP 数据包?

我正在我的微控制器(MSP432)上运行一个应用程序,它将数据写入以太网电缆以将其发送到 PC。

我正在使用 Packet sender 查看从 MC 在 PC 上的端口(502)上接收到的数据。 在 PC 上接收到的数据

如上图所示,每发送一个数据包,MC 的端口号就会递增。当它达到最大数量时会发生什么?它会在其他端口号重新启动并继续该过程还是会停止?

Edit1:使用的 Modbus 协议库来自http://myarduinoprojects.com/modbus.html

Edit2:每次我有新数据要通过 MODBUS 发送时,都会调用此函数。 Mb.Req(MB_FC_WRITE_MULTIPLE_REGISTERS, 0,11,0);

0 投票
4 回答
15120 浏览

simulator - Modbus TCP 模拟器 Windows/Linux

我正在寻找一个好的 Modbus over TCP 模拟器,它带有 GUI 来尝试两台单独的电脑(一台主机,另一台作为从机)。我只找到了SimplyModbus,但这个只作为主控。有什么推荐吗?