- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前我正在使用 Schneider Power Logic 电气设备。我想从设备读取数据并在我的系统中显示值。到目前为止,我发现了 J2mod、Jamod 和 Modbus4Java 库。我使用所有 modbus4java 来连接并获取设备的数据。
其实我还在纠结到底要创建Master端还是Slave端。根据我的理解,该设备将是 Slave,而我的系统将是 Master(第一个问题)。
下面是在我的设备上的设置。表示设备处于slave模式,协议(protocol)为Modbus RTU。所以,我需要创建一个主应用程序来与之通信,它使用的是 ModbusRTU 协议(protocol)吗? (第二题)
下面是我的应用程序作为Master并使用ModbusRTU协议(protocol)的代码
public static void main(String[] args) throws ModbusTransportException, ErrorResponseException {
ModbusFactory factory = new ModbusFactory();
SerialParameters params = new SerialParameters();
params.setCommPortId("COM6");
params.setBaudRate(9600);
params.setDataBits(8);
params.setStopBits(1);
params.setParity(0);
ModbusMaster master = factory.createRtuMaster(params);
master.setTimeout(1000);
master.setRetries(0);
long start = System.currentTimeMillis();
try {
master.init();
} catch (Exception e) {
System.out.println( "Modbus Master Init Error: " + e.getMessage());
return;
}
try {
System.out.println("Reg. 1001 Value:" + master.getValue(1, RegisterRange.HOLDING_REGISTER, 3110, DataType.FOUR_BYTE_FLOAT_SWAPPED));
}
finally {
master.destroy();
}
System.out.println("Time elapsed: " + (System.currentTimeMillis() - start) + "ms");
}
这是我从 Modbus4Java 页面提供的示例代码中获得的代码。另一件让我担心的事情是 params.setCommPortId("COM6");
的值 除了“COM6”我还可以放在那里。因为基本上它收到一个 String 值。那么我可以将任何 String 值放入其中吗?这个特定的 setCommPortID 的功能是什么。 (第三题)
查看Modbus4Java页面提供的示例代码,它没有输入设备的IP地址。但就我而言,我的设备获得了一个 IP 地址。并且 IP 地址仅在从属应用程序中使用。我的系统应该如何识别设备的 IP 地址? (第 4 个问题)。
在我运行这段代码之后,我得到了一个错误:
native 库版本 = RXTX-2.1-7
Java 库版本 = RXTX-2.1-7
Modbus 主机初始化错误:com.serotonin.io.serial.SerialPortException:gnu.io.NoSuchPortException
请,请,请帮助我。我坚持了将近一个月。真的希望有人能帮助我。预先感谢您提供任何帮助和建议。
最佳答案
我是 j2mod 的维护者,所以我的回答是建议您查看 j2mod 中包含的测试程序。您可以通过此 URL 在 SourceForge 上找到 j2mod --
https://sourceforge.net/projects/j2mod/
我很擅长在那里回答问题,但我也关注 stackoverflow,所以我也可以在这里解释更多。这里有很多问题,所以如果我遗漏了什么,我提前道歉。
Schneider 设备是从设备或“服务器”,您的应用程序是主设备或“客户端”。 Modbus 是一种主/从协议(protocol),由主站发起所有请求。您的应用程序将成为主人并负责向您的设备发出所有请求。
确切的通信将由设备文档提供。在本例中,您指示设备使用 38400 波特等。这些是您将使用 RXTX 库更新 SerialParameters 的参数(j2mod 也恰好使用了它)。
传递给 setCommPortId() 的值是 Windows COM 端口标识符——您应该能够传递任何与实际 COM 端口关联的值——“COM1”、“COM2”等。请注意,某些 USB 转换器每次使用它们时都更改它们的 COM 端口,因此您可能正在寻找端口名称。
您提到您的设备也有一个 IP 地址。您不能使用 RTU 类和方法来访问 Modbus/TCP 设备。 jamod 和 j2mod 也是如此——大多数 Modbus 库都有不同的 RTU 和 TCP 传输类(以及 ASCII 和 UDP,用于支持其他传输的库)。
关于java - Modbus4J Modbus RTU 主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32432548/
https://code.google.com/p/stm32modbus/source/browse/#svn%2Ftrunk%2F%20stm32modbus%20--username%20ick
我正在用 C 编写一个 MODBUS CRC16 计算器。我之前有一个 python 可以执行此操作,我想将它转换为 C。我在网上找到了一些代码,但它没有给我正确的答案。 对于我的 python 代码
请为我知道之前讨论过但找不到答案的问题道歉。我正在尝试创建一个应用程序以通过 Modbus RTU 与我们的微 Controller 进行通信。是否有适用于 Android 的 Modbus RTU
我想在 MODBUS RTU 中使用 python 脚本控制执行器掌握。我尝试使用库minimalmodbus进行通信(写位,写入和读取寄存器)与我的奴隶。 当我启动代码时,出现一些错误。那么,有人可
目前我正在使用 Schneider Power Logic 电气设备。我想从设备读取数据并在我的系统中显示值。到目前为止,我发现了 J2mod、Jamod 和 Modbus4Java 库。我使用所有
我正在使用minimalmodbus与 PID controller (Love 16C-3) 进行交流通过 RS485 使用USB-RS485 adapter cable . 但是当尝试读取寄存器时
我正在为系统开发一个自动化测试用例,需要一个自动 modbus 输入设备。 我的用例是实现一个基于 Raspberry pi 的 RTU modbus 从站并连接到 modbus 主站。 当主设备请求
我使用 modbus-tk 创建了一个 modbus slave,如下所示。我使用 Simply modbus 主站软件(http://www.simplymodbus.ca/RTUmaster.ht
我写了一个代码,通过 ModBUS RTU 与 9600 波特率的主设备进行通信。我下载了一个模拟程序,它是 ModBUS Slave。我可以通过这种方式与PC通信。我可以用我的微 Controlle
我正在实现一个软件,我可以通过串口在 Modbus RTU 协议(protocol)中读取和写入数据。为此,我需要计算字节串末尾的两个 CRC 字节,但我无法做到这一点。 在网上搜索,我发现了两个似乎
刚接触 Modbus 并使用 Modbus RTU 开发应用程序。我想知道如何找出RTU消息帧分离时间。在 Modbus RTU 规范中,它提到了 3.5 个字符的时间,但没有更多关于我如何决定这个间
我想通过 Modbus 协议(protocol)在 Raspberry PI(从机)和我的 PC(主机)之间建立通信。目前,我正在使用 modbus-tk (python) 来设置通信协议(proto
我正在尝试在 Digi Module connect me 9210 设备中实现 Modbus RTU Master。为此,我使用 libmodbus 库。 我必须在 NetOs 中提供什么设备名称才
我的问题会很奇怪,所以我很抱歉。 我将在名为“DiGi Module Connect Me 9210”的电子设备中实现 Modbus RTU Master。我将从该设备向 PIC 请求一些数据,如节点
我正在尝试设置一个接受 modbus RTU 轮询的监听器。 我发现了很多与modbus相关的npm库,但它们都与其他modbus从站的轮询有关,或者充当modbus TCP服务器。我需要模拟modb
我正在尝试编写 modbus slave 并遇到一个问题:我正确地接收了来自 master 的请求,但是当我尝试响应时,它看起来像是错误地发送到串行端口,因为当我插入 RS485 嗅探器时 - 我明白
我编写了一些简单的代码来从计时器的 2 个寄存器中获取信息。 我正在向 OVEN 发送下一个命令: 10 03 00 16 00 02 26 8E 并期望得到下一个响应(尝试使用 OpenSCADA
我正在使用 modbus-tk 通过 RS-485 网络通过 Modbus RTU 与设备进行串行通信。 我正在尝试弄清楚如何使用函数 23,READ_WRITE_MULTIPLE_REGISTERS
我是 Python 的初学者 (仅供引用),并尝试使用 minimalmodbus 库 (Python + Mac) 与 Gefran 800P 程序员/ Controller 进行通信。我正在使用
我是一名优秀的程序员,十分优秀!