Modbus
더 많은 작업
Modbus(모드버스)는 PLC, RTU, 센서 같은 산업 현장 장치와 상위 제어기 사이에서 요청-응답 방식으로 코일과 레지스터 값을 읽고 쓰는 응용 계층 통신 프로토콜이다.
Modbus는 1979년 모디콘(Modicon, 현 슈나이더 일렉트릭)이 자사 PLC 통신용으로 만들었다. 규격이 공개되어 있고 사용료가 없으며 구조가 단순해, 지금도 산업제어시스템과 SCADA, 빌딩 자동화, 에너지 계측, IoT 게이트웨이에서 가장 널리 쓰이는 필드 프로토콜 가운데 하나다. 현재 규격은 비영리 단체인 Modbus Organization이 관리한다.
Modbus는 OSI 7계층의 응용 계층에 해당하는 메시지 구조만 정의하고, 그 아래에는 직렬 통신(RS-232, RS-485)이나 이더넷 TCP/IP를 쓴다. 통신은 항상 한쪽이 묻고 다른 쪽이 답하는 클라이언트-서버(전통적 명칭은 마스터-슬레이브) 방식이다. 서버(슬레이브)는 먼저 말을 걸지 않는다.
| 방식 | 물리 매체 | 인코딩·프레임 | 오류 검사 | 특징 |
|---|---|---|---|---|
| Modbus RTU | RS-485, RS-232 | 이진(binary). 3.5문자 시간 이상의 침묵으로 프레임 구분 | CRC-16 | 가장 많이 쓰는 직렬 방식. 전송 효율이 높음 |
| Modbus ASCII | RS-485, RS-232 | 16진수 문자. :로 시작해 CR LF로 끝남 |
LRC | 사람이 읽기 쉬움. 길이가 RTU의 약 2배 |
| Modbus TCP | 이더넷 | TCP 포트 502. MBAP 헤더 + PDU | 없음(TCP가 보장) | 이더넷 기반 장치·게이트웨이 |
RS-485 멀티드롭 버스에서는 한 대의 마스터가 주소 1~247의 슬레이브를 차례로 폴링한다. 주소 0은 모든 슬레이브에 보내는 브로드캐스트이며 응답하지 않는다.
전송 방식과 무관한 핵심 부분을 PDU(Protocol Data Unit: 기능 코드 1바이트 + 데이터)라 하고, 전송 방식에 따라 앞뒤에 붙는 주소·오류 검사까지 포함한 것을 ADU(Application Data Unit)라 한다. PDU는 최대 253바이트다.
| 방식 | ADU 구성 |
|---|---|
| RTU | 슬레이브 주소(1) + 기능 코드(1) + 데이터(가변) + CRC(2) |
| TCP | MBAP 헤더(7) + 기능 코드(1) + 데이터(가변) |
MBAP 헤더는 트랜잭션 ID(2바이트, 요청-응답 짝 맞추기), 프로토콜 ID(2바이트, Modbus는 0), 길이(2바이트), 유닛 ID(1바이트, 게이트웨이 뒤 직렬 장치 주소)로 이뤄진다.
예를 들어 RTU에서 슬레이브 17(0x11)의 보유 레지스터 0x006B부터 3개를 읽는 요청은 11 03 00 6B 00 03 CRC이고, 응답은 11 03 06 [6바이트 데이터] CRC다.
| 데이터 영역 | 크기 | 접근 | 관례적 주소 | 예 |
|---|---|---|---|---|
| 코일(Coil) | 1비트 | 읽기·쓰기 | 0xxxx | 펌프·밸브 켜기/끄기 출력 |
| 이산 입력(Discrete Input) | 1비트 | 읽기 전용 | 1xxxx | 리밋 스위치, 비상정지 버튼 상태 |
| 입력 레지스터(Input Register) | 16비트 | 읽기 전용 | 3xxxx | 온도·압력 측정값 |
| 보유 레지스터(Holding Register) | 16비트 | 읽기·쓰기 | 4xxxx | 설정값(목표 온도, 속도) |
16비트보다 큰 값(32비트 정수, 부동소수점)은 레지스터 두 개를 이어 쓰는데, 워드 순서가 제조사마다 달라 연동할 때 자주 문제가 된다.
| 코드 | 이름 | 대상 |
|---|---|---|
| 01 | Read Coils | 코일 읽기 |
| 02 | Read Discrete Inputs | 이산 입력 읽기 |
| 03 | Read Holding Registers | 보유 레지스터 읽기 |
| 04 | Read Input Registers | 입력 레지스터 읽기 |
| 05 | Write Single Coil | 코일 1개 쓰기 |
| 06 | Write Single Register | 보유 레지스터 1개 쓰기 |
| 15(0x0F) | Write Multiple Coils | 코일 여러 개 쓰기 |
| 16(0x10) | Write Multiple Registers | 보유 레지스터 여러 개 쓰기 |
| 08 | Diagnostics | 진단(직렬 회선) |
| 43/14 | Read Device Identification | 제조사·모델·버전 조회 |
서버가 요청을 처리할 수 없으면 기능 코드에 0x80을 더한 값과 예외 코드를 돌려준다. 예외 코드는 01(지원하지 않는 기능), 02(잘못된 데이터 주소), 03(잘못된 데이터 값), 04(서버 장치 오류) 등이다.
| 장점 | 한계 |
|---|---|
| 규격 공개, 사용료 없음 | 마스터 폴링 방식이라 변화가 생겨도 서버가 먼저 알릴 수 없음 |
| 구조가 단순해 저가 장치에도 구현 가능 | 데이터 형식이 비트와 16비트 레지스터뿐이라 의미(단위, 스케일)는 별도 문서로 약속 |
| 제조사가 달라도 연동이 쉬움 | 타임스탬프, 이벤트 보고 기능 없음 |
| 직렬과 이더넷을 게이트웨이로 쉽게 연결 | 인증·암호화·권한 관리가 없음 |
Modbus는 폐쇄된 현장 버스를 전제로 설계되어 누가 보낸 명령인지 확인하지 않는다. 망에 접근할 수 있으면 누구나 정상 명령과 똑같은 패킷으로 값을 읽고 바꿀 수 있다. 이더넷으로 옮겨 오면서 IP 망의 모든 위협에 그대로 노출되었다.
| 위협 | 내용 |
|---|---|
| 무단 명령 | 기능 코드 05·06·15·16으로 코일·설정값을 바꿔 펌프를 멈추거나 설정 온도를 조작 |
| 정찰 | 유닛 ID와 레지스터 주소를 훑고, 기능 코드 43으로 장치 정보를 수집 |
| 스니핑·변조 | 평문이라 측정값·설정값이 그대로 보이고 중간자가 값을 바꿀 수 있음 |
| 재전송 | 이전에 캡처한 쓰기 명령을 다시 보냄. 순서 번호나 시각 검증이 없음 |
| 서비스 거부 | 진단 기능 등으로 장치를 통신 불능 상태로 만들거나 요청을 폭주시킴 |
대응은 다음과 같다.
- 망 분리와 영역 설계 : IEC 62443의 영역(zone)·도관(conduit) 개념으로 Modbus 장치를 제어망 안에 가두고, 업무망과는 DMZ를 거치게 한다.
- Modbus 인지형 방화벽·DPI : 허용된 HMI·엔지니어링 PC에서 온 요청만, 허용된 기능 코드와 주소 범위만 통과시킨다. 예를 들어 감시용 단말에는 읽기 코드(01~04)만 허용한다.
- 이상 행위 탐지 : 평소에 없던 쓰기 명령, 낯선 출발지, 비정상 주기를 산업용 IDS로 탐지한다.
- Modbus/TCP Security : Modbus Organization이 2018년 공개한 보안 규격이다. TLS로 상호 인증과 암호화를 하고, X.509 인증서에 역할(role) 정보를 넣어 권한을 나눈다. TCP 포트 802를 쓴다. 다만 구형 장치는 지원하지 않는 경우가 많다.
- VPN·보안 게이트웨이 : 원격 구간은 터널로 보호한다.
| 구분 | Modbus | DNP3 |
|---|---|---|
| 주 사용 분야 | 공장 자동화, 빌딩, 계측 | 전력·수도 등 광역 유틸리티 SCADA |
| 통신 방식 | 마스터 폴링 | 폴링 + 서버의 비요청(unsolicited) 보고 |
| 데이터 | 비트·16비트 레지스터 | 데이터 유형·품질 플래그·이벤트 클래스 |
| 타임스탬프 | 없음 | 이벤트별 시각 기록 |
| 보안 | 기본 없음(이후 TLS 기반 보안 규격) | Secure Authentication(IEEE 1815) |
| 복잡도 | 매우 단순 | 상대적으로 복잡 |
- 「MODBUS Application Protocol Specification V1.1b3」, Modbus Organization, 2012.
- 「MODBUS Messaging on TCP/IP Implementation Guide V1.0b」, Modbus Organization, 2006.
- 「MODBUS/TCP Security Protocol Specification」, Modbus Organization, 2018.
- 「NIST SP 800-82 Rev. 3: Guide to Operational Technology (OT) Security」, NIST, 2023.