问题标签 [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.
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)之类的错误。
我已经测试了许多解决方案,但它还不起作用。
提前致谢。
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”。
在这个组合中,这种行为是否正确?我想知道堆栈是否不支持“多主/多个相同的请求”,或者还有其他方式来表现多主。
c - 如何malloc modbus_t
我编写通用应用程序来处理 JSON 配置文件中定义的尽可能多的 modbus 设备。在 my_modbus_init() 中使用的 mbus_servers 结构内容设备和端口的 ip。
my_modbus_init() 中一个 modbus_t 的初始化如下所示:
现在我尝试初始化动态分配的 modbus_t 数量:
有什么方法可以使用 malloc 创建尽可能多的 modbus_t 吗?
python-3.x - MODBUS-tk 从主机中的从机读取浮点值
我创建了 modbus slave 来将数据写入寄存器。我能够从从端写入浮点值和整数值。
在 modbus master 中,我只能访问整数值,但不能读取浮点值。
我经历了这个https://github.com/ljean/modbus-tk/issues/72但这并没有解决我的问题。
对于读取的整数值,我可以使用下面的代码并读取值。
但是对于浮点值,我同时使用了上面和下面的代码。
我在读取浮点数时出错,
unpack 需要一个长度为 4 的字节对象
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
,所以我应该改为0x0300000001
C10x010300000001C1C2
和 C2 是校验和。
我相信QModbusDataUnit 会生成要发送的缓冲区。那么如何改变呢?是否存在构建缓冲区的手动解决方案?
如何更改它并像示例一样创建自定义发送缓冲区?
谢谢
modbus - 是否有将 Web 应用程序连接到 Modbus PLC 的解决方案
我正在开发一个具有 HMI 功能的 Web 应用程序,该应用程序需要与多个 Modbus RTU 和 Modbus TCP PLC 接口:
- 根据 Modbus 设备的状态频繁更新 Web UI
- 根据用户的输入向 Modbus 设备发送命令
考虑到要求,集成 Web 应用程序和一堆 Modbus 设备的最佳方式是什么?
opc - 我可以使用 Modbus 主站访问 OPC 服务器吗?
我正在尝试使用 Linux 上的 Modbus Master 访问 Windows 机器上的 OPC 服务器,并且想知道这是否可能
apache-camel - 为 JBoss Fuse 编写适配器
我想使用 JBoss Fuse 将 Web 服务调用转换为 Modbus/TCP 消息(反之亦然)。该协议似乎没有第三方适配器,所以我想我必须自己编写它。这是怎么做到的?
目前,我最好的猜测是 JBoss Fuse 将 Web 服务调用的 SOAP 文件存储为一个文件并将其传递给 Apache Camel。所以我所要做的就是为这些文件格式编写一个转换器。这个对吗?
sockets - Modbus TCP:有没有更好的方法来随机读取一个或多个寄存器?
我们正在编写一个 Windows 服务,通过 c# 中的套接字编程,使用Modbus TCP协议以 1 秒的轮询间隔从 PLC 读取数据。Windows 服务将接收 PLC 的随机寄存器以读取寄存器值。期望寄存器随机,例如 40150,40250,40270,40320。
从上述案例中如何创建Modbus TCP 请求标头?我们可以找到两种可能的方法:
- 使用功能码 3,我们可以读取特定范围内的寄存器的值,例如从 40150 到 40320,这样我们就可以读取这 40150,40250,40270,40320 的寄存器值。
- 另一种方法是逐个请求这些 40150,40250,40270,40320 寄存器(这会导致性能问题)。
我在这里错过任何一点吗?有没有更好的方法来随机读取一个或多个寄存器?