jlibmodbus를 이용한 MODBUS-RTU over TCP/IP 디바이스 연결

어디에선가의 요청에 의해서 JAVA 환경에서 MODBUS를 이용해 디바이스의 레지스터를 읽어오는 예제코드를 작성하였습니다. JAVA는 Hello World 출력 정도 기억만 남아 있어서..^^ 일단 대충 테스트 코드를 작성하여 동작시켜보니.. 역시나 잘 동작합니다.

검색해보니 jlibmodbus가 유용해보이기도 하고, 실제 MODBUS-RTU over TCP/IP도 지원하고 있길래 사용하였습니다.

package com.unknown.modbusmonitorexam;

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.serial.*;
import com.intelligt.modbus.jlibmodbus.tcp.TcpParameters;

import java.net.InetAddress;
import java.net.UnknownHostException;

public class ModbusMonitorExam {
    public static void main(String[] args) throws UnknownHostException, ModbusIOException, SerialPortException, ModbusProtocolException, ModbusNumberException {
        TcpParameters tcpParameters = new TcpParameters();
        tcpParameters.setHost(InetAddress.getByName("192.168.10.11"));
        tcpParameters.setPort(9200);
        tcpParameters.setKeepAlive(true);

        SerialUtils.setSerialPortFactory(new SerialPortFactoryTcpClient(tcpParameters));
        ModbusMaster master = ModbusMasterFactory.createModbusMasterRTU(new SerialParameters());

        master.connect();

        int[] registerValues = master.readHoldingRegisters(1, 0, 5);
        for(int values : registerValues)
        {
            System.out.println("Value: " + values);
        }
    }
}

여담으로 Intellij IDEA를 이용해서 개발하니… 개발환경이 꽤나 편하네요..^^


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *