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

c# - 一次请求读取多个 modbus 地址

我正在使用 C#、VS2010 读取 MODBUS 设备,我正在开发遥测应用程序,我的设备有数百个地址,我需要在地址 x 读取一些东西,在地址 x+130 读取另一个东西,目前我正在使用下面的代码读取135字节,虽然我只需要两个地址,但效率不高,有没有办法使用一个MODBUS请求读取两个单独的地址?我目前的代码是:

我将这些字节写入连接到 MODBUS 设备的 COM 端口。

0 投票
2 回答
291 浏览

java - 避免来自仪表设备的 modbus 消息

我们正在使用 Jamod RTU 捕获串联连接的各种电表的 raedings。我们设置了 modbus timeoutexception = 1200ms。现在发生了什么,当我们 ping 一米并且我们没有得到结果(或读数)时,我们移动到同一系列中连接的下一个。但有时,前一个仪表将读数发送回应用程序,该仪表的读数会保存到新仪表或下一个仪表。

为了解决这个问题,我们将 nport 管理员(用于管理 com 端口)中的网络超时从 5000 减少到 500 毫秒。但我不认为这是永久的解决方案。有没有办法避免迟来的消息或用相应的仪表标记每条消息?

0 投票
2 回答
5879 浏览

java - 如何使用 jamod 连接到设备并解释数据

我的客户希望使用自定义解决方案来控制安装在其站点中的 HVAC 系统。HVAC 设备提供 MODBUS TCP/IP 连接。我是这个领域的新手,对MODBUS一无所知。我搜索了互联网,发现 jamod 作为 MODBUS 的 java 库。现在我想用jamod写一个程序。但我的困惑是如何获得我想要连接的设备的地址。我的第二个问题是,即使我设法连接设备,我如何才能从 MODBUS 获取所需的数据(以温度等工程单位表示)。我的问题可能听起来很糟糕,但请原谅我,因为我是这个领域的新手。

0 投票
1 回答
9087 浏览

modbus - 使用 JAMOD 读取线圈

我编写了以下程序来了解如何使用 JAMOD 访问线圈。不幸的是,它抛出了错误-

在程序第 27 行是“trans.execute()”。我试图读取的线圈地址是 0x7D1 (2001) 或通道 0 数据类型是 2 个字。-

错误当然会重复 3 次,如 ModbusTCPTransport 类中设置的(我检查了类源),即在退出和程序退出之前尝试 3 次。

我哪里错了?

0 投票
1 回答
3781 浏览

java - Modbus 协议转义线程 (Android,Jamod)

我正在尝试使用 ModBus 协议连接到 PLC。我正在从线程调用 ModBus 连接方法,并且我正在主线程上运行通信时遇到异常......我想知道它在哪里逃脱......

例外:

代码:

0 投票
1 回答
5209 浏览

sockets - Modbus TCP/IP 设备通讯问题

我正在尝试与使用 Modbus TCP/IP 的设备进行通信。我正在使用 C# 4.0 .NET 套接字,并且在从设备返回响应时遇到了麻烦。由于设备/网络的性质,它必须是异步通信。

现在我可以连接到设备了。当Connect命令执行时,设备 LED 会亮起,表示存在活动连接。然后我执行Send命令,灯熄灭(意味着我失去了连接),当我收到时,我什么也得不到。我尝试了一堆不同的数据包,但在任何情况下都没有成功。我在想,是不是和SocketType我初始化 Socket 的时候有关?可能是我正在尝试使用的端口(当前使用端口 4)吗?

这是我尝试使用的 Modbus TCP/IP 文档: Modbus 文档

这是我的代码:

0 投票
2 回答
476 浏览

python - 如何通过 ajax 启动/停止扭曲的 TCP 连接并获取连接状态

在扭曲的应用程序中,我想通过 ajax POST 启动/停止 tcp 连接(到 modbus)。我有一个标题为连接或断开连接的按钮,具体取决于连接状态。

现在我的代码看起来像:

现在我在连接开始时得到“连接”,在停止连接时得到“连接”。我想等待响应,直到连接建立或取消并返回连接状态(连接或断开+可选的错误描述)。

谢谢你。

0 投票
1 回答
7145 浏览

putty - 使用 Putty 的 modbus 消息传递

我有一个 Modbus 计量设备。如何使用 putty 或超级终端发送 modbus 消息?我只想获取那些计量数据。

0 投票
2 回答
14212 浏览

android - Modbus tcp 安卓应用程序

我正在开发 android 应用程序来在 tcp/ip modbus 的帮助下控制 plc 有人有很好的教程吗?
Modbus 协议转义线程 (Android,Jamod)

0 投票
1 回答
4452 浏览

java - 从 Android 向 PLC 发送布尔值

我能够与 PLC 建立连接以从中读取数据。现在有一个问题,我必须编写一种方法来修改来自 PLC 的数据。为此,我必须向 PLC 发送两个值:一个 int 值和一个 boolean 值。我通过 net.wimpi.modbus 包中的类解决了 int 值。但是当谈到布尔值时,我不知道该怎么做。

如果有人和我现在有同样的问题,你能否给我一个参考,我可以找到一个解决方案或一个非常好的教程的链接来解决我的问题?有人在这个问题中发布了几个链接,但它让我看到了与与 PLC 的通信以及如何处理 PLC 的数据没有太大关系的教程。

编辑

我与 Modicon M340 PLC 建立了连接,我使用 net.wimpi.modbus 包的类进行连接。ModbusTCPTransaction我通过类和在我的代码中建立连接,并通过类和TCPMasterConnection读取值。ReadMultipleRegistersRequestReadMultipleRegistersResponse

我为连接制作的代码:

为了读取这些值,我一直调用下一个代码。我只通过从 PLC 上声明的偏移量读取的字来完成读取和写入 int、String 和 float 值:

编辑 2

我想我完成了我想要的。我使用 4 个类来读取线圈:

ReadCoilsRequest ReadCoilsResponse WriteMultipleCoilsRequest WriteMultileCoilsResponse

我所做的是将线圈读写到 PLC 中的两种方法:

另外,我创建了一个使用 Coils 类读取 BitVector 变量的方法:

在此之后,我用来将位设置为 1 或 0 的方法是在我的代码中使用来自 net.wimpi.modbus.util 包的 BitVector 类的本机函数:

注意:重要的是要记住,每次您要向 PLC 读取或写入值时,最好的方法是打开关闭与 PLC 的连接。