[使用Java编程的Modbus协议问题

问题描述 投票:0回答:1

老实说,我在使用Modbus协议时遇到问题,这是我第一次处理这种协议,特别是我正在使用它来联系非常罕见的文档控制器(BF-1010)。连接是正确的,但我们看不到输入,我也不知道为什么?我们正在使用easymodbus库,而作为一项技术,我们正在使用java。您会在下面找到我们正在使用的代码,以及一些用于配置和结果的图像,它们浏览了4个链接。

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

  [1]: https://i.stack.imgur.com/aFa9B.jpg
  [2]: https://i.stack.imgur.com/RJpxJ.jpg
  [3]: https://i.stack.imgur.com/MZwPN.jpg
  [4]: https://i.stack.imgur.com/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");
}  

}
}
java tcp controller modbus
1个回答
0
投票
modbus config链接底部的表有助于翻译上表,并列出了检索DI1-12的调用(我相信这是您想要做的事情:]]

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

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

((您可能试图检索一个图像中未涵盖的其他字段;但是,我建议您先尝试上述内容,然后在知道它可以工作时将其扩展为涵盖其他输入)。

[许多Modbus文档遵循较旧的“标准”,并且可能会造成混乱(有关更多信息,请参阅this article中的“ Modbus:当40001实际为1或0实际为1”)

© www.soinside.com 2019 - 2024. All rights reserved.