모드버스 프로토콜

RS485 위에 동작하도록 만들어진 것이 모드버스 프로토콜

RS485

  • 시리얼 통신 중 하나
  • 선 하나에 0101011 등 한번에 1비트만 보낸다

설정해야하는 것

  • 보통의 설정값 → bps: 9600, 데이터길이: 8. 패리티: N, 정지비트: 1
  • bps(= Baud Rate)
    • bit per second: 통신속도
    • 어떤 시간간격으로 읽는지에 따라 데이터가 달라질수있으니 속도가 중요하다
    • 보통 9600 또는 38400으로 설정: 1초에 9600개로 나눠서 보냄
      • 이미 읽을때 시간을 정해진 갯수로 나눠서 읽는다
      • 따라서 이 신호가 적절하게 설정되어있지않으면 데이터를 읽어올 수 없음
  • 데이터 길이
    • 대부분 8로 설정 → 8비트가 1바이트니까
    • 나는 한번 보낼때 8비트씩 보낸다 라는 뜻
    • 이걸 정해야 받는 쪽에서도 8비트가 전송될때까지 기다릴 수 있음
    • 이게 안맞으면 통신이 안된다~
  • 흐름제어
    • Flow Control, TRUE 또는 FALSE
    • 패킷을 서로 주고받을때 본인이 할당한 버퍼(패킷을 임시 저장하는 공간)가 존재.
    • 그 버퍼가 꽉차면 그만보내라는 신호를 보낼 필요가 있음.
    • 그걸 설정하는 것이 바로 흐름제어임
    • 보통은 설정하지 않음 → 이걸쓰려면 별도의 신호선 필요. 그래서 거의 안 씀
  • 패리티
    • 에러검출을 위한 존재
    • N, E, O 세가지 종류가 있으나, 보통 안써서 N으로 설정함 → 따라서 8N 이런식으로 씀
      • N(미사용), E(짝수), O(홀수)
      • 통신하고자 하는 장치와 동일하게 설정해놔야함
  • 정지비트
    • 1 또는 2로 설정 가능, 주로 1로 설정함
    • 정해진 데이터 길이만큼 보낸 뒤 정지비트를 1비트로 보낼지, 2비트로 보낼지 설정

  • 컴퓨터 사이에 통신을 위해 물리적인 경로가 필요(유무선 관계X)한 것이 통신
    • 선 2개로 연결하는 것: RS485
    • 8가닥으로 연결하는 것: 이더넷
    • Wifi모듈 주파수 5G 등 무선 주파수

물리적인 경로에 약속이 필요

  • 전선을 몇가닥 쓸거냐, 가닥수
  • 어케 포트를 만들어서 단자의 규격
  • 또는 주파수 약속
  • 전압 인식에 대한 약속

멀티드롭

  • 여러대의 단말을 하나의 통신회선에 연결하는 방식
  • 문제점: 제어용컴퓨터의 외침이 모든 단말기에 연결되어 특정 단말기와의 통신이 어려움
  • 위 문제점을 해결하기 위해 RS485 통신 사용이 가능함
  • 하지만 이런 문제점 해결은 코드로, 응용sw의 영역임

멀티드롭 이미지

 

위에서 언급한 RS485 통신규격 등을 맞추기 어려운 경우 USB 컨버팅 모듈을 사서 쓸 수 있음

  • RS485 통신선을 모듈에 연결하면 USB에서 컨버팅을 해주고 미니PC에 USB를 연결하면 된다.

이러한 문제점을 고려해서 프로토콜을 만들어주는 것이 바로 모드버스 프로토콜이다~!!!

모드버스 패킷

  • S-ID, Slave, 국번: 특정 단말기만 들을수있도록 지정하는 패킷

 

사담

업무상 필요해서 급하게 공부하게 된 모드버스 프로토콜과 RS485통신 개념인데, 확실히 개념을 알고 나니 그동안 다른 담당자가 정리해준 내용에 대해 정확하게 이해하게 됐다. 담당자의 퇴사로 인해 직접 RS485를 구현해야하는 상황이 돼서 걱정이 많았는데, 공부할 시간을 가지고 천천히 접근하니 할수있겠는데 하는 생각이 들기도 했다. 간단한 내용이지만, 업무에 도움이 되는 기본적인 내용이라 블로그에 정리해봤다. 화이팅..!

+ Recent posts