Modbus 프로토콜: RTU, ASCII 및 TCP 통신의 기초
1. Modbus란 무엇인가?
Modbus는 제어기와 장치 사이에서 데이터를 교환하는 응용 계층 메시징 프로토콜입니다. RS-485와 RS-232는 전기적 인터페이스이며, Modbus RTU, ASCII 및 TCP는 각 메시지 형식과 전송 방식을 정의합니다. RS-485 인터페이스가 있다는 사실만으로 Modbus 지원을 의미하지는 않습니다.
유체 제어에서는 상태를 읽거나 제어 매개변수를 전달하는 데 사용할 수 있습니다. 지원 여부, 기능 코드 및 레지스터는 해당 제어기 모델의 통신 매뉴얼에서 확인해야 합니다. 이 글은 모든 FOREACH 제품이 이러한 인터페이스를 지원한다고 설명하는 것이 아닙니다.
2. RTU, ASCII 및 TCP는 어떻게 다른가?
커넥터만 보고 통신 모드를 판별할 수는 없습니다. 직렬 장치는 전송 모드, 전송 속도 및 프레임 형식이 일치해야 합니다. TCP에서는 네트워크 설정과 장치 서비스 설정이 호환되어야 합니다.
| 모드 | 메시지 구조 | 확인 항목 |
|---|---|---|
| Modbus RTU | 주소 + 기능 코드 + 데이터 + CRC | 직렬 통신 설정, 장치 주소 및 프레임 타이밍 |
| Modbus ASCII | LRC와 지정된 시작·종료 문자를 사용하는 ASCII 인코딩 | 직렬 통신 설정, 인코딩 및 LRC |
| Modbus TCP | MBAP 헤더 + 기능 코드 + 데이터; RTU용 CRC를 추가하지 않음 | IP 주소, 포트, 트랜잭션 식별자 및 Unit Identifier |
3. 직렬 주소와 요청·응답
직렬 유니캐스트 장치 주소는 1~247입니다. 0은 브로드캐스트이고 248~255는 예약되어 있습니다. 일반적으로 제어기가 유니캐스트 요청을 시작하면 지정된 장치가 응답합니다. 브로드캐스트 쓰기 요청에는 응답하지 않습니다. 주소 필드가 8비트라고 해서 0~255의 모든 값이 유효한 개별 장치 주소인 것은 아닙니다.
이 규칙은 직렬 링크에 적용됩니다. Modbus TCP에는 MBAP 헤더의 Unit Identifier가 있으며, 게이트웨이 라우팅에서의 의미는 구현에 따라 달라집니다. 직렬 주소 규칙을 모든 TCP 설정에 그대로 적용하지 마십시오.
4. 기능 코드와 레지스터 맵을 함께 확인하기
기능 코드는 데이터 유형과 읽기·쓰기 동작을 지정하며, 데이터 필드에는 주소, 수량 또는 값이 들어갑니다. Modbus를 사용하는 두 장치의 레지스터 정의가 반드시 같은 것은 아닙니다.
매뉴얼의 레지스터 번호와 메시지 시작 주소 사이에 오프셋이 있는지 확인하십시오. 여러 레지스터에 걸친 값은 데이터 폭, 부호 유무, 배율, 단위 및 워드 순서를 확인해야 합니다. 속도, 위치 및 액체 부피 값은 서로 바꾸어 사용할 수 없습니다.
| 방향 | 정상 직렬 유니캐스트 메시지 |
|---|---|
| 제어기 → 장치 | 주소 | 기능 코드 | 데이터 | CRC(RTU) / LRC(ASCII) |
| 장치 → 제어기 | 주소 | 기능 코드 | 데이터 | CRC(RTU) / LRC(ASCII) |
| 기능 코드(16진수) | 동작 |
|---|---|
| 01 | 코일 읽기 |
| 02 | 이산 입력 읽기 |
| 03 | 홀딩 레지스터 읽기 |
| 04 | 입력 레지스터 읽기 |
| 05 | 단일 코일 쓰기 |
| 06 | 단일 레지스터 쓰기 |
| 0F | 여러 코일 쓰기 |
| 10 | 여러 레지스터 쓰기 |
5. 유체 제어 장치 시운전
배선과 전원을 먼저 확인하고 통신 설정을 매뉴얼과 일치시키십시오. 알려진 상태를 읽어 장치 주소, 기능 코드 및 데이터의 의미를 확인한 다음, 허용된 매개변수 쓰기와 동작 명령을 시험하십시오.
통신 성공, 명령 수락, 동작 완료 및 실제 토출 부피를 각각 검증하십시오. 쓰기 응답만으로 펌프의 동작 완료를 입증할 수는 없습니다. 시간 초과가 발생하면 분주 명령을 반복하기 전에 상태를 조회하여 중복 분주를 방지하십시오.
요청, 응답, 예외 코드 및 시간 초과 조건을 기록하십시오. 리미트, 원점 복귀, 밸브 상태 및 시퀀스 타이밍을 함께 확인하여 문제를 찾으십시오. 정확한 명령, 주소 및 카운트 단위는 장치 통신 매뉴얼을 따라야 합니다.