问题标签 [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 投票
2 回答
6487 浏览

java - 如何通过 CommPortIdentifier 查找 COM 端口

我是整个 modbus 和串行通信概念的新手,所以即使这是一个真正的菜鸟问题,请多多包涵!

好的,所以我正在尝试使用 modbus 协议和 RS 232 端口读取存储在寄存器上的值。我已经写了这段代码,但它没有找到串口"COM 4"。我究竟做错了什么?

0 投票
1 回答
704 浏览

java - 使用串行通信在微控制器上写入数据时遇到问题

我正在尝试使用串行通信向微控制器发送命令,我可以编译并运行以下代码而没有任何错误,但值没有被写入寄存器。我究竟做错了什么?

代码

我怀疑问题出在这一行

这是向微控制器发送命令的正确方法吗?

命令的含义

0 投票
1 回答
7220 浏览

c# - SerialPort Write() 发送的字节多于发送缓冲区

我有一个非常奇怪的问题,我正在传输一个 105 字节 [] 缓冲区,并在另一端不断接收116 字节。

原始数据的最后 2 个字节是CRC16

我用于传输的代码是,它永远循环。

我在另一边不断得到的是以下 116 个字节(消息以原始CRC字节结尾是多么奇怪??)

任何帮助将不胜感激,以解决此问题,

谢谢

0 投票
1 回答
2096 浏览

c# - 与多个从站通信(基于 Modbus 协议)

我正在开发一个应用程序,让我们说 50-60 个 Modbus 支持设备(从站)连接到一个 Com 端口,这些设备在请求响应机制中与我的应用程序通信。

我想要每 15 分钟后。请求应该发送到每个仪表,并从仪表一个接一个地接收响应。与多个从站通信(基于 Modbus 协议)

为此,我使用 System.Timers.timer 来调用该方法,让我们在每 15 分钟后说 ReadAllSlave()。在 ReadAllSlave() 我使用 For 循环来发送请求并接收响应并使用 thread.sleep 来维持延迟..!但似乎它不工作并且循环以该死的有线方式执行。

任何人都可以建议我实现相同的最佳方法。

提前致谢。

0 投票
2 回答
226 浏览

asynchronous - plc modbus ascii 多条指令

我正在做一个使用 Modbus ASCII 协议 (RS485) 的应用程序。

客户端将与 PLC 服务通信,该服务将通过串行端口与 PLC 通信。

我不确定每次发送一个命令是否有任何限制,或者在发送下一个命令之前是否需要等待来自 PLC 的响应。

这将影响 PLC 服务的体系结构,因为如果一次只能处理一条指令,我的类的设计将支持一个异步方法调用,并将公开 IsBusy 属性。否则我将不得不支持并发方法调用并为每个调用传入 stateId(我将使用 EAP:基于事件的异步模式)

提前致谢。

0 投票
2 回答
1808 浏览

python - Pymodbus(串行)通过 tcp 串行连接

我将在我的 Linux 服务器和蜂窝调制解调器之间创建连接,其中调制解调器将充当 TCP 串行服务器。

调制解调器本身通过 RS232 连接连接到 modbus 设备(工业协议)。

我想使用 pymodbus 来促进与终端 modbus 设备的对话。但是,我不能在 PyModbus 中使用 TCP modbus 选项,因为终端设备使用串行 modbus (Modbus RTU)。而且我不能在 Pymodbus 中使用串行 modbus 选项,因为它希望在 linux 服务器上打开一个实际的本地串行端口(tty 设备)。

如何桥接串行连接,以便 pymodbus 库将连接视为本地串行设备?

0 投票
1 回答
1274 浏览

python - 从串行 TCP 连接创建假 TTY 设备

我有一个我想使用的库(PyModbus),它需要一个 tty 设备,因为它将使用串行连接与设备通信。但是,我要与之交谈的设备将位于支持基于 tcp 的串行的调制解调器后面(该设备插入调制解调器上的 com 端口)。

如果没有调制解调器,这将是微不足道的。我会将 USB 串行电缆连接到设备,另一端连接到计算机。使用调制解调器,服务器必须连接到调制解调器上的 tcp 端口并通过该端口泵送串行数据。调制解调器将接收到的数据传递给连接到 com 端口的设备。

在 linux 中,从“通过 tcp 连接的串行”创建假 tty 以供暂时使用然后被销毁的最佳方法是什么。这会定期发生,单个 linux 服务器可能在任何给定时间打开 10~500 个这些模拟设备。

0 投票
1 回答
5052 浏览

python - 无法通过 pyserial 发送十六进制(Modbus 数据包)

我在将以下十六进制代码 0x01 0x03 0x00 0x00 0x00 0x01 0x0a 0x84 发送到串行设备(电压传感器)时遇到了一些麻烦,该设备将使用 Python 和 pyserial 返回当前电压的 int。我的代码如下:

问题是 Python 似乎将每个字节作为单独的数据包发送,请参见下图来自串行监视器

见图片http://www.centralinfo.com.au/images/SerialOutput.png

前 8 个字节(00 - 07)来自 python 应用程序(注意不同数据包的交替颜色)接下来的 8 个字节(08 - 0f)是一个 VB.net 应用程序,它发送相同的工作数据。

我的问题是如何根据 vb.net 应用程序发送上面的 8 个十六进制字节,使其位于一个数据包(Modbus 协议)中?

VB代码对比:

提前感谢您的宝贵时间克里斯

0 投票
1 回答
3252 浏览

c - UDP sendto 和 recvfrom 在不同的端口上

在决定尝试与工作中的某些设备交谈后,我正试图围绕套接字的工作原理。基本细节是设备使用基于 UDP 的 ModBus RTU 协议。数据表说设备在端口 2001 上侦听并回复端口 2000。在尝试找到一些示例代码后,我找到了一个 modbus 库并设法让它与一些发送和接收似乎相同的模拟器一起工作港口。但是,我似乎无法让它与我的设备一起使用。我认为问题与端口有关。我看了一遍,似乎找不到任何有用的东西(也许我只是没有足够好的理解)。这是我正在使用的代码,有没有人有任何指针。

0 投票
1 回答
370 浏览

asp.net-mvc - asp.net mvc 4 不间断地运行一个方法,而不会减慢或阻塞应用程序

在寻找了几天的明确答案后,我决定自己在这里问。

在我的公司,我的任务是制作一个用于气体和火灾检测的 Web 应用程序。它通过 modbus tcp/ip 与 modbus 库进行对话。这种连接工作得非常好,它每秒读取大约 1 次(尽管我可以很容易地调整它)。

我对asp.net mvc模型中的AsynControllers和async-await任务有很多关注。问题是我必须让这个工作不停。因此,当我的应用程序第一次启动时(打算永远不会关闭它,因为它将是一个控制室类型的应用程序),我的应用程序需要开始阅读并继续阅读,同时将此信息放入数据库中,所以我可以将此数据库用于应用程序的其余部分。由于它是火灾检测,因此此更新需要始终并且几乎立即起作用。

我正在考虑在 global.aspx 中调用它,以便它在启动时运行。但是当然,当我调用此方法时,它只会阻止我的完整应用程序。我怎样才能使这项工作?

任何帮助将不胜感激。

编辑:

它似乎可以添加:Task.Factory.StartNew(() => { ModbusDB.Main(); });

到 global.aspx!