问题标签 [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.
server - 公共 Modbus 服务器
我一直在通过 TCP 编写 Modbus 客户端,我想我终于完成了,但我想在现实生活场景中对其进行测试,这就是我来这里的原因:
¿ 是否有在线可用的 Modbus 服务器?我的意思是,任何类型的 modbus 服务器,即使它只提供垃圾字节也是可以的。
有任何想法吗?
java - 尝试通过 Modbus/TCP 从设备读取保持寄存器时出现异常
我正在尝试使用 Modbus/TCP 从设备的保持寄存器(由 Weidmüller 制造的 PowerMonitor)中读取值。我使用 java 和一个名为“jamod”的 modbus 库。我的代码:
在eclipse中运行此代码(使用实际IP)时,我在控制台上得到了这个:
当我在本地主机上使用 EasyModbusTCP 服务器模拟器运行这个程序时(如上),没有问题,我得到了存储在保持寄存器中的值。那我做错了什么?我真的不知道该怎么办。我希望我问的方式没问题(我在这里很新)。非常感谢!
modbus-tcp - 您可以在 Modbus TCP 消息中保留 CRC 吗?
另一个modbus问题,我一直在学习Modbus RTU,感觉掌握得很好,现在正在编写代码将RTU转换为TCP。
今天给我提出的一个问题是,当你从 RTU 转换到 TCP 时,你能把 CRC 留在最后吗?
我知道 TCP 结构不包含 CRC,但我不确定为什么?
对此的任何见解都会非常有帮助:)
java - 将非布尔整数值写入内存字 100
我正在使用 jamod1.2 ,我尝试通过此代码发送布尔值并且它运行良好。
现在我正在尝试向我拥有的一些寄存器发送一个整数值,例如将 5 发送到 %mw100 !我如何通过 jamod 库做到这一点,或者是否有更简单的方法可以做到这一点?
c# - 将 32 个布尔值的集合转换为 32 位整数
所以我是 C# 的新手,我已经搜索过,但我只是不知道我在搜索什么。
我有一个名为 inputs 的布尔变量,它从 ModBus 接口库中保存了 32 个真/假位。
这是一张解释我的 32 个真/假值的图像。基本上存储在输入中的 32 个真/假值。我需要将它们整理成一个 32 位整数。
我想知道的是如何将这 32 个值整理成一个 32 位字符串,即 (0000 0000 0000 1000 1000 1000 1000 1000),这显然是一个 32 位整数并给我一个十进制数 88888。
我现在只是卡住了,因为我不确定我应该使用什么命令。
python - 多个服务器 pymodbus 连接问题 Modbus TCP
当我尝试使用 pymodbus 和树莓派读取保持寄存器时遇到问题。我似乎无法同时连接两台服务器/从机(一个或另一个都可以工作,但在一起时,我无法从两个设备读取寄存器)。这些连接问题似乎是导致错误消息的原因。也许我在这里缺少一些简单的东西?
这是我收到的错误消息:
我知道如果我将它们分解成不同的脚本并同时运行它们,也会发生同样的错误。
独立地,就像一次运行一个一样,它们可以正确执行而没有错误。
非常感谢大家的帮助!
javascript - 在 JavaScript 中将两个 16 位数字组合并转换为一个 32 位数字(浮点数)
我需要构建一个读取工业 modbus 数据的基于 NodeJS 服务器的原型。
我正在读取两个连续的 16 位十进制寄存器,它们为我提供了一个包含两个条目的数组:
// eg transaction = [ 17007, -2621 ]
或// eg transaction = [ 17007, 0000 ]
该值应转换为电频率,大约 = ~60.00 (hz)(如果我给出的数据是正确的,至少应该如此)
我知道我需要组合数组中的两个寄存器值并将数据转换为 32 位浮点数 .. 但如何:
a)如何组合它们而不将它们转换为它们不是的东西
b)如何将它们转换为 32 位浮点数
我想我需要使用某种类型的parseInt()
然后toString(10)
- 一个建议是使用将每个转换为十六进制parseInt(num, 10).toString(16)
,然后将连接的十六进制转换为字符串或可能使用浮点数,parseFloat()
但再次如何首先连接两个单独的部分。
令人惊讶的是,我还没有找到解决方案。
modbus - libmodbus 单元 ID 更改
我正在使用libmodbus库与带有 Modbus 接口 (SMA) 的太阳能逆变器进行通信。Modbus 规范文档规定应使用某个 Unit ID 来读取设备上的寄存器。该设备为 modbus 提供 TCP 接口。
我找不到更改 libmodbus 库的单元 ID 的代码。是modbus_set_slave()函数吗?还是我在这里缺少其他功能?
java - 连续读取 6 次后关闭 Modbus 连接
我正在使用jamod库在 Java 中开发 Modbus/TCP 主应用程序。在从我的从设备连续读取期间,连接被突然关闭。
我的代码:
在第 6 次阅读期间抛出的错误
出现此错误后,我无法恢复连接。我必须终止我的应用程序线程并再次启动应用程序。我找到了一些解决方法:Thread.sleep(500)
在第 5 次阅读后添加会消除此异常。Thread.sleep(200)
每次阅读后也有效。不幸的是,这些变通方法不足以满足我从从设备连续读取的需求。
有谁知道,会发生什么?