모드 버스는 디바이스 간 통신을 하기 위해 오래전 개발된 산업용 프로토콜로 시리얼이나 TCP/IP, UDP에서도 구현 가능합니다.
자바에서 간단한 예제를 통해 테스트해보도록 하겠습니다.
모드 버스를 자바에서 테스트해보기 위해서는 우선 라이브러리가 필요합니다.
1. EasyModbus 라이브러리
1-1. 라이브러리 다운로드 링크
https://sourceforge.net/projects/easymodbustcp-udp-java/
위 링크에서 EasyModbusJava.jar 파일을 다운로드합니다.
1-2. EasyModbus Source code
아래 링크는 소스코드 gitbub 링크입니다.
https://github.com/rossmann-engineering/EasyModbusTCP.Java
개발 시 참고하면 좋을 것 같습니다.
2. Modbus Server 예제
Modbus Server 예제 소스 링크
https://sourceforge.net/p/easymodbustcp-udp-java/wiki/Code%20Example%20Modbus%20Server/
예제 소스를 기반으로 테스트해보도록 하겠습니다.
Modbus TCP 통신을 위한 표준 포트는 502입니다.
setPort설정을 하지 않고 테스트해보겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public static void main(String[] args)
{
ModbusServer modbusServer = new ModbusServer();
// Note that Standard Port for Modbus TCP communication is 502
//modbusServer.setPort(1522);
modbusServer.coils[1] = true;
modbusServer.holdingRegisters[1] = 1234;
try
{
modbusServer.Listen();
}
catch (Exception e)
{
System.out.println(e.toString());
}
}
|
cs |
3. Modbus Client 예제
Modbus Client 예제 소스
https://sourceforge.net/p/easymodbustcp-udp-java/wiki/Code%20Sample%20ModbusClient%2032Bit%20Values/
Connect를 하고 Write 한 뒤에 Read를 해서 통신이 제대로 되고 있는지 확인하는 예제입니다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public static void main(String[] args)
{
ModbusClient modbusClient = new ModbusClient("localhost", 502);
try
{
modbusClient.Connect();
// Write Float value to Register 10 and 11
modbusClient.WriteMultipleRegisters(9, ModbusClient.ConvertFloatToTwoRegisters((float)(1323.55)));
// Write 32 bit value to Register 12 and 13
modbusClient.WriteMultipleRegisters(11, ModbusClient.ConvertDoubleToTwoRegisters((1323554)));
// Read Float Value from Register 10 and 11
System.out.println(ModbusClient.ConvertRegistersToFloat(modbusClient.ReadHoldingRegisters(9, 2)));
// Read 32 Bit Value from Register 12 and 13
System.out.println(ModbusClient.ConvertRegistersToDouble(modbusClient.ReadHoldingRegisters(11, 2)));
}
catch (Exception e)
{
System.out.println(e.toString());
}
}
|
cs |
상황에 맞게 테스트해보시기 바랍니다.
'IT, 개발 > JAVA' 카테고리의 다른 글
JAVA - ArrayList index별 값 삭제 첫번째, 마지막, 중간값 삭제 / 전체 삭제(remove(), clear()) (0) | 2022.11.17 |
---|---|
MacOS JAVA 설치 및 환경변수 설정(Homebrew, ~/.zshrc) (0) | 2022.11.02 |
JAVA - 자바 파일 삭제하기 / 파일 이름, 경로 바꾸기 (delete() / renameTo()) (0) | 2022.09.22 |
RabbitMQ MQTT - JAVA publish / subscribe 에제 (eclipse.paho) (0) | 2022.09.09 |
JAVA 타임서버 시간 가져오기(time.bora.net)(NTPUDPClient, TimeInfo) (0) | 2022.09.05 |