问题标签 [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.
python - 使用 pymodbus 读取寄存器
我正在尝试使用 pymodbus 从 PLC 读取 modbus 寄存器。我正在按照此处发布的示例进行操作。当我尝试时print.registers
,出现以下错误:object has no attribute 'registers'
该示例未显示正在导入的模块,但似乎是已接受的答案。我认为错误可能是我导入了错误的模块或者我缺少一个模块。我只是想读一个寄存器。
这是我的代码:
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
错误,因为我认为它可能在某些方面有所帮助。有谁知道问题可能是什么?
c# - 已添加具有相同密钥的项目。由于多次调用嵌入式 DLL 导致的错误
我在我的 Windows 窗体应用程序中添加了一个 dll 作为嵌入式资源。我得到了如何在我的 Windows 窗体应用程序中使用嵌入式 dll 的代码。
此代码使用:
现在有一个问题,我的嵌入资源被多次加载,我得到错误 已添加具有相同密钥的项目。
Windows 窗体应用程序中是否有任何东西,例如我们在 ASP.NET MVC 中的 DependencyRegister.cs 文件?
请指导我,这样我上面写的代码就不会一次又一次地调用。
python - Python中的ModbusTCP服务器/从机实现(pymodbus)
我尝试编写一个与数据库连接的 ModbusTCP 服务器软件。我使用 pyModbus 库来完成该任务。该库有一个更新服务器示例。通过使用该代码,我将代码编写为:
基本上,我试图实现的是服务器上下文与数据库同步。我尝试将值从数据库读取到上下文,然后最后将上下文值更新到数据库。我成功地将数据从数据库获取到上下文。因为当我使用位于另一台局域网计算机上的 modbus 客户端请求值时,我成功地在那里获得了请求的数据。但是,我无法通过 TCP 服务器写入数据库。在另一台局域网计算机上使用相同的 modbus 客户端,我发送请求以写入服务器上下文中的一些寄存器,然后将其写入数据库。在这一点上我失败了。我无法将服务器上下文的最新更新情况写入数据库。我想,我可能会从 pymodbus 文档中的“数据库数据存储示例”中受益,但我不知道该怎么做。所以我需要你对这个任务的想法。
python - 需要通过 Modbus TCP 和读/写寄存器发送心跳
所以我有一些通过 modbus tcp 进行通信的电池管理软件。我已经下载了 Modbus Master(一些免费的 modbus 测试软件),并且我已经能够成功地读取和写入寄存器,但是要让软件工作,它必须在某个寄存器上接收心跳信号。从 0 到 4 循环,每秒改变一次或类似的东西。
我可以手动完成,但我无法读取和写入其他寄存器。
如何使心跳自动化,但将写入寄存器留给我?没找到可以的软件?编写一个程序来做到这一点有多难?
我知道一些 python 并且曾经知道 C#。但两者都很生锈。
任何帮助是极大的赞赏。
python - 了解 modbus tcp 输出(从热电偶读取温度)
读取输入寄存器后,我得到以下输出:
我正在尝试将数据部分(0x4 0xf3)转换为可识别的温度。有什么帮助吗?我正在使用 T 型热电偶。我有每个点的温度应该是近似值。
其他数据点:
c++ - QModbusTcpClient 的数据大小限制
背后的故事:QModbusTcpClient
我正在尝试从连接到Modbus/TCP
网络的设备中读取内容。为此,我在 Qt C++(Qt 版本 5.7.0)中编写了一个 Windows 程序(在 7 和 10 上测试),它本质上调用QModbusClient::sendReadRequest
withQModbusDataUnit::QModbusDataUnit(RegisterType type, int address, quint16 size)
作为参数,其中type为HoldingRegisters
,地址等于1000
(可能是另一个地址,它不是对于这个特定问题很重要),大小是要从设备读取的所需数据的长度。
问题:size
当小于或等于63
寄存器时,一切都运行良好。每次超出此值的尝试都会导致错误,这取决于我正在测试程序的设备,但通常会显示无效请求。
测试:
- 我已经用几个真实的设备和一个
Modbus/TCP
模拟器测试了这个,得到了相同的结果,即size
<=63
-> 好的;size
>63
-> 错误 Modpoll
从另一边,我可以从相同的设备和模拟器中读取size
大于63
寄存器的数据块
一些研究: 这里说,确实有一个限制,但它是 256 字节,相当于 128 个 16 位寄存器,换句话说 - 远高于我的读取尝试限制。
我的怀疑:似乎QModbusTcpClient
不允许读取多个63
寄存器。
问题:有没有人遇到过这样的问题QModbusTcpClient
,除了两次读取数据之外,有没有办法克服这个限制?
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);
simulator - Modbus TCP 模拟器 Windows/Linux
我正在寻找一个好的 Modbus over TCP 模拟器,它带有 GUI 来尝试两台单独的电脑(一台主机,另一台作为从机)。我只找到了SimplyModbus,但这个只作为主控。有什么推荐吗?