RS485 및 Modbus 통신 프로토콜

Aug 29, 2025 메시지를 남겨주세요

RS485 인터페이스 소개

 

RS485는 고속, 장거리 전송, 간섭 저항 및 다중{2}}장치 공유 기능으로 유명한 직렬 통신 인터페이스 표준입니다. 산업 자동화, 스마트 홈, 보안 시스템 및 기타 분야에서 광범위한 응용 분야를 찾습니다. 이 기사에서는 RS485 인터페이스의 원리, 회로 설계, 통신 프로토콜 및 일반적인 문제에 대한 솔루션에 대한 자세한 개요를 제공합니다.


RS485 원리

 

RS485 인터페이스는 두 개의 신호 라인(A 및 B)을 활용하여 전압 레벨 신호를 전달하는 차동 전송을 사용합니다. 신호 크기는 이 두 라인 사이의 전압 차이에 따라 달라집니다. RS485 인터페이스에서 A 및 B 신호 라인은 모두 송신기 또는 수신기로 기능할 수 있습니다. 이 차동 전송 방식을 통해 RS485 인터페이스는 외부 잡음과 간섭을 효과적으로 저항하여 전송 품질을 보장할 수 있습니다.


RS485 응용분야


RS485 인터페이스는 산업 자동화, 스마트 홈, 보안 시스템 등 장거리, 고속,-안정적인 데이터 전송이 필요한 시나리오에서 널리 사용됩니다. 전송거리 측면에서 RS485는 최대 1200미터를 지원하고, 전송속도 측면에서는 최대 10Mbps를 지원한다. 따라서 RS485 인터페이스는 데이터 수집, 규제, 모니터링 및 제어와 관련된 시나리오에 널리 적용할 수 있습니다.

 

 

 

info-638-230

RS485 회로 설계


RS485 인터페이스의 회로 설계에는 전송 거리, 통신 속도, 낙뢰 보호 및 절연과 같은 여러 요소를 고려해야 합니다. 아래에서는 이러한 각 측면에서 RS485 인터페이스의 회로 설계를 소개합니다.

 

전송 거리


차동 전송으로 인해 RS485 인터페이스는 더 긴 전송 거리를 지원합니다. 그러나 실제 응용 분야에서는 전송선 임피던스, 누화, 신호 품질과 같은 요인으로 인해 전송 범위가 제한됩니다. 신호 손실과 왜곡을 최소화하려면 일반적으로 RS485 인터페이스 회로를 설계할 때 전송 거리를 1.2km 이내로 제한하는 것이 좋습니다.


통신 속도

 

RS485 인터페이스는 최대 10Mbps의 통신 속도를 달성할 수 있습니다. 실제 적용에서는 일반적으로 특정 조건에 따라 적절한 통신 속도를 선택합니다. 통신 속도가 높을수록 전송 효율이 높아지지만 인터페이스 회로의 복잡성과 기술적 요구도 높아집니다.


번개 보호


복잡한 산업 환경을 고려할 때 RS485 인터페이스는 낙뢰, 정전기, 서지 등 다양한 장애에 자주 직면합니다. RS485 인터페이스 회로를 보호하려면 낙뢰 보호 조치가 필수적입니다. 조정 가능한 과전압 보호기 및 MOV(금속 산화물 배리스터)와 같은 구성 요소를 사용하여 낙뢰 보호를 달성할 수 있습니다.


격리

 

특정 시나리오에서는 RS485 인터페이스와 다른 회로 간의 절연이 필요합니다. 이는 신호를 분리하기 위해 광커플러나 자기 커플러와 같은 구성 요소를 사용하여 달성할 수 있습니다. 이는 잠재적인 접지 루프와 잡음 간섭을 효과적으로 방지하여 인터페이스 회로의 신뢰성과 안정성을 향상시킵니다.


RS485 통신 프로토콜


실제 애플리케이션에서 RS485 인터페이스에는 프로토콜 사양과 데이터 형식도 필요합니다. 일반적인 RS485 통신 프로토콜에는 Modbus, Profibus 및 CANopen이 포함됩니다. 각 프로토콜은 고유한 특성과 적용 가능한 시나리오를 갖고 있어 특정 요구 사항에 따라 선택할 수 있습니다. 아래에서는 RS485 인터페이스 기반의 프로젝트에서 가장 널리 사용되는 전송 프로토콜인 Modbus RTU 프로토콜을 주로 소개합니다.


Modbus RTU 소개

 

Modbus RTU는 Modbus 프레임워크를 기반으로 하는 직렬 통신 프로토콜 중 하나로 널리 채택되는 산업용 통신 프로토콜입니다. PLC 컨트롤러, 센서 및 액추에이터와 같은 장치 간의 직렬 통신에 주로 사용되는 이 프로토콜은 데이터 교환을 용이하게 합니다. 이 기사에서는 Modbus RTU 프로토콜 내 각 레지스터의 구체적인 의미를 자세히 설명하고, 각 기능 코드에 대한 데이터 전송 및 수신 예를 제공하고, 중요한 CRC 체크섬을 강조합니다.


Modbus RTU 프로토콜 데이터 형식


Modbus RTU 프로토콜은 데이터 전송을 위해 직렬 통신을 사용합니다.


구체적으로:


주소 필드는 통신 중인 슬레이브 장치 주소를 식별하며 0에서 247 사이의 값일 수 있습니다.


기능 코드는 데이터 유형과 읽기/쓰기 방향을 지정하며 일반적으로 1에서 127 사이의 정수입니다.


데이터 필드에는 실제 데이터 내용이 포함됩니다.
체크섬(CRC)은 데이터 패킷의 무결성을 확인합니다.
Modbus RTU 프로토콜 기능 코드
Modbus RTU 프로토콜에서 다양한 기능 코드는 고유한 데이터 유형과 읽기/쓰기 방향을 나타냅니다. 다음은 일반적으로 사용되는 기능 코드와 그 의미입니다.


01: 코일 레지스터 읽기
02: 이산 입력 레지스터 읽기
03: 홀드 레지스터 읽기
04: 입력 레지스터 읽기
05: 단일 코일 레지스터 쓰기
06: 단일 홀드 레지스터 쓰기
15: 여러 코일 레지스터 쓰기
16: 여러 홀드 레지스터 쓰기


Modbus RTU 프로토콜 주소 레지스터


장치 주소와 레지스터 주소는 Modbus RTU 프로토콜의 통신에 중요한 매개변수입니다. 주소 레지스터는 다음 네 가지 유형으로 분류할 수 있습니다.


코일 레지스터(코일 레지스터)

 

코일 레지스터는 부울 값(0 또는 1)을 저장합니다. 기능 코드 01, 05, 15는 코일 레지스터에서 작동하도록 허용됩니다. 각 코일의 상태는 단일 이진 비트로 표시될 수 있습니다.


예를 들어 비트 0x0001의 코일이 0으로 설정되면 이진값은 00000000 00000001.입니다. 코일이 1로 설정되면 이진값은 00000000 00000010.으로 변경됩니다.


개별 입력 레지스터


이산 입력 레지스터는 이진 입력 스위치의 값을 저장하고{0}}읽기 전용이며 해당 기능 코드는 02입니다. 이산 입력 레지스터와 코일 레지스터의 차이점은 스위치가 현재 상태가 아닌 ON 상태인지 여부를 나타낸다는 점입니다.


보유 명부

 

Holding Register는 32비트 정수 변수를 저장합니다. 기능 코드 03, 04, 06, 16은 Holding Register에 대한 읽기/쓰기 작업을 허용합니다. Holding Register 내의 값은 장치 간 데이터 전송을 용이하게 하거나 사용자가 관련 제어 매개변수로 사용자 정의할 수 있습니다.


입력 레지스터

 

입력 레지스터는 32-비트 정수 변수를 저장하고 기능 코드 04를 사용하여 읽기 전용 작업을 지원합니다. 홀딩 레지스터와 유사하게 입력 레지스터의 값은 장치 간에 전송될 수 있지만 사용자가 수정할 수는 없습니다.


Modbus RTU 프로토콜 CRC 확인

 

Modbus RTU 프로토콜 통신의 신뢰성을 보장하기 위해 이 프로토콜은 CRC(Cyclic Redundancy Check) 방법을 사용하여 데이터 패킷의 무결성을 확인합니다. CRC 검사 코드는 전송 및 수신된 데이터 패킷을 기반으로 계산되며 전송 및 수신 측 모두에서 동시에 확인됩니다.


읽기 보류 레지스터(기능 코드: 03)를 예로 들면, 전송 및 수신된 데이터 패킷에 대한 CRC 체크섬의 16진수 값은 각각 0x39 및 0x3E입니다. 특정 전송 및 수신 데이터 패킷은 다음과 같습니다.


송신기-가 보낸 데이터 패킷: 01 03 00 00 00 01 C4 0B
이 패킷에서 처음 6비트(01 03 00 00 00 01)는 Modbus RTU 프로토콜 형식을 나타내고, 마지막 2비트(C4 및 0B)는 CRC 체크섬을 구성합니다.
수신자에서 수신된 패킷: 01 03 02 00 01 39 3E
이 데이터 패킷에서 처음 6비트 01 03 02 00 01 39는 수신된 보유 레지스터 값(2바이트)을 나타내고 마지막 두 비트 3E 및 39는 계산된 CRC 체크섬입니다.


Modbus RTU 프로토콜 전송 예


다음은 장치의 보유 레지스터에서 데이터를 읽는 간단한 Modbus RTU 프로토콜 전송 예입니다.


송신기 송신: 01 03 00 00 00 02 C5 9A
수신자는 다음을 수신합니다: 01 03 04 00 00 00 66 CB


이 예에서는 기능 코드 03을 사용하여 장치 01의 홀드 레지스터를 읽고 레지스터 주소 0x0000의 두 바이트에 액세스합니다. 따라서 수신된 데이터 패킷에는 0x0000 및 0x0000 값, 즉 0x0000 0000가 포함되며 16진수로 0x66CB로 표시됩니다.


결론


이 기사에서는 주로 RS485 인터페이스의 원리, 애플리케이션, 회로 설계, 통신 프로토콜 및 문제 해결 솔루션을 다룹니다. RS485 인터페이스는 산업 자동화, 스마트 홈, 보안 시스템 및 기타 분야에서 광범위하게 사용됩니다. 그러나 인터페이스 회로의 신뢰성과 안정성을 보장하려면 전송 거리, 통신 속도, 낙뢰 보호 및 절연과 같은 요소를 고려해야 합니다. 데이터 형식, 기능 코드, 주소 레지스터 및 CRC 체크섬을 포함하여 Modbus RTU 프로토콜에 대한 기본 지식이 소개됩니다. 실제 응용 분야에서 Modbus RTU 프로토콜은 산업 자동화 제어 시스템 내 장치 간 통신에 광범위하게 사용됩니다. 데이터를 읽을 때 장치 주소, 레지스터 주소 및 기능 코드 선택에 특히 주의해야 합니다.

문의 보내기

whatsapp

전화

이메일

문의