RS486 Modbus RTU

  • RS485: RS485는 Recommended Standard 485의 약자로, 산업용 통신 표준입니다. 이 표준은 다중 드롭 네트워크에서 최대 32개의 장치가 하나의 버스에서 통신할 수 있도록 합니다. (N:N 통신)
  • Modbus: Modbus는 산업용 전자 장치 간의 통신을 위한 프로토콜입니다. Modbus는 마스터-슬레이브 구조를 사용하며, 데이터 전송을 위해 다양한 물리적 매체(RS485, RS232, TCP/IP 등)를 지원합니다
  • RTU (Remote Terminal Unit): RTU는 Modbus 프로토콜의 전송 모드 중 하나로, Remote Terminal Unit의 약자입니다. RTU 모드는 이진수 형식으로 데이터를 전송하며, 주로 RS485와 같은 직렬 통신에서 사용.
  • TCP/IP (Transmission Control Protocol/Internet Protocol): TCP/IP는 인터넷과 같은 네트워크에서 데이터를 전송하기 위한 프로토콜 스택입니다. Modbus TCP/IP는 이 프로토콜 스택을 사용하여 이더넷 네트워크를 통해 데이터를 전송합니다.

RTU와 TCP/IP의 차이점

  • 물리적 계층
    • RTU는 RS485 또는 RS232와 같은 직렬 통신
    • TCP/IP는 이더넷 네트워크
  • 데이터 전송 형식
    • RTU는 데이터를 이진 형식으로 전송
    • TCP/IP는 데이터를 ASCII 형식으로 인코딩하여 전송
  • 속도와 유연성
    • RTU는 구현이 더 간단하고 비용이 적음
    • TCP/IP는 기존의 이더넷 네트워크를 사용하기 때문에 더 빠르고 유연
  • 주소 지정
    • RTU는 각 장치에 노드 번호를 할당
    • TCP/IP는 각 장치에 IP 주소를 할당

TCP/IP


패킷 전송 방식: 데이터는 패킷이라는 작은 조각으로 나뉘어 전송되며, 네트워크 경로를 효율적으로 이용합니다. 이 때문에 데이터 충돌이 최소화되고, 각 패킷이 최적의 경로를 선택해 전달될 수 있습니다.

에러 제어: TCP/IP는 데이터 전송 중 발생할 수 있는 오류를 감지하고 수정하는 기능을 내장하고 있어, 데이터 손실이 거의 없습니다.

라우팅 기능: 네트워크 내 여러 경로를 통해 데이터를 전송할 수 있어, 특정 경로에 문제가 생겨도 대체 경로로 데이터를 전송할 수 있습니다. 이는 네트워크 안정성을 높이는 데 크게 기여합니다.

멀티태스킹: 여러 장치가 동시에 통신할 수 있는 능력이 뛰어나며, 대규모 데이터 전송 환경에 최적화되어 있습니다. 예를 들어, 수백 대의 센서가 데이터를 동시에 전송하더라도 네트워크가 효율적으로 처리할 수 있습니다.

확장성: 새로운 장치를 네트워크에 쉽게 추가할 수 있어, 네트워크의 크기를 유연하게 확장할 수 있습니다.

 

RTU

직렬 통신 방식: RTU는 직렬 통신 방식으로 데이터를 전송하는데, 이는 한 번에 하나의 데이터 스트림만 전송할 수 있어, 대규모 데이터 전송에 비효율적입니다.

낮은 처리 능력: 직렬 통신은 TCP/IP에 비해 데이터 전송 속도가 느립니다. 이는 많은 양의 데이터를 빠르게 전송해야 하는 환경에서는 큰 단점이 됩니다.

오류 처리의 한계: RTU는 기본적으로 오류 감지 및 수정 기능이 부족하며, 수동으로 오류를 처리해야 하는 경우가 많아 데이터 신뢰성이 떨어질 수 있습니다.

확장성 부족: 네트워크에 새로운 장치를 추가하는 과정이 복잡하고, 물리적인 배선 변경이 필요할 수 있습니다. 이는 대규모 네트워크에서는 큰 문제가 될 수 있습니다.

이러한 이유들 때문에 TCP/IP가 대규모 데이터 관리와 네트워크 확장성에서 더 유리하며,

RTU는 소규모 단순 통신 환경에 더 적합합니다.

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