liminfo

Modbus Reference

Modbus RTU/TCP 함수코드/레지스터 레퍼런스

25개 결과

Modbus Reference 소개

Modbus 레퍼런스는 Modbus RTU(시리얼 RS-485)와 Modbus TCP/IP 통신을 모두 다루는 완벽한 프로토콜 가이드입니다. 모든 표준 함수 코드를 문서화합니다: FC01(코일 읽기), FC02(이산 입력 읽기), FC03(보유 레지스터 읽기 - 가장 많이 사용), FC04(입력 레지스터 읽기), FC05(단일 코일 쓰기), FC06(단일 레지스터 쓰기), FC15(다중 코일 쓰기), FC16(다중 레지스터 쓰기), FC23(읽기/쓰기 동시 수행). 각 함수 코드에 바이트 단위 16진수 예시가 포함된 요청/응답 프레임 구조가 제공됩니다.

Modbus RTU에서는 시리얼 프레임 형식(슬레이브 주소, 함수 코드, 데이터, CRC16), RS-485 물리층 설정(보드레이트 9600/19200/38400, 8-N-1 또는 8-E-1 패리티, 3.5 문자시간 프레임 간격), CRC16 오류 검출 알고리즘(초기값 0xFFFF, 다항식 0xA001, LSB 우선 전송)을 상세히 다룹니다. Modbus TCP에서는 MBAP 헤더 구조(트랜잭션 ID, 프로토콜 ID, 길이, 유닛 ID), 기본 포트 502, 킵얼라이브 연결, TCP 게이트웨이를 통한 RTU 슬레이브 접근을 위한 Unit ID 브리징 개념을 설명합니다.

핵심 데이터 처리도 다룹니다: 전통적 5자리 레지스터 주소 체계(00001-09999 코일, 10001-19999 이산 입력, 30001-39999 입력 레지스터, 40001-49999 보유 레지스터)와 프로토콜-전통 주소 변환, 2개 레지스터에 걸친 IEEE 754 32비트 부동소수점 인코딩의 4가지 바이트 순서 변형(빅 엔디안 AB CD, 리틀 엔디안 CD AB, 바이트 스왑 BA DC, 워드 스왑 DC BA), 32비트 정수 처리, 예외 응답 코드(01-06), 타임아웃 및 재시도 전략, 폴링 최적화, TLS 1.2+ Modbus/TCP 보안, 그리고 VFD 인버터 제어, 온도 트랜스미터 통신, 전력량계 레지스터 맵의 실전 예시까지 포함합니다.

주요 기능

  • 모든 Modbus 함수 코드와 16진수 프레임 예시: FC01 코일 읽기, FC02 이산 입력 읽기, FC03 보유 레지스터 읽기, FC04 입력 레지스터 읽기, FC05/FC06 단일 쓰기, FC15/FC16 다중 쓰기, FC23 읽기/쓰기 동시
  • RTU 시리얼 프로토콜: 프레임 구조(슬레이브 + FC + 데이터 + CRC16), RS-485 설정(9600/19200/38400, 8-N-1/8-E-1), CRC16 알고리즘(0xFFFF 초기값, 0xA001 다항식, LSB 우선)
  • TCP/IP 프로토콜: MBAP 헤더(트랜잭션 ID, 프로토콜 ID, 길이, 유닛 ID), 포트 502, ADU 크기 제한, 킵얼라이브, RTU-behind-TCP 아키텍처용 유닛 ID 게이트웨이 브리징
  • 레지스터 주소 체계: 전통적 5자리 표기(00001 코일, 10001 이산, 30001 입력 레지스터, 40001 보유 레지스터)와 프로토콜 주소 변환 공식
  • IEEE 754 32비트 부동소수점 2레지스터 인코딩: 빅 엔디안(AB CD), 리틀 엔디안(CD AB), 바이트 스왑(BA DC), 워드 스왑(DC BA) 및 실제 계산 예시(25.5 = 0x41CC0000)
  • 예외 응답 코드: 01 잘못된 함수, 02 잘못된 데이터 주소, 03 잘못된 데이터 값, 04 슬레이브 장치 장애, 05 처리 중, 06 장치 사용 중
  • 통신 최적화: 타임아웃 전략(RTU 100-1000ms, TCP 1000ms), 3회 재시도, 폴링 주기(고속 100-500ms, 중속 1-5초, 저속 10-60초), Modbus/TCP 보안(TLS 1.2+, 포트 802)
  • 실전 응용 예시: VFD 인버터 제어 레지스터(운전/정지, 주파수, 전류), 온도 트랜스미터 통신(온도, 센서 상태, 알람), Eastron SDM 전력 미터 레지스터 맵(전압, 전류, 전력, 전력량)

자주 묻는 질문

Modbus RTU와 Modbus TCP의 차이점은 무엇인가요?

Modbus RTU는 RS-485 시리얼 연결로 동작하며, 프레임에 슬레이브 주소, 함수 코드, 데이터, CRC16 오류 검출이 포함됩니다. 보드레이트 9600-38400을 사용하고 프레임 간 3.5 문자시간 간격이 필요합니다. Modbus TCP는 이더넷/IP에서 TCP 포트 502를 사용하며, CRC16 대신 MBAP 헤더(트랜잭션 ID, 프로토콜 ID, 길이, 유닛 ID)를 사용합니다(TCP 자체 오류 검사가 있으므로). TCP는 다수의 동시 클라이언트(보통 8-16개)를 지원하고, 유닛 ID 필드를 통해 게이트웨이 장치로 RTU 슬레이브에 브리징할 수 있습니다.

Modbus 레지스터 주소 범위는 어떻게 작동하나요?

전통적 5자리 Modbus 주소는 4개 범위를 사용합니다: 00001-09999은 코일(디지털 출력, FC01/05/15로 읽기/쓰기), 10001-19999는 이산 입력(디지털 입력, FC02로 읽기 전용), 30001-39999는 입력 레지스터(아날로그 입력, FC04로 읽기 전용), 40001-49999는 보유 레지스터(FC03/06/16으로 읽기/쓰기). 실제 프로토콜 주소는 전통 주소에서 범위 기준값을 뺀 것입니다: 보유 레지스터 40001은 프로토콜 주소 0, 40100은 주소 99에 매핑됩니다.

Modbus RTU의 CRC16은 어떻게 계산하나요?

CRC16 알고리즘은 초기값 0xFFFF로 시작합니다. 메시지의 각 바이트(CRC 제외)에 대해: 바이트를 CRC와 XOR한 후 8번 반복합니다 -- LSB가 1이면 CRC를 우시프트하고 다항식 0xA001과 XOR, LSB가 0이면 단순 우시프트합니다. 최종 CRC는 LSB 우선으로 전송됩니다(하위 바이트 먼저). 예를 들어 프레임 01 03 00 00 00 01은 CRC 84 0A을 생성하여 전체 프레임 01 03 00 00 00 01 84 0A로 전송됩니다.

32비트 부동소수점 값을 두 개의 Modbus 레지스터로 어떻게 처리하나요?

32비트 IEEE 754 부동소수점은 연속 두 개의 16비트 레지스터를 차지합니다. 바이트 순서는 제조사마다 다르며 4가지 일반적인 변형이 있습니다. 25.5(0x41CC0000)를 예로 들면: 빅 엔디안(AB CD)은 Reg[0]에 0x41CC, Reg[1]에 0x0000을 저장합니다. 리틀 엔디안(CD AB)은 레지스터 순서가 반대입니다. 바이트 스왑(BA DC)은 각 레지스터 내부의 바이트를 교환합니다. 워드 스왑(DC BA)은 두 가지를 결합합니다. 올바른 바이트 순서를 확인하려면 장치 설명서를 참조하거나 알려진 값으로 테스트하세요.

Modbus 예외 응답 코드는 무엇을 의미하나요?

슬레이브 장치에서 오류 발생 시 함수 코드에 0x80을 OR한 값(예: FC03 오류는 0x83)과 예외 코드로 응답합니다: 01 잘못된 함수(미지원 함수), 02 잘못된 데이터 주소(레지스터 주소 범위 초과), 03 잘못된 데이터 값(값 범위 초과), 04 슬레이브 장치 장애(내부 장치 오류), 05 처리 중(요청 수락, 처리 진행 중), 06 장치 사용 중(장치 점유 상태, 재시도 필요).

권장 타임아웃 및 폴링 설정은 무엇인가요?

RTU: 응답 대기 100-1000ms(슬레이브 응답 시간에 따라), 프레임 간격 3.5 문자시간(9600bps에서 약 4ms, 19200bps에서 약 2ms), 실패 선언 전 3회 재시도. TCP: 연결 타임아웃 3000ms, 응답 타임아웃 1000ms, 킵얼라이브 30초. 폴링 전략: 프로세스 변수는 100-500ms, 상태/알람은 1-5초, 설정값/누적 카운터는 10-60초. 연속 주소 블록으로 읽고 FC23으로 읽기/쓰기를 결합하세요.

Modbus로 인버터(VFD)를 어떻게 제어하나요?

일반적인 인버터 Modbus 레지스터: 보유 레지스터 40001이 제어워드(0001 = 정방향 운전, 0002 = 역방향, 0003 = 감속정지), 40002가 주파수 설정(0.01Hz 단위, 3000 = 30.00Hz), 40003이 실제 주파수 모니터, 40004가 전류 모니터(0.1A 단위). FC06으로 설정값을 쓰고 FC03으로 모니터 값을 읽습니다. 제조사마다 주소가 다르므로 반드시 인버터 매뉴얼의 레지스터 맵을 확인하세요.

Modbus/TCP 보안은 무엇이며 어떻게 작동하나요?

2018년에 규정된 Modbus/TCP 보안은 포트 802(표준 502 대신)에서 TLS 1.2+ 암호화와 X.509 인증서 기반 인증을 Modbus TCP에 추가합니다. 역할 기반 접근 제어(RBAC)로 클라이언트별 읽기/쓰기 권한을 제한합니다. 보안 확장을 지원하지 않는 기존 장치에는 VPN 터널링(연결 암호화), 방화벽 규칙(허가 IP 접근 제한), VLAN 분리(Modbus 네트워크와 사내 네트워크 격리) 등의 대안을 사용합니다.