问题标签 [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.
modbus - 如何使用 Modbus ping 仪表
我正在尝试使用 Modbus 协议 ping Socomec仪表,经过研究,我发现了 NModbus,一个 C# 库。我以前从未使用过库或 C#(通常是 Java),但我必须直接投入其中。
我为 C# 设置了 Visual Studio Express 并安装了 .Net。我已将 NModbus 文件的内容复制到我的项目文件夹中,并添加了对两个主要 DLL 的引用。它不适用于 .Net 4,但我重新定位到 3.5(并删除了 Microsoft.Csharp 参考)并且事情似乎可以编译。
我正在使用下面的这个示例来尝试连接到从设备。当我运行它并将 startAdress 变量设置为所需的变量(在 Socomec 文档中找到)时,我得到的只是一个空白的控制台窗口。
简而言之,我是否使用了正确的方法/参数,我的设置/代码是否不正确?如何连接到此仪表?
我的代码:
c# - 如何访问 5xxxx Modbus 地址
我正在尝试使用 nmodbus 在 Socomec Diris A40 上访问诸如 50526 之类的地址。与我看到的其他以 3 或 4 开头的示例不同,这些地址都以 5 开头。50544、50550、50556 只是我感兴趣的几个。
目前就我的理解,第一个数字代表的是Modbus功能,实际上并不是指真正的地址,即30000地址使用04功能,40000地址使用03功能(?)。我已经看到省略了第一个数字,其余的用作地址。如果我用我的 50000 个地址尝试这个,我会取得一些成功,但不是所有的值,结果似乎不正确。MODPOLL 返回与我的代码相同的结果。
我真的可以使用一些帮助!如果有人能告诉我如何访问这些 5xxxx 寄存器,我将不胜感激。
方法代码:
modbus - 如何编辑 Java 库的构建属性
似乎有一些类似的问题,但没有足够具体的问题,我希望这没问题。
我想知道如何编辑 Jamod MODBUS 库的构建属性,以便使用 RxTx API 而不是已弃用的 javax.comm。图书馆页面说这是支持的:
您将需要安装 Java 通信 API 扩展 (javax.comm) 的实现,以便能够运行串行 modbus 应用程序。请注意,还支持使用 gnu.io 前缀 (RXTX) 进行构建,通过布尔构建属性 build.serial.gnu (true 将导致构建过程将 javax.comm 前缀替换为使用的源中的 gnu.io用于构建)。
更多信息在这里:http: //jamod.sourceforge.net/development/project_build.html
我不确定如何访问这个文件,或者这样做的技术。我需要创建它还是编辑现有的?我已经在项目中寻找 build.xml,但没有运气,并且谷歌搜索了很多次。非常感谢任何帮助。
modbus - TComPort 和 Modbus-RTU?
可以用 TComPort 读取和发送 modbus RTU 协议的数据吗?
我已经阅读了关于 modbus 的 wiki http://en.wikipedia.org/wiki/Modbus,但是以 3.5c 空闲开始和结束是什么意思?
我使用 C++Builder2009
embedded - Modbus 协议数据模型中的访问限制
Modbus协议数据模型中的寄存器到底有什么区别?
该协议定义了以下数据模型:
究竟谁被允许读写?它适用于主(客户端)还是从(服务器)。如果访问限制适用于主机,那么只读寄存器中的“输入”一词对我来说没有多大意义。如果是其他方式,那么为什么从站会有无法修改的寄存器?
官方协议规范文档对此问题并不清楚,所以请帮忙。
谢谢
ruby-on-rails - 需要通过我的基于云的服务器使用 Modbus over TCP/IP 与盒子通信
所以我对 Modbus 没有太多经验,但我的问题本质上是标题中的内容。我是否需要一个与盒子对话然后重新格式化消息并将其推送到服务器的控制器?或者服务器可以直接与盒子对话吗?顺便说一句,如果有帮助,我的云应用程序会使用 Rails。我不确定还需要什么其他信息,所以请随时告诉我。
谢谢。
c# - 使用 .Net 的 NetworkStream.Read/BeginRead 分隔应用程序协议帧
我的问题对于网络编程来说更笼统,但是因为我正在尝试编写一个 Modbus TCP 服务器(从站),所以我将用它来说明我的问题。
在 Modbus TCP 帧中,帧的第 5 和第 6 字节给出帧的大小:
字节 1 和 2:事务 ID
字节 3 和 4:协议 ID
字节 5 和 6:帧中剩余的字节数
字节 7 - n:帧的其余部分。
使用NetworkStream.Read()
/BeginRead()
时,如何分隔接收到的帧?
我见过一些开源实现,它们只读取前 6 个字节,解析字节 5 和 6 以获取帧其余部分的大小,然后读取帧的其余部分。但是如果你的框架中没有开始和结束分隔符,你怎么知道框架的开始和结束位置?
例如,也许客户端发送了一些垃圾字符,然后发送了一个好帧。在这种情况下,如果我只读取前 6 个字节,我会错过好帧,并且可能会错过未来的帧,因为我与客户端的节奏不同步。
这个问题并不是真正针对 Modbus,而是针对任何使用“大小”字段来指定帧大小的协议。你如何划分框架?
我觉得我错过了网络编程的一些基础知识,但也许协议设计得不好。
c++ - MODBUS TCP 应答转换为浮点 C++
我有一个问题。我有一个 MODBUS TCP 答案,它的十六进制编码如下:0 0 0 0 0 7 1 4 4 41 B8 66 64。为了解释:前五个零是 Modbus 的规范,7 是字节数紧随其后。1 是 Modbus 网络中的客户端地址,不相关。前4个是使用的功能代码。第二个 4 再次是后面的字节数。最后四个字节是十六进制编码的答案,应转换为双精度。存储它的数组是一个无符号字符数组。这里有几个例子我是如何尝试的。这里是第一个例子:
Value 是使用的 double 变量,ibuf 是使用的 char 数组。这里是第二个:
这里我使用了一个固定值,但问题始终是从十六进制到双精度的转换。我很高兴我能得到每一个帮助。
android - 最适合移植 android OS 的基于 ARM 的开发套件
我正在寻找一个基于 ARM 的硬件开发工具包,用于在其上移植 Android 操作系统。我的目标是在基于 ARM 的硬件平台上移植 Android OS 并编写 Modbus 驱动程序,为基于 Android 的手机提供串行通信支持。我打算编写将通过 modbus 驱动程序与我的硬件板通信的 Android 移动应用程序。
我做了一些谷歌搜索,发现 Beagle board 最适合这个项目,如果有任何帮助,他们也有庞大的开发者社区可供使用。
他们的任何其他 ARM 硬件平台是否最适合我的项目?
java - Jamod (modbus, Java) Master programming, why does it repeat the transaction?
I'm on a project that involves using the serial connection (hence the Jamod) and coding I came across this
[Source: http://jamod.sourceforge.net/kb/serial_master_howto.html, to really understand the question I think you guys might need to read the whole example]
My question is why does it repeat the transaction? it doesn't make any sense to me since the repeat variable is taken from the args that are placed in the main and as the tutorial says, its optional. So to sum up, why is that repeat there?
Any help will be very appreciated!