MODBUS

RS-485 및 Arduino – 빠른 입문서

기하 2022. 2. 24. 11:20

https://www.codrey.com/learn/rs-485-arduino-quick-primer/

 

RS-485는 버스 토폴로지bus topology 가 있는 표준 직렬 프로토콜로
여러 장치를 매우 저렴하고 즐겁게 연결할 수 있습니다. 
다음은 Arduino + RS-485 프로젝트를 시작하는 방법에 대해 설명합니다. 

RS-485?

먼저 TIA-485(-A) 또는 EIA-485라고도 하는 RS-485는 통신 프로토콜을 정의하지 않습니다.
이는 단순히 전기 인터페이스이지만 매우 친숙한 RS-232 와 매우 유사합니다 . 

그러나 RS-485는 거리 제한을 제거하여 RS-232 를 개선하고
두 개 이상의 장치가 단일 회선을 사용하여 통신할 수 있도록
하지만 장치 간에 더 많은 와이어를 사용하는 비용이 듭니다.

 

RS-485 버스가 필요한 데에는 여러 가지 이유가 있습니다. 
여러 장치가 서로 멀리 떨어져 설치되어 있다고 상상해 보십시오. 
이러한 경우 케이블이 너무 길고 신호가 감쇠되며
데이터를 효율적으로 처리할 수 없기 때문에 RS-232(또는 TTL 직렬)가 실용적이지 않습니다. 
그러나 RS-485 버스를 사용하면
최대 1200미터의 케이블 길이를 사용할 수 있습니다(데이터 전송 속도 100kbit/s).

RS-485 버스는 일반적으로 두 개의 와이어(+/-)를 사용하며 이 구성(차동 와이어 커플)을 사용하면 반이중 모드에서 사용할 수 있습니다. 4선식 구성을 사용하면 RS-485 버스가 전이중 모드에서 작동할 수 있지만 이러한 접근 방식에는 고유한 한계가 있습니다.

이제 우리는 RS-485( https://en.wikipedia.org/wiki/RS-485 )가 차동 신호( https://en.wikipedia.org/wiki/Differential_signaling )를 사용하는 반이중 통신 전기 인터페이스라는 것을 알고 있습니다. ) 한 쌍의 전선을 통해. 또한 동일한 와이어 쌍에 연결된 여러 노드가 있는 버스 토폴로지를 허용합니다(한 번에 하나의 노드만 버스를 구동할 수 있고 다른 노드는 수신 모드에 있어야 함).

이때 많은 응용 프로그램이 RS-485 신호 레벨을 사용하지만 데이터 전송의 속도, 형식 및 프로토콜은 RS-485에서 지정되지 않습니다. 게다가 RS-485는 커넥터나 핀아웃을 지정하지 않습니다. 회로는 나사 단자 또는 다른 유형의 커넥터에서 종단될 수 있습니다.

RS-485 + 아두이노?

Arduino는 내장 UART 를 통한 직렬 통신 을 지원하지만 RS-485가 아닌 TTL을 사용합니다. 두 신호 유형 모두 직렬 통신 을 사용하지만 TTL은 단일 종단인 반면 RS-485는 차동 신호에 의존합니다. 따라서 Arduino가 RS-485 네트워크를 통해 통신할 수 있도록 하려면 TTL을 RS-485로 변환하는 추가 장치를 사용해야 합니다.

이를 수행하는 여러 IC가 시장에 나와 있으며 가장 쉽고 저렴한 IC가 MAX485입니다( https://datasheets.maximintegrated.com/en/ds/MAX1487-MAX491.pdf ).

MAX485 IC는 RS-485 및 RS-422 사양을 충족하는 반이중 송수신기입니다. 이 IC는 일반적으로 DIP-8 및 SOP-8 패키지로 제공되며 최대 5Mbps 저부하에서 RS-485 및 RS-422 프로토콜의 요구 사항을 충족합니다. 아래는 HTC 데이터시트(2019년 4월 _ R1.1) 에서 직접 가져온 핀 구성, 논리 다이어그램 및 진리표 입니다.

MAX485 데이터 캡처

핀 설명은 다음과 같습니다.

MAX485 핀 데이터

MAX485 TTL - RS-485 모듈

Arduino는 일반적으로 진입 장벽이 낮기 때문에 프로토타이핑을 위한 취미 및 교육 시장에 국한됩니다. MAX485 칩을 사용할 수 있는 로우 프로파일 프로젝트가 있는 경우 MAX485 브레이크아웃 보드 또는 모듈을 사용하는 것이 더 좋습니다. Arduino 보드(및 대부분의 다른 마이크로컨트롤러)와 함께 비교적 저렴하고 사용하기 쉽기 때문입니다. 나는 이미 이웃 웹 스토어에서 믿을 수 없을 정도로 저렴한 가격으로 몇 가지 모듈을 얻었습니다!


"MAX485 TTL-RS-485 인터페이스 모듈"은 마이크로컨트롤러가 전기적으로 잡음이 많은 환경에서도 최대 4000피트의 장거리에서 강력한 장거리 직렬 통신을 위해 RS-485 차동 신호를 사용할 수 있도록 합니다. 모듈에는 2개의 4핀 헤더와 20선 나사 단자대가 있습니다.

 

이제 모듈 연결:

1 x 4 헤더(왼쪽)

  • RO = 수신기 출력
  • RE = 수신기 활성화 – 활성 LOW
  • DE = 드라이버 활성화 – 활성 HIGH
  • DI = 입력 드라이버

1 x 4 헤더(오른쪽)

  • VCC = 5V
  • B = 데이터 'B' 반전 라인
  • A = 데이터 'A' 반전되지 않은 라인
  • 접지 = 접지

1 x 2 스크류 터미널 블록

  • B = 데이터 'B' 반전 라인
  • A = 데이터 'A' 반전되지 않은 라인

이 모듈은 데이터 라인에 4개의 10K 풀업 저항(R1-R4)을 제공합니다. 또한 A/B 차동 라인에는 2개의 20K 저항(R5-R6)이 있습니다. 마지막으로 단일 120Ω 저항 이 있습니다. 이 "종단" 저항기(R7)는 반사를 방지하기 위해 케이블의 각 끝에 있는 A/B 차동 라인 사이에 있습니다.

이 모듈로 작업할 때 가장 까다로운 부분은 DE/RE 라인이 올바른 상태로 유지되는지 확인하는 것입니다.

아래에서 기본 회로도를 볼 수 있습니다.

이 모듈에서 양수 라인은 A(VCC로 당겨짐)라고 하고 음수선은 B(GND로 당겨짐)라고 합니다. 또한 120 종단 저항 은 일반적으로 이 매우 간단한 모듈 쌍을 사용하여 점대점 연결을 구현할 수 있으므로 좋은 포함입니다. 그러나 일부 프로젝트에서는 제거해야 할 수도 있습니다. 예를 들어 모듈이 버스 중간에 있는 경우 실제로 중간 노드이므로 종단 저항이 없어야 합니다(그러나 라인의 두 끝에 있는 모듈은 종단 저항을 유지해야 함).

개요 – RS232, RS423, RS422 및 RS485

라인 드라이버와 수신기는 일반적으로 네트워크의 두 개 이상의 포인트 노드 간에 데이터를 교환하는 데 사용됩니다.

노드 간의 전자 데이터 통신은 일반적으로 단일 종단 및 차동의 두 가지 범주로 나뉩니다. 그러나 높은 데이터 속도로(또는 장거리에서) 통신할 때 단일 종단 방식은 종종 부적절합니다. 차동 신호는 네트워크에서 공통 모드 전압으로 나타날 수 있는 유도 노이즈 신호 및 접지 이동의 영향을 무효화하는 데 도움이 될 수 있기 때문에 차동 데이터 전송은 대부분의 애플리케이션에서 우수한 성능을 제공합니다.

 

RS232, RS423, RS422 및 RS485에 대한 빠른 참조 – http://www.rs485.com/rs485spec.html

소개 – 모드버스

Modbus는 원래 Modicon에서 PLC(프로그래밍 가능 논리 컨트롤러)와 함께 사용하기 위해 1979년에 발행한 데이터 통신 프로토콜입니다.

Modbus는  사실상 의  표준 통신 프로토콜이 되었으며 이제 산업용 전자 장치를 연결하는 일반적으로 사용 가능한 수단입니다. Modbus 프로토콜은 문자 직렬 통신 회선, 이더넷 또는 인터넷 프로토콜 제품군을 전송 계층으로 사용하며, SCADA(Supervisory Control and Data Acquisition)의 RTU(원격 터미널 장치)와 플랜트/시스템 감독 컴퓨터를 연결하는 데 자주 사용됩니다. 전력 산업의 시스템.

Modbus에 대한 추가 정보 https://en.wikipedia.org/wiki/Modbus

Modbus 프로토콜 설명 https://www.modbustools.com/modbus.html

Arduino는 MODBUS 네트워크에서 예산 장치가 될 수 있으며 MAX485 IC 또는 MAX485 모듈은 Arduino에서 MODBUS를 실험하기 위한 작은 진입 가격으로 충분히 저렴합니다. 빠른 테스트를 위해 MAX485(SOP-8) 브레이크아웃 보드도 만들었습니다(아래 참조).

다음 것은…

이제 LED 조명 시스템의 차동 통신이 작동하는 방식을 파헤치고 있습니다. 그리고, 내가 원하는 것에 적응할 수 있는 것을 찾을 수 없었기 때문에 보급형 Pixel LED 컨트롤러를 구축하기 위한 몇 가지 아이디어를 얻고 싶습니다. 다음 포스트에서는 RS-485 + Arduino Pixel LED 시스템을 직접 구성한 방법을 보여드릴 것입니다!

마지막으로 저는 아직 MAX485를 사용하여 실용적인 프로젝트를 구축하지 못했습니다(그러나 이것으로 많은 것을 할 수 있습니다). 바라건대, 나는 당신이 그것을 찌를 수 있도록 충분히 설명했습니다. 정말 막혔다면 아래 댓글에 소리를 지르세요.

'MODBUS' 카테고리의 다른 글

RS-485 MODBUS Serial Communication using Arduino UNO as Slave  (0) 2022.03.14
USB-DMX 인터페이스 어댑터/변환기(v1.0)  (0) 2022.02.24
DFROBOT RS485 Sensor Node V  (0) 2022.02.06
Modbus TCP/IP  (0) 2021.11.12
완전한 Modbus 가이드  (0) 2021.09.06