Modbus 프로토콜: 프로그래밍 가능 논리 컨트롤러(PLC)를 사용한 통신을 위해 Modicon Corporation(현 Schneider Electric)이 1979년에 발표한 직렬 통신 프로토콜입니다. Modbus는 산업 현장의 통신 프로토콜에 대한 산업 표준(사실상)이 되었으며, 현재는 산업 전자 장비 간의 일반적으로 사용되는 연결 방법입니다.
의사소통의 구체적인 설명: 인간의 의사소통 과정과 유사하게,의사소통 역할(마스터-슬레이브, 클라이언트-서버...),통신 매체(직렬, 이더넷, 무선...),동의서(modbus, S7, MC...) 세 가지 요소.
네트워크 프로토콜의 세 가지 요소:문법(데이터 및 제어 정보의 구조 또는 형식)의미론(어떤 종류의 제어 정보가 전송되는지), 동기화(이벤트 구현 순서, 일치 속도 등에 대한 자세한 설명).
ModbusRTU 프로토콜 소개
문법 구조:
주소 코드: 슬레이브 장치를 식별하는 데 사용되며 범위는 0~247입니다. 여기서 0은 브로드캐스트 주소이며 모든 슬레이브 장치는 이 주소에서 데이터를 수신합니다.
기능 코드: 레지스터 값 읽기, 단일 레지스터 쓰기 등과 같이 수행할 작업 유형을 나타내는 데 사용됩니다.
데이터: 레지스터 주소, 데이터 값 및 기타 정보가 포함됩니다. 기능 코드에 따라 데이터의 내용과 길이가 달라집니다.
CRC 체크 코드: 데이터 전송 중 오류 발생 여부를 감지하는 데 사용됩니다. 데이터 프레임 끝에 2바이트의 CRC 체크 코드를 추가합니다. 수신자는 데이터를 수신한 후 CRC 체크 코드를 다시 계산하여 수신된 CRC 체크 코드와 비교합니다. 전송 과정에서 오류가 발생했습니다.
기능 코드:
기능 코드 01: 코일 상태 읽기(Read Coils), 원격 장치에서 1~2000개의 코일 상태를 지속적으로 읽는 데 사용됩니다.
기능 코드 02: 스위치 입력 그룹의 현재 상태 ON/OFF를 얻기 위해 입력 상태 읽기(Read Inputs).
기능 코드 03: 하나 이상의 홀딩 레지스터에서 현재 이진 값을 얻기 위해 홀딩 레지스터를 읽습니다(홀딩 레지스터 읽기).
기능 코드 04: 입력 레지스터를 읽어(입력 레지스터 읽기) 하나 이상의 입력 레지스터에서 현재 이진 값을 얻습니다.
기능 코드 05: 강제 단일 코일, 논리 코일의 온-오프 상태를 강제합니다.
기능 코드 06: 단일 레지스터 사전 설정, 특정 이진 값을 보유 레지스터에 로드합니다.
기능 코드 15: 다중 코일 강제, 일련의 연속 논리 코일을 강제로 켜고 끕니다.
기능 코드 16: 다중 레지스터 사전 설정(Preset Multiple Registers), 특정 이진 값을 일련의 연속 보유 레지스터에 로드합니다.
예: 슬레이브(01)의 커튼 개방 정도 읽기(03)(두 번째부터 읽기: 00 02 한 비트 읽기 00 01 CRC 검사 25 CA):