gpt4 book ai didi

java - 使用java编程的modbus协议(protocol)问题

转载 作者:行者123 更新时间:2023-12-01 18:12:47 25 4
gpt4 key购买 nike

我在使用Modbus协议(protocol)时遇到了一个问题,说实话,这是我第一次处理这种协议(protocol),尤其是我用它来联系一个非常罕见的文档 Controller (BF-1010)。连接是正确的,但我们无法读取输入,我不知道为什么???我们正在使用 Easymodbus 库,作为一项技术,我们正在使用 java。您将在下面找到我们正在使用的代码以及一些配置图像和结果,浏览 4 个链接。

[modbus config ][1]
[bf-1010 intrerface][2]
[java program][3]
[results][4]

[1]: /image/aFa9B.jpg
[2]: /image/RJpxJ.jpg
[3]: /image/MZwPN.jpg
[4]: /image/jQ4Td.jpg



package BF;
import de.re.easymodbus.modbusclient.*;
import de.re.easymodbus.exceptions.*;
import java.io.IOException;
import java.net.*;
import java.nio.ByteBuffer;
import java.io.*;
import java.util.*;
import java.io.InputStream;
import de.re.easymodbus.exceptions.ModbusException;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

public class connectBF {
public static void main(String[] args) throws Exception


ModbusClient modbusClient = new ModbusClient("192.168.9.124",50002);
modbusClient.Connect();
boolean d=modbusClient.isConnected();
System.out.println(d);

try
{
boolean[] input = modbusClient.ReadDiscreteInputs(10020, 2000);

for(int i=0;i<input.length;i++)
{
if(input[i] == true) System.out.println("INPUT "+i+" : "+input[i]);
}
}

catch (Exception e)
{
System.out.println("error");
}

}
}

最佳答案

底部的表格modbus config链接有助于翻译上表并列出检索 DI1-12 的调用(我相信这就是您想要做的):

功能代码:2 - 读取离散输入
起始地址 0x14 - 十进制 20
输入数量 0x0C - 十进制 12

所以尝试 modbusClient.ReadDiscreteInputs(20, 12);

(您可能正在尝试检索单个图像中未涵盖的其他字段;但是我建议首先尝试上述方法,然后在您知道它有效时将其扩展以涵盖其他输入)。

许多 Modbus 文档遵循较旧的“标准”,可能会造成相当困惑(有关详细信息,请参阅 this article 中的“Modbus:当 40001 真正意味着 1 或 0 真正意味着 1”部分)

关于java - 使用java编程的modbus协议(protocol)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60435346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com