从Altivar变频器或MODICON PLC读取Modbus网络上的数据

时间:2018-04-07 07:47:43

标签: java modbus modbus-tcp scada

告诉我是否可以使用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"一直以来。

所以我相信这些信息你可以帮助我。提前感谢您的回答。

0 个答案:

没有答案