告诉我是否可以使用Modbus协议直接从设备读取寄存器的值。我想在java语言中实现读取寄存器并将它们输出到jsp页面。该项目是文凭项目所必需的,并获得了java的知识。有没有人试图这样做?使用芒果无限自动化找到了库modbus4j但不知何故一切都很困难。提前感谢您的回答。
我必须添加一些信息。我将施耐德电动ATV 71变频器与Modbus TCP连接到计算机(建立连接是因为软件看到了这个设备)。
以下是使用的代码示例。主持人不同,因为该设备在大学,我不记得指示的地址。
public class Test {
public static void main(String[] args) throws ErrorResponseException,ModbusTransportException {
ModbusFactory factory = new ModbusFactory();
IpParameters parameters = new IpParameters();
parameters.setHost("127.0.0.1");
parameters.setPort(502);
parameters.setEncapsulated(false);
ModbusMaster master = factory.createTcpMaster(parameters,true);
master.setTimeout(1000);
master.setRetries(0);
try {
master.init();
master.setConnected(true);
NumericLocator locator = new NumericLocator(1,RegisterRange.HOLDING_REGISTER,0,DataType.FOUR_BYTE_INT_SIGNED);
System.out.println("value: "+master.getValue(locator));
System.out.println(master.isInitialized());
System.out.println(master.isConnected());
} catch (ModbusInitException e) {
System.out.println("Something wrong");
e.printStackTrace();
}
} }
方法" master.isInitialized()"和" master.isConnected()"返回值" true"。 设备中设置的地址为" 1"。它还确认了连接,因为在安装另一个id时会抛出异常。
NumericLocator locator = new NumericLocator(1,RegisterRange.HOLDING_REGISTER,0,DataType.FOUR_BYTE_INT_SIGNED);
System.out.println("value: "+master.getValue(locator));
上面的代码总是返回" null"无论我设置什么班次。
我也尝试过EasyModbus库并得到了值#34; 0"一直以来。
所以我相信这些信息你可以帮助我。提前感谢您的回答。