어디에선가의 요청에 의해서 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를 이용해서 개발하니… 개발환경이 꽤나 편하네요..^^
Leave a Reply