问题标签 [modbus]

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

c# - 多线程串口

我正在尝试在串行端口中进行多线程。假设我有 X 串口。每个端口都有 Y 个设备(modbus)。我正在从每个设备中取出数据。要从设备中取出数据,我需要发送一条消息,然后等待响应。我想加快应用程序的速度,这就是为什么我想在其中使用多线程。

是否可以在一个串行端口中发送和等待多条消息?

问候
丹尼尔

0 投票
1 回答
1093 浏览

c++ - 向量到 const uint16_t * 类型

我想为我的自定义项目使用 libmodbus。一切都适用于预定义的静态值,但我不能使用 modbus_write_registers 函数和const uint16_t *'src'动态预定义的第四个参数。

在实践中,我必须将获得的 DB 值转换为这种类型,不知道如何。

有什么提示吗?

0 投票
3 回答
7316 浏览

php - 如何每秒显示数据,每分钟写入一次?

我是 PHP 新手,我正在编写 PHP 代码以使用 PHPModbus 库从 modbus 设备获取数据。我需要能够每秒显示数据,然后每分钟将数据写入 CSV 文件。

  • 我使用 header('Refresh:1') 每秒刷新页面。
  • 我将数据作为原始字节获取,我根据参数将其转换为浮点数或整数。
  • 然后我将数据存储在一个数组'energymeter_param'中并内爆数组的内容以获得一个我想每60秒写入CSV文件log.csv的字符串。
  • 如果您阅读我的代码,您会看到每次秒的值变为 0 时我都在调用 file_put_contents() 函数。[ if(date('s') == 0)]。
  • 但有时在刷新页面时,时间会直接从 HH:MM:59 跳到 HH:MM:01,所以我错过了那一分钟日志文件中的数据。

我该如何克服呢?

0 投票
1 回答
947 浏览

c# - 使用浏览器发送 modbus 命令

我有一些使用 ModbusRTU 的硬件。使用 ModbusRTU 的 TCP/IP 网关我现在可以使用我的 C# 应用程序通过 TCP/IP 控制硬件。这行得通。

现在我想用我的安卓手机控制它。是的,我可以制作一个 Android 应用程序,这对我来说应该没问题,但我想让自己更特别地用网络浏览器修复它。这样我就更灵活了,因为其他操作系统也应该没问题。

如果我想通过使用网络浏览器来控制硬件,我很感兴趣应该从哪里开始寻找。什么编程语言,服务器要求是什么。请注意,我对 Web 浏览器编程的经验很少,但我很想学习它。用 PHP / Ajax 做了一些非常简单的事情。

仅供参考,ModbusTCP 包装非常简单,我只控制家里的一些灯的开/关/调光和启用一些设备。

0 投票
0 回答
624 浏览

java - TCP 从站响应

使用 jamod 页面中的示例,我正在尝试创建一个 TCP 从站,它将接受 WriteMultipleRegisters (fc16) 请求并发送适当的响应。代码:

使用此代码,我可以获得请求(写入这 200 个寄存器),但我想知道为什么它没有发送任何响应?

0 投票
1 回答
9190 浏览

python - Looking for Python code to act as a MODBUS slave

Does anyone know of an easy to use Python program that acts as a MODBUS slave? I need to do some integration testing with a MODBUS master. Code can be for serial or TCP.

TY, Fred

0 投票
1 回答
2924 浏览

c# - Modbus 自定义消息和子功能(NModbus、TCP、子功能)

我在 C# 项目中使用 NModbus,从/向多个 I/O 设备读取和写入 Modbus 数据。我在程序中使用 Modbus TCP/IP 协议(​​ModbusIpMaster 等)。

我已经成功地与设备通信(通过 Modbus 网关)并且可以使用默认方法(例如常见的 Modbus 函数,如 ReadHoldingRegisters、WriteCoils )来访问来自设备的数据,并可以写回它们。目前,我能做的只是默认的 NModbus 方法,这些方法公开常用的 Modbus 代码(1、2、3、4 等)。

我有两个困难:

1)可以在 Modbus 代码 70 (0x46) 下访问 I/O 设备的设置和额外信息,并且我需要使用一些子功能来读取和/或写入设置

例如,Func 07 (0x46)、Sub func 6 (0x06) 可用于设置模块的通信设置。在此示例中,有 7 个字节的信息要发送,其中包含设置(例如波特率等...)

NModbus 没有针对此“自定义”功能代码 (70) 的特定方法。因此,据我了解,需要使用 NModbus 的 CustomMessage 功能。我曾尝试执行CustomMessage,当使用常用的Modbus 功能代码(例如1 或2)时,我可以达到与使用NModbus 的默认方法相同的结果(即CustomMessage 到目前为止正在工作)。

当我尝试除一般功能代码以外的功能代码(例如 1、2、3...)时,我确实会遇到各种异常。此外,我不知道我应该如何发送带有消息的子功能!

当我在功能代码之后添加子功能(例如70后跟06),并且数据通过我发送,异常。我真的需要这个领域的专家的帮助,拜托。

这是一个更明显的例外:

" 引发了 'Modbus.SlaveException' 类型的异常。功能代码:198 异常代码:3 - 查询数据字段中包含的值不是服务器(或从机)允许的值。这表明结构中的错误复杂请求的其余部分,例如隐含长度不正确。这并不意味着提交存储在寄存器中的数据项具有超出应用程序预期的值,因为 MODBUS 协议不知道其重要性任何特定寄存器的任何特定值。”

2)第二个问题是通过 Modbus发送 ASCII RS-232消息,以控制连接到具有转换 Modbus 消息能力的模块的 COM1 的 RS-232 设备。换句话说,我打算与 Modbus 网关通信,将 ASCII 数据发送到其 COM1,然后将数据转换为 RS-232,然后与 RS-232 设备通信。翻译是在网关内部进行的,所以我只需要知道如何在地球上发送这些消息,这些消息的长度各不相同。我不知道这怎么可能,以及从哪里开始。

0 投票
1 回答
1078 浏览

embedded - 我对 Modbus 通信有点陌生,很难弄清楚在“免费 modbus”的主端使用哪些功能

我对 Modbus 通信有点陌生,我已经开始阅读“免费 Modbus”库。现在,我了解如何使用它来实现 Modbus 通信的从机端,但我似乎无法找到如何在主机端使用库。例如,我在主站调用什么函数来读取从站 19 的离散输入 3(例如)?

预先感谢您的帮助。

顺便说一句,我正在用 C 语言编写并为 MSP430 微控制器编程。

0 投票
1 回答
2178 浏览

java - modbus4j modbusRTU主从通信功能

突然我下载了 seroUtils.jar 和 modbus4J.jar 文件并将其包含到 netbeans 中。所以请建议我一些方法通过 rs232 电缆向从机发送数据并从从机接收数据。在我的程序中,我设置了串行参数。但我不知道如何从从设备发送数据和接收命令。

请建议我一些在 modbus4j 中进行串行编程的方法或教程。

提前致谢

0 投票
3 回答
2276 浏览

mfc - 在 Visual C++ 中通过 MSComm 进行 Modbus 输入

我对 Modbus 协议完全陌生。我的设置由三个具有不同地址的设备组成。它们都通过 RS232 连接到 COM1。我使用 Modbus Poll 来检查输入数据,它工作正常。我现在要做的是读取 vc++ (MFC) 应用程序中的保持寄存器。对于串行通信,我使用 MSComm 类。我写了一些代码,但我根本没有输入。

我目前的代码:

我现在想推出 m_Input,但它并没有改变一点。在设置 SetCommID 时,我也会收到警告(属性是只读的),我认为这并不重要。

谁能指导我,因为我现在真的一无所知。

问候

编辑:根据一个通信示例,我试图像处理文件一样处理设备。

我收到读取长度失败错误。strASCII 不正常分离,现在只是为了更好地概述。我已经检查了 Modbus Poll 中的通信。我的输出是正确的,但它似乎没有得到数据。

编辑:我明白了。非常感谢您的帮助。我输入了错误的校验和。