1. 정의
- 모드버스는 크게 세 종류가 있는데, 모드버스 시리얼(Modbus Serial), 모드버스 플러스(Modbus Plus) 그리고 모드버스 TCP/IP(Modbus TCP/IP)이다. 오늘날 이더넷 상에서 운용되는 TCP/IP를 이용한 모드버스의 진화가 모드버스 TCP/IP라고 할 수 있다. TCP/IP가 개방된 표준이기 때문에 모드버스 TCP/IP는 진정한 필드버스의 개방된 표준이라고 할 수 있다. 모드버스 TCP/IP는 디바이스 사이의 정보 교환, 모니터링, 분산형 I/O를 관리하기 위하여 광범위하게 사용된다.
-출처: Hello T 산업경제
2. 프로토콜 프레임 구조
1) Transaction ID (byte0~1)
쿼리 및 응답에 대한 작업의 순서 번호를 나타내며 마스터에 의해 설정된다.
2) Protocol ID (byte2~3)
프로토콜의 ID를 나타내며 0x0000으로 고정값이다.
3) Length(byte4~5)
Length 바이티 이후 부터 해당프레임의 마지막 길이까지를 나타낸다.
4) Unit ID(byte 6)
Unit ID를 나타낸다.
5) FC(byte 7)
Mode Bus TCP 함수 코드를 나타낸다.
01 READ COIL STATUS : 비트단위 출력포트 상태 읽기
02 READ INPUT STATUS : 비트단위 입력포트 상태 읽기
03 READ HOLDING REGISTERS : Read the binary contents of holding registers in the slave.
04 READ INPUT REGISTERS : 입력 레지스터 읽기 요청
05 WRITE SINGLE COIL : Writes a single coil to either ON or OFF
06 WRITE SINGLE REGISTER : Writes a value into a single holding register.
15 WRITE MULTIPLE COILS : Writes each coil in a sequence of coils to either ON or OFF.
16 WRITE MULTIPLE REGISTERS: Writes values into a sequence of holding registers
6) Data(byte 8)
함수코드에 따른 데이터를 나타낸다.
3. ModeBus RTU(Remote Terminal Unit)
- ModeBus RTU는 시리얼 통신 규격상의 마스터 슬레이브 통신 프로토콜 이라면, ModeBus TCP/IP는 Modbus RTU message 가 TCP / IP로 wrap 되어 전송되는 것을 말하며, serial lines 대신 network를 통해 전송되게 됩니다. Server에는 Slave ID 대신 IP 주소가 사용됩니다.
Modebus RTU 통신과 비교해서 Modebus TCP/IP통신은 앞부분에 7byte MBAP Header가 첨두에 부여되는 형태가 된다. Modebus RTU 통신의 대표적인 하드웨어 프로토콜 방신은 RS485, RS422방식이 있다.
4. ModeBus Tcp/IP 통신 방식
통신방식은 아스키 전송방식과 Hex 전송 방식이 있다.
예>
Function 01 (01hex) Read Coils
슬레이브의 이산신호 상태를 읽어들인다.
요청
요청메시지는 슬레이브에서 읽어들일 이산신호의 시작번지와 개수정보를 전달한다.
슬레이브 주소 4번에서 10~22(Coil11 to 23)을 읽어들이는 요청을 하는 메시지 예제이다.
Field Name | hex | ASCII Characters |
MBAP Header | ||
Function | 01 | 0 1 |
Starting Address Hi | 00 | 0 0 |
Starting Address Lo | 0A | 0 A |
Quantity of Coils Hi | 00 | 0 0 |
Quantity of Coils Lo | 0D | 0 D |
CRC Check Lo | DD | LRC (E 4) |
CRC Check Hi | 98 | |
Trailer | None | CR LF |
Total Bytes | 8 | 17 |
응답
요청메시지의 응답:
Field Name | hex | ASCII Characters |
MBAP Header | ||
Function | 01 | 0 1 |
Byte Count | 02 | 0 2 |
Data (Coils 7...10) | 0A | 0 A |
Data (Coils 27...20) | 11 | 1 1 |
CRC Check Lo | B3 | LRC (D E) |
Error Check Hi | 50 | None |
Trailer | None | CR LF |
Total Bytes | 7 | 15 |
'통신' 카테고리의 다른 글
네트워크 서브넷 마스크 (subnet mask) (0) | 2021.04.21 |
---|---|
CanOpen, Can 통신 (0) | 2020.09.09 |
RS485 통신 응용회로 설계 방법 (MAX13487E) (0) | 2020.08.14 |
[시리얼 통신] COMPORT(컴포트) 설정 확인 방법 (0) | 2020.07.17 |
시리얼통신 RS485통신 회로 설계 (0) | 2020.07.10 |
댓글