JLibModbusWrite.java 3.35 KB
package com.huaheng.api.dianqi;

import com.intelligt.modbus.jlibmodbus.Modbus;
import com.intelligt.modbus.jlibmodbus.exception.ModbusIOException;
import com.intelligt.modbus.jlibmodbus.exception.ModbusNumberException;
import com.intelligt.modbus.jlibmodbus.exception.ModbusProtocolException;
import com.intelligt.modbus.jlibmodbus.master.ModbusMaster;
import com.intelligt.modbus.jlibmodbus.master.ModbusMasterFactory;
import com.intelligt.modbus.jlibmodbus.tcp.TcpParameters;

import java.net.InetAddress;

public class JLibModbusWrite {
    public static void main(String[] args) {
        try {
            // 设置主机TCP参数
            TcpParameters tcpParameters = new TcpParameters();

            // 设置TCP的ip地址
            InetAddress adress = InetAddress.getByName("192.168.2.1");
           // InetAddress adress = InetAddress.getByName("127.0.0.1");

            // TCP参数设置ip地址
            // tcpParameters.setHost(InetAddress.getLocalHost());
            tcpParameters.setHost(adress);

            // TCP设置长连接
            tcpParameters.setKeepAlive(true);
            // TCP设置端口,这里设置是默认端口502
            tcpParameters.setPort(Modbus.TCP_PORT);

            // 创建一个主机
            ModbusMaster master = ModbusMasterFactory.createModbusMasterTCP(tcpParameters);
            Modbus.setAutoIncrementTransactionId(true);

            int slaveId = 1;//从机地址
            int offset = 6;//寄存器读取开始地址
            int quantity = 10;//读取的寄存器数量


            try {
                if (!master.isConnected()) {
                    master.connect();// 开启连接
                }
//                 * 读线圈:  ON=1,OFF=0
//                 * 读离散量     ON=1,OFF=0
//                 * 读保存寄存器    指定数据类型(可以是Float)
//                 * 读输入寄存器    指定数据类型(可以是Float)
//                boolean[] readCoils = master.readCoils(slaveId, offset, 1);
//                for (boolean readCoil : readCoils) {
//                    System.out.println(readCoil);
//                }
//                int[] readHoldingRegisters = master.readHoldingRegisters(slaveId, offset, 1);
//                for (int readHoldingRegister : readHoldingRegisters) {
//                    System.out.println(readHoldingRegister);
//                }
               // master.writeSingleCoil(slaveId,0,true);
              //  boolean[] booleans=new boolean[]{true,true,true,true,true,true,true,true,true,true};
              //  master.writeMultipleCoils(slaveId,0,booleans);
                master.writeSingleRegister(slaveId,5,512);
                //int[] register=new int[]{0,0,0,0,0,0,0,0,0,0};


               // master.writeMultipleRegisters(slaveId,0,register);
            } catch (ModbusProtocolException e) {
                e.printStackTrace();
            } catch (ModbusNumberException e) {
                e.printStackTrace();
            } catch (ModbusIOException e) {
                e.printStackTrace();
            } finally {
                try {
                    master.disconnect();
                } catch (ModbusIOException e) {
                    e.printStackTrace();
                }
            }
        } catch (RuntimeException e) {
            throw e;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}