728x90
반응형

RS-485 Modbus RTU 통신

  1. RS-485: 차동 신호를 사용하는 직렬 통신 표준으로, 노이즈에 강하고 장거리 통신이 가능합니다.
  2. Modbus: 산업용 통신 프로토콜로, 마스터-슬레이브 구조를 가집니다.
  3. RTU: Remote Terminal Unit의 약자로, 바이너리 데이터 전송 방식을 사용합니다.
  4. 프레임 구조: [슬레이브 주소] [기능 코드] [데이터] [CRC 체크섬]

주어진 데이터 설명: [TX]는 전송(Transmit), [RX]는 수신(Receive)을 나타냅니다.

예를 들어, 첫 번째 전송 프레임을 분석해보면: [TX] 01 03 00 01 00 70 15 EE

  • 01: 슬레이브 주소 (1번 장치)
  • 03: 기능 코드 (레지스터 읽기)
  • 00 01: 시작 레지스터 주소 (온도)
  • 00 70: 읽을 레지스터 개수 (112개)
  • 15 EE: CRC 체크섬

수신 프레임: [RX] 01 03 02 00 01 79 84

  • 01: 슬레이브 주소
  • 03: 기능 코드
  • 02: 바이트 수
  • 00 01: 데이터 (값: 1)
  • 79 84: CRC 체크섬

이 통신에서는 마스터가 슬레이브(온습도계)에게 데이터를 요청하고, 슬레이브가 응답하는 과정을 보여줍니다.

RS-485 Modbus RTU 통신에서 추가로 알아야 할 내용들:

  1. 통신 속도: 일반적으로 9600, 19200, 38400, 57600, 115200 bps 등이 사용됩니다. 마스터와 슬레이브 간 속도가 일치해야 합니다.
  2. 데이터 형식: 8비트 데이터, 노 패리티, 1 스톱 비트가 주로 사용됩니다.
  3. 기능 코드: 다양한 기능 코드가 있습니다. 예를 들어:
    • 01: 코일 상태 읽기
    • 02: 입력 상태 읽기
    • 03: 보유 레지스터 읽기
    • 04: 입력 레지스터 읽기
    • 05: 단일 코일 쓰기
    • 06: 단일 레지스터 쓰기
    • 15: 다중 코일 쓰기
    • 16: 다중 레지스터 쓰기
  4. 에러 처리: 슬레이브가 요청을 처리할 수 없는 경우, 에러 응답을 보냅니다. 이때 기능 코드에 0x80을 더한 값을 사용합니다.
  5. 타이밍: 프레임 간 간격, 문자 간 간격 등의 타이밍 규칙이 있습니다. 이를 준수하지 않으면 통신 오류가 발생할 수 있습니다.
  6. 종단 저항: RS-485 라인의 양 끝에 120Ω 저항을 연결하여 신호 반사를 방지합니다.
  7. 주소 범위: Modbus에서는 1부터 247까지의 주소를 사용할 수 있습니다. 0은 브로드캐스트 주소로 사용됩니다.
  8. 데이터 모델: Modbus는 4가지 기본 데이터 타입을 사용합니다 - 코일, 이산 입력, 입력 레지스터, 보유 레지스터.

 

 

[TX] 02 03 00 02 00 01 25 F9 [RX] 02 03 02 01 F7 BC 52

02 : 기계에 설정한 번호

03 : 3번의 기능(Read) 수행

00 02 : 주소2번 (습도)

00 01 : 읽을 레지스터(메모리 위치) 수

25 F9 : CRC

02 : 기계 번호

03 : 3번 기능

02 : 바이트수

01 F3 : 데이터 (01F7 → 503 → 50.3% 습도)

BC 52 : CRC


[TX] 02 06 00 0D 00 01
[RX] 02 06 00 0D 00 01

02(장치번호2) 06(쓰기기능) 00 0D(13주소, Slave address) 00 01 (값1)

  • 현재 주소가 2인 장치에
  • 06 단일 레지스터 쓰기 명령을 사용하여
  • 레지스터 주소 13(000D) - 주소(1~247)에
  • 값 1을 써라.
728x90
반응형

+ Recent posts