모드버스 핸드북
최초의 PLC를 관리하기 위해 만든 프로토콜로 1979년에 만들어져 현재까지 사용되고 있는 모드버스(Modbus)의 정의, 기술적 특징 및 장점에 대해 설명한다.
모드버스 종류에 대해 OSI 참조모델을 기준으로 설명하고 있으며 모드버스 시리얼의 전송방식인 모드버스 ASCII와 모드버스 RTU를 비교 설명한다.
그리고 모드버스 시리얼과 모드버스 TCP에 대해서 Function Code별 통신 메시지 프레임과 예제를 담고 있으며 그 세부 동작을 설명하고 있다.
모드버스 시리얼, 모드버스 TCP 네트워크와 각 네트워크들을 연결하기 위한 모드버스 게이트웨이를 설명하며 모드버스 네트워크 구성을 어떻게 하는지 소개하고 있다.
Contents 4
1. 모드버스 소개 8
1.1 모드버스란? 8
1.2 관련 자료 9
2. 배경 지식 10
2.1 용어 정리 10
2.2 OSI 기본 참조 모델 (OSI basic reference model) 10
2.2.1 OSI 모형이란? 10
2.2.2 OSI 7계층 11
2.2.3 OSI 7계층의 캡슐화와 역캡슐화 12
2.2.4 OSI 모형과 TCP/IP 13
3. 모드버스 종류 15
3.1 모드버스 시리얼 (MODBUS Serial) 15
3.2 모드버스 TCP (MODBUS TCP) 16
3.3 모드버스 플러스 (MODBUS Plus) 16
4. 모드버스 일반적 사항 17
4.1 프로토콜 사항 17
4.2 마스터-슬레이브 (서버-클라이언트) 모델 19
4.3 데이터 인코딩 20
4.4 데이터 모델 20
4.5 어드레스 규칙 22
5. 모드버스 시리얼 (MODBUS Serial) 24
5.1 모드버스 시리얼 프레임 24
5.1.1 Address 25
5.1.2 Function Code 26
5.1.3 Data 28
5.1.4 Error Check 28
5.2 모드버스 ASCII vs 모드버스 RTU 29
6. 모드버스 시리얼 통신 프레임 예제 32
6.1 모드버스 트랜잭션과 예외 처리 32
6.2 Function Code 0x01 : Read Coils 35
6.3 Function Code 0x02 : Read Discrete Inputs 38
6.4 Function Code 0x03 : Read Holding Registers 39
6.5 Function Code 0x04 : Read Input Registers 42
6.6 Function Code 0x05 : Write Single Coil 43
6.7 Function Code 0x06 : Write Single Register 45
6.8 Function Code 0x07 : Read Exception Status (serial line only) 46
6.9 Function Code 0x08 : Diagnostics (serial line only) 48
6.9.1 Function Code 0x08 진단 트랜잭션과 예제 48
6.9.2 Sub-Function Code Table 50
6.9.3 Sub-Function Code 별 진단 트랜잭션 50
6.10 Function Code 0x0B : Get COM Event Counter (serial line only) 54
6.11 Function Code 0x0C : Get COM Event Log (serial line only) 55
6.11.1 Function Code 0x0C 트랜잭션과 예제 55
6.11.2 Event 필드 비트 레이아웃 57
6.12 Function Code 0x0F : Write Multiple Coils 58
6.13 Function Code 0x10 : Write Multiple Registers 59
6.14 Function Code 0x11 : Report Slave ID (serial line only) 62
6.15 Function Code 0x14 : Read File Record 63
6.16 Function Code 0x15 : Write File Record 66
6.17 Function Code 0x16 : Mask Write Register 67
6.18 Function Code 0x17 : Read/Write Multiple Registers 69
6.19 Function Code 0x18 : Read FIFO Queue 71
6.20 Function Code 0x2B : Encapsulated Interface Transport 72
7. 모드버스 TCP (MODBUS TCP) 78
7.1 모드버스 시리얼 vs 모드버스 TCP 78
7.2 모드버스 TCP 통신 79
7.2.1 MBAP Header 79
7.2.2 모드버스 TCP 캡슐화/역캡슐화 82
7.2.3 모드버스 TCP 소켓 통신 83
7.3 모드버스 TCP 통신 프레임 예제 85
7.3.1 Function Code 0x03 : Read Holding Registers 85
7.3.2 Function Code 0x08 : Diagnostics 87
7.3.3 Function Code 0x10 : Preset Multiple Registers 88
8. 모드버스 네트워크 구성도 91
8.1 모드버스 시리얼 네트워크 구성도 91
8.2 모드버스 TCP 네트워크 구성도 91
8.3 모드버스 게이트웨이 92
8.4 모드버스 혼합(Mixed) 네트워크 구성도 93
부록(Appendix). ASCII Code 94