수질 프로세스 분석과 계측 <30>

[연재] 로터스프로슈밍매니지먼트 대표 길주형
김한결 기자 | eco@ecomedia.co.kr | 입력 2020-09-01 13:56:51
  • 글자크기
  • -
  • +
  • 인쇄

▲ 길주형 로터스프로슈밍매니지먼트 대표

[통신]
[스마트센서의 모드버스 RTU 프로토콜]

지금까지 센서와 계측기 간의 기본적인 이론을 배웠다. 여기서는 스마트센서에서 출력되는 통신을 다루며 MODBUS-RTU protocol을 기반으로 간단히 설명하겠다. 따라서 이것은 스마트센서를 사용하는 소프트웨어 프로그래머에게 MODBUS-RTU protocol에 대한 정보를 제공할 목적으로 작성됐다.

 

모드버스 명령어 구조
본 문서의 데이터 포맷은:
⦁이진수 – 접미사 B를 사용해 표시함. 예시: 10001B
⦁십진수 – 별도의 접미사가 없음. 예시: 256
⦁16진수 – 접두사 0x를 사용해 표시함. 예시: 0x2A
⦁ASCII 부호 또는 문자열 –따옴표를 사용해 표시함. 예시: ‘YL1014010022’

명령어 구조
모드버스는 통신 레이어에 대해 투명성이 있는 간단한 프로토콜 데이터 유닛(protocol data unit, PDU)을 정의한다.

 

▲ 모드버스 프로토콜 데이터 유닛

 

특정 버스나 네트워크상의 모드버스 프로토콜 매핑은 프로토콜 데이터 유닛에 몇몇 추가 필드를 도입한다. 모드버스 트랜잭션을 개시하는 클라이언트가 모드버스 PDU를 만든 다음, 적절한 통신 PDU를 만들기 위해 필드를 추가한다.

 

▲ 시리얼 통신 모드버스 구조

 

모드버스 시리얼 버스에서, 주소 필드는 슬레이브 장치 주소만을 포함한다.

일례:

⦁슬레이브 주소 범위는: 1…247
⦁마스터 장치는 대상 슬레이브 주소와 함께 “요청 프레임”을 보낸다. 
⦁슬레이브 장치는 응답 시 자신의 주소를 “리스폰스 프레임”에 넣음으로써 마스터 장치로
해금 리스폰스가 어디서 왔는지 알 수 있도록 해야 한다.
⦁함수 코드는 작업 형태를 나타낸다.
⦁CRC는 리던던시 확인의 결과다.

모드버스 RTU 트랜스미션 모드
장치가 모드버스상에서 RTU(remote terminal unit) 모드를 사용해 통신할 때, 각각의 8비트 바이트 메시지는 두 개의 4비트 16진수 문자를 포함한다. 문자 밀도가 높다는 점은 RTU 모드의 주요 장점으로 꼽는다. 이로 인해 RTU 모드는 보 레이트 대비 처리량에 있어 ASCII 모드보다 우수한 특성을 보인다. 각각의 RTU 메시지는 반드시 연속 문자열로 전송돼야 한다.

각 바이트에 대한 RTU 모드 포맷(11 비트):
⦁인코딩 시스템 8 bit binary
각각의 8비트 패킷은 4비트 16진수 문자를 포함(0-9, A-F)
⦁바이트당 비트: 1 스타트 비트

                      8 데이터 비트, 최하위 비트 

                      첫 번째 노 패리티 체크
                      2 스탑비트
⦁보 레이트: 9600bps

문자의 시리얼 전송:
⦁모든 문자 혹은 바이트는 아래 시퀀스에 따라(좌에서 우로)보내진다.
⦁최하위 비트(Least Significant Bit, LSB)
⦁최상위 비트(MostSignificantBit, MSB)

 

▲ RTU 모드 비트 시퀀스

 

CRC 필드 구조: 리던던시 체크(CRC16)

 

▲ RTU 메시지 프레임 구조(모드버스 프레임의 최고 크기는 256바이트)

 

[모드버스 RTU 메시지 프레임]
RTU 모드에서, 메시지 프레임 간에 최소 3.5 문자 길이의 유휴 인터벌이 삽입돼 서로가 분리돼야 하며 위의 유휴 인터벌을 이하 t3.5로 지칭한다.

 

▲ 메시지 프레임

 

전체 메시지 프레임은 반드시 연속 문자열로 보내야 한다. 두 문자 간 유휴 시간이 1.5 문자보다 길면, 수신 측이 메시지 프레임을 불완전한 것으로 간주해 폐기하게 된다.

 

▲ 프레임의 전송

 

모드버스 RTU CRC
RTU 모드에서, 에러 체크 필드는 순환 중복 검사(cyclical redundant checking, CRC) 방식을 바탕으로 한다. CRC 필드는 패리티 검사 비트의 존재 여부와 무관하게 모드버스 메시지의 전체 내용을 검사하며 CRC16 검사 방식을 사용한다. CRC 결과는 8비트 바이트 두 개로 이루어진 16비트 값인데, 순서상으로 하위 8비트 바이트가 먼저이고 상위 8비트 바이트가 나중이다.

[MODBUS-RTU protocol 적용 일례]
다음은 실제로 스마트 센서를 기준으로 적용 일례를 설명한다. 여기서 표준 모드버스 정의에 기반해, 메시지 프레임은 t3.5 유휴 인터벌로 시작해, 이와 유사하게, t3.5 유휴 인터벌로 끝난다. 장치 주소 및 함수 코드는 둘 다 8비트 바이트다. 데이터 문자열은 n*8비트를 가지며, 레지스터 시작/끝 주소와 읽기/쓰기 작업용 레지스터 개수에 대한 정보를 담고 있다. CRC 필드는 16비트 길이다.

 

▲ 스마트 센서의 메시지 프레임 구조 일례

 

스마트 센서의 모드버스 RTU 함수 코드
스마트 탁도 센서의 모드버스 함수는 두 가지다.

코드: 0x03: 레지스터 읽기
0x10: 레지스터 쓰기

 

<다음 호에서 계속>

[저작권자ⓒ 환경미디어. 무단전재-재배포 금지]

  • 카카오톡 보내기
  • 카카오스토리 보내기
  • 글자크기
  • +
  • -
  • 인쇄
  • 내용복사

헤드라인

섹션별 최신기사

많이 본 기사

오늘의 핫 이슈

ECO 뉴스

more

환경신문고

more

HOT포토