问题标签 [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 回答
694 浏览

eclipse - 如何在 MakeFile (Eclipse) 中添加库(头文件 + .c)编译?

我正在开发一个项目,用 C++ 编码,以在 Raspberry pi 和 Arduino 之间开发基于 TCP/IP 的通信 Modbus。

我有一个在 Raspberry 中工作的“hello world”的基本示例。我想在我的 Eclipse 项目中添加 libmodbus 库(.h 和 .c 文件),并测试提供的服务器单元测试。我已经在“路径和符号”(GNU C 和 GNU C++)和“包含”中添加了目录。

在 MakeFile 中,我添加了 libmodbus 文件部分的目录(#Include 路径)。当我构建项目时,只编译 .h 文件,没有编译 .c 文件。“modbus.h”被识别,但它们是像“未定义引用....(modbus fonctions)之类的错误。

我已经测试了许多解决方案,但它还不起作用。

提前致谢。

0 投票
1 回答
3555 浏览

modbus - Modbus TCP 中的多主站

我对 Modbus TCP/IP 中的多主机有一个奇怪的问题。我知道 Modbus Serial 不支持多主机。但是当我看到一些文档时,他们说 Modbus TCP 支持多主机。

我组成了三个 tcp 客户端作为 Modbus TCP 主站和一个服务器作为 Modbus TCP 从站。每个 Modbus TCP 主站每隔 2 秒定期请求 Modbus TCP 从站获取数据。我使用 Modbus TCP 堆栈作为主设备,由 Triangle MicroWorks 制造。

我以为每个master都可以从slave接收数据,但实际上,一个master只能与slave通信良好,其他master无法接收数据。他们只收到返回状态“3”,即“MBCHNL_RESP_STATUS_CANCELED”。

在这个组合中,这种行为是否正确?我想知道堆栈是否不支持“多主/多个相同的请求”,或者还有其他方式来表现多主。

0 投票
1 回答
457 浏览

c - 如何malloc modbus_t

我编写通用应用程序来处理 JSON 配置文件中定义的尽可能多的 modbus 设备。在 my_modbus_init() 中使用的 mbus_servers 结构内容设备和端口的 ip。

my_modbus_init() 中一个 modbus_t 的初始化如下所示:

现在我尝试初始化动态分配的 modbus_t 数量:

有什么方法可以使用 malloc 创建尽可能多的 modbus_t 吗?

0 投票
3 回答
1897 浏览

python-3.x - MODBUS-tk 从主机中的从机读取浮点值

我创建了 modbus slave 来将数据写入寄存器。我能够从从端写入浮点值和整数值。

在 modbus master 中,我只能访问整数值,但不能读取浮点值。

我经历了这个https://github.com/ljean/modbus-tk/issues/72但这并没有解决我的问题。

对于读取的整数值,我可以使用下面的代码并读取值。

但是对于浮点值,我同时使用了上面和下面的代码。

我在读取浮点数时出错,

unpack 需要一个长度为 4 的字节对象

0 投票
0 回答
1626 浏览

c++ - 用QT修改“Modbus TCP”为“Modbus RTU” - QModbusTcpClient

我必须发送Modbus特定数据的请求,我的问题是我必须使用移动通信,wifi,连接到自定义电子卡,这是正确的Modbus RTU

我连接到电子板的工作代码:

日志字符串 TCP 发送:

D/libmodbusMobile.so(8042):(空):0((空)):qt.modbus:(TCP客户端)发送的TCP PDU:0x0300000001,tId:2

这是正确的:0x0300000001

但不幸的是,我的电子卡,我无法修改的集成固件,是正确的Modbus RTU,所以我应该改为0x0300000001C10x010300000001C1C2和 C2 是校验和。

我相信QModbusDataUnit 会生成要发送的缓冲区。那么如何改变呢?是否存在构建缓冲区的手动解决方案?

如何更改它并像示例一样创建自定义发送缓冲区?

谢谢

0 投票
0 回答
86 浏览

c - 使用 libmodbus 发送“LED Flash”命令

是否可以 使用 libmodbus 向 IFM AY1020 设备发送LED Flash 命令?

我可以通过浏览器将其存档: 截图

但我需要从 C 代码中完成。

0 投票
1 回答
726 浏览

modbus - 是否有将 Web 应用程序连接到 Modbus PLC 的解决方案

我正在开发一个具有 HMI 功能的 Web 应用程序,该应用程序需要与多个 Modbus RTU 和 Modbus TCP PLC 接口:

  • 根据 Modbus 设备的状态频繁更新 Web UI
  • 根据用户的输入向 Modbus 设备发送命令

考虑到要求,集成 Web 应用程序和一堆 Modbus 设备的最佳方式是什么?

0 投票
2 回答
58 浏览

opc - 我可以使用 Modbus 主站访问 OPC 服务器吗?

我正在尝试使用 Linux 上的 Modbus Master 访问 Windows 机器上的 OPC 服务器,并且想知道这是否可能

0 投票
1 回答
112 浏览

apache-camel - 为 JBoss Fuse 编写适配器

我想使用 JBoss Fuse 将 Web 服务调用转换为 Modbus/TCP 消息(反之亦然)。该协议似乎没有第三方适配器,所以我想我必须自己编写它。这是怎么做到的?

目前,我最好的猜测是 JBoss Fuse 将 Web 服务调用的 SOAP 文件存储为一个文件并将其传递给 Apache Camel。所以我所要做的就是为这些文件格式编写一个转换器。这个对吗?

0 投票
2 回答
1518 浏览

sockets - Modbus TCP:有没有更好的方法来随机读取一个或多个寄存器?

我们正在编写一个 Windows 服务,通过 c# 中的套接字编程,使用Modbus TCP协议以 1 秒的轮询间隔从 PLC 读取数据。Windows 服务将接收 PLC 的随机寄存器以读取寄存器值。期望寄存器随机,例如 40150,40250,40270,40320。

从上述案例中如何创建Modbus TCP 请求标头?我们可以找到两种可能的方法:

  1. 使用功能码 3,我们可以读取特定范围内的寄存器的值,例如从 40150 到 40320,这样我们就可以读取这 40150,40250,40270,40320 的寄存器值。
  2. 另一种方法是逐个请求这些 40150,40250,40270,40320 寄存器(这会导致性能问题)。

我在这里错过任何一点吗?有没有更好的方法来随机读取一个或多个寄存器?