Modbus 가이드

Modbus RTU CRC 계산 방법

Modbus RTU 패킷 끝에는 데이터 오류를 확인하기 위한 CRC16 값이 붙습니다. CRC 계산값과 바이트 순서가 맞지 않으면 장비가 응답하지 않거나 통신 오류가 발생합니다.

CRC 값을 바로 확인해야 하나요?

HEX 데이터를 입력하면 Low Byte, High Byte, 전체 패킷을 브라우저에서 계산할 수 있습니다.

CRC16 Modbus 계산기 열기

1. Modbus RTU에서 CRC가 필요한 이유

RS485 같은 시리얼 통신 환경에서는 노이즈, 배선 문제, 속도 설정 오류로 데이터가 깨질 수 있습니다. CRC는 수신한 데이터가 원본과 같은지 확인하기 위해 패킷 끝에 붙이는 검사용 값입니다.

2. CRC가 붙는 위치

Modbus RTU 요청 패킷은 보통 장비 주소, 기능 코드, 데이터 영역, CRC 순서로 구성됩니다. CRC는 앞의 바이트 전체를 기준으로 계산하고 마지막에 붙입니다.

01 03 00 00 00 02 C4 0B

위 예제에서 01 03 00 00 00 02가 계산 대상이고, C4 0B가 CRC입니다.

3. Low Byte와 High Byte 순서

Modbus RTU에서는 CRC Low Byte가 먼저 붙는 경우가 일반적입니다. 계산 결과를 숫자로 볼 때와 실제 패킷에 붙일 때의 순서가 다르게 느껴질 수 있어 가장 자주 실수하는 부분입니다.

4. 자주 틀리는 부분

  • ASCII 문자열과 HEX 바이트를 혼동하는 경우
  • 공백, 콤마, 0x 접두어를 정리하지 않고 계산하는 경우
  • CRC High Byte를 먼저 붙이는 경우
  • 장비 주소나 기능 코드를 제외하고 계산하는 경우
장비 통신값이 계속 맞지 않나요?

Modbus RTU, RS485, 센서 데이터 수집 시스템 개발과 디버깅을 도와드립니다.

장비 연동 문의하기