Innovate With Data

데이터로 더 큰 가치를 제공합니다.

공장 자동화/통신

MODBUS 통신 알아보자 (6) - MODBUS의 PDU & ADU - 하편

데이터위자드 2024. 4. 14. 22:55
반응형

MODBUS 통신 알아보자 (6) - MODBUS의 PDU & ADU - 하편

마지막으로 MODBUS 통신의 PDU와 ADU에 대해서 알아보겠습니다.

 
 
 안녕하세요? 데이터위자드입니다. 
 
 이번 포스팅은 중편까지 이어진 MODBUS의  PDU와 ADU에 개념에 대한 내용에 이어서 마지막으로 ADU에 대해서 더 자세히 알아보는 시간을 갖도록 하겠습니다.

 

 

(*이전 모드버스 PDU와 ADU에 대한 내용은 아래 내용 참고하시기 바랍니다.)

 

MODBUS 통신 알아보자 (4) - MODBUS의 PDU & ADU - 상편

 

MODBUS 통신 알아보자 (4) - MODBUS의 PDU & ADU - 상편

MODBUS 통신에서 나오는 PDU와 ADU에 대해서 알아보겠습니다. 안녕하세요? 데이터위자드입니다. 이번 포스팅도 앞서 이야기에 이어서 모드버스에 대해서 알아보는 시간을 가져보겠습니다. 모드버

datawizard.co.kr

MODBUS 통신 알아보자 (5) - MODBUS의 PDU & ADU - 중편

 

MODBUS 통신 알아보자 (5) - MODBUS의 PDU & ADU - 중편

지난 상편에 이어 MODBUS 통신에서 나오는 PDU와 ADU에 대해서 더 알아보겠습니다. 안녕하세요? 데이터위자드입니다. 이번 포스팅은 지난 MODBUS 통신의 PDU와 ADU에 대한 내용(상편)에 이어서 PDU와 ADU

datawizard.co.kr

 

 

Modbus 통신의 Apprication Data Unit(이하 ADU)에 대해서

 

 

바로 앞 포스팅에서 모드버스 통신에서 PDU의 기능과 3가지 Type에 대해서도 말씀드렸죠.

 

Client 와 Server의 상호 통신 개념도@Datawizard.co.kr
Client 와 Server의 상호 통신 개념도@Datawizard.co.kr

 

 

 

그리고, Client와 Server 상호 간의 트랜잭션은 다음의 과정을 거치게 된다고 했고요.

 

 

  1. Client는 PDU(Function code + data)를 담아 Server에 요청(Request)한다.

  2. Server는 Client의 요청을 수신한다. PDU의 Function code를 파싱 하고, PDU의 Data의 address를 참조하여 server 내 데이터를 취급(Handling)한다. 

  3. Server는 Client의 PDU의 Function code를 바탕으로 요청을 수행하고,  Client 측에 PDU(Function code + Data)를 응답(Response)한다. 이때 요청이 정상적으로 에러 없이 취급(Handling)되면 정상적인 데이터를 응답하고, 만약 오류가 있다면, 예외처리 PDU(Exception Function code + Exception code)를 응답한다.

  4. Client는 Server로부터 응답을 수신하고 트랜잭션은 종료된다.

 

위에 열거한 일련의 과정 중에서 PDU는 각기 다른 3가지 타입으로 진행됩니다.

 

 

  • MODBUS Request PDU, mb_req_pdu

  • MODBUS Response PDU, mb_rsp_pdu

  • MODBUS Exception Response PDU, mb_excep_rsp_pdu

 

 

그렇다면 궁금해집니다.

 

ADU는 무슨 기능을 하는 것이지?

 

 

이전 모드버스 PDU & ADU 포스팅에서, ADU는 다음과 같은 식으로 표현 가능하다고 말씀드렸습니다.

 

 

ADU = Additional address + PDU + error check 

PDU = Function code + data

따라서,

ADU = Additional address + Function code + data + error check 

 

 

 

위 식에서 유추해 보건대, ADU는 결국,

 

  • Addtional Address

  • Error check
     

 

두 가지 기능을 담당하고 볼 수 있습니다.

 

 

먼저 Addtional Address에 대해서 살펴보겠습니다.

 

 

Addtional Address란?

 

 

Addtional Address라는 단어에서 저희가 한 가지 주의해야 할 사항이 있습니다. 바로 Address라는 단어를 유의해야 하는데요.

 

앞서 모드버스 예제를 살펴보면서 Address라는 단어가 나왔던 거를 기억하실지 모르겠습니다.

 

각 Modbus device에서 고유하게 할당된 주소값이 있고 각 주소에는 미리 약속된 데이터가 저장되기로 구성된다고 하였습니다. 보통 Address map 혹은 Modbus Mapping List와 같은 명칭으로 불리죠. 아래 예제를 살펴보시면 이해가 빠르실 것입니다.

 

가스트론 GTC200A 통신 설정 @ 가스트론 매뉴얼
가스트론 GTC200A 통신 설정 @ 가스트론 매뉴얼

 

 

하지만 위에서 말하는 Addtional Address는 개별 Device내에 데이터의 주소값을 가리키는 것이 아닌 Modbus 통신망에 연결된 여러 개의 Device(혹은 Slave) 중에 각 Device에 할당된 주소값이라 하겠습니다.

 

아래 Modbus communication의 network architecture를 도식을 살펴보시면,

 

 

 

Architecture of a network for Modbus communication @ Modbus Organization.
Architecture of a network for Modbus communication @ Modbus Organization.

 

 

일반적으로 현장에서 구성하게 되는 모드버스 포함 대부분의 필드버스는 Master 1개와 Slave 1개의 1:1 연결이 아닌 Master 1개와 Slave 여러 개의 1:n의 연결로 구성하게 되는데요.

 

이때, Master가 여러 개의 Slave 중에서 어떤 Device를 특정해서 통신하고자 할 때, Addtional Address를 이용하여 구분하도록 합니다.

 

Addtional Address라고 하면 개념이 불분명한 느낌도 들고 Device내 data를 담고 있는 Address와 혼동되는 느낌도 드는데요. 그러한 연유로 통상적으로 Addtional Address는 Device Address라는 명칭으로도 통용되곤 합니다.

 

 

위 설명을 실생활에 비유해 보자면,

 

어딘가 우편이나 택배를 보내려고 할 때 우리는 주소를 사용합니다. 이때 만약 도로명 주소 없이 아파트 동 호수만 주소란에 적어서 보낸다면 당연히 전달이 되지 않겠지요. Addtional Address(Device Address) 또한 그러한 목적입니다.

 

실생활에서 통신 모드버스 통신
도로명 주소 ADU addtional address(Device Address)
아파트 동 호수 Slave device의 Data Address
등기 내용 / 택배 물건 PDU(Fucntion code + data)

 

 

ADU에서 Error check란?

 

 

이어서 ADU에서 Error check 기능에 대해서 알아보겠습니다.

 

간단히 말해, 말 그대로 통신 연결에 대한 Error Check(오류 검증) 기능입니다.

모드버스를 포함한 필드버스는 보통 산업 현장에서 사용되는 통신방식이다 보니, 현장 내 발생하는 외란이라던지, 불완전한 접속등의 위험에 노출되어 있는 편입니다.

 

 외란(노이즈)에 의해서 의도하지 않은 잘못된 데이터가 송수신됨에 따라 발생할 수 있는 제어 불능 및 오작동의 위험 그리고 그로 인한 재산상 & 인사상의 사고 발생의 가능성 또한 간과할 수 없는 부분이라 할 것입니다.

 

 

따라서, 기본적으로 통신망내 연결되어 있는 각각의 Device과 제대로 통신이 되고 있는지를 항시 감시할 필요가 있습니다.

 

모드버스 통신(RTU)에서는  CRC(Cyclical Reduncancy Check)라는 방식을 이용하여 생성된 2 bytes 코드를 이용해 전체 통신에 대한 내용을 체크하게 되는데요. CRC-16이라는 알고리즘으로 불리고 있습니다.

 

개인적인 생각으로는,

현업에서 모드버스를 이용하여 FA장비의 제어와 모니터링 업무를 주로 사용하는 End-user라면 관련 내용을 깊게 이해하실 필요까진 없으리라 생각하는 바입니다.

 

다만, ADU에 저런 기능까지 포함되어 송수신을 한다 정도만 이해하고 통신 연결에서 저런 부분이 포함되다 보니 실제 통신연결에서 주고받는 패킷은 '우리가 예상하는 PDU 크기보다 크다.'라는 정도만 이해하시면 될 것입니다. 

 

따라서, Addtional Address 및 Error check를 포함한 데이터 패킷 크기는 다음과 같다고 하겠습니다. (Modbus RTU 기준임)

 

Device Address Function Code Data CRC Error Check
1 Byte 1 Byte n Bytes 2 Bytes

 

 

이는 크게 중요한 부분은 아닐 수도 있으나,

 

빈번한 Refresh time을 요구하는 통신 환경이 필요한 경우에는 해당 내용을 감안하여 통신속도(bps)를 고려해야 할 수도 있을 것입니다.

 

 

또한, CRC Check와 CRC-16 알고리즘에 대해서 자세히 알고 싶으신 분들은 Modbus Organization에서 발행한 Specification을 참조하여 주시기 바랍니다.

 

 

Modbus Specifications and Implementation Guides

 

Modbus Specifications and Implementation Guides

Modbus Specifications and Implementation Guides Please review the following license agreement before down loading any MODBUS protocol or related documents from this web site. If you agree to the terms herein then you must click the "I ACCEPT" button below

modbus.org

 

 

MODBUS Protocol Specification 다운로드

Modbus_Application_Protocol_V1_1b3.pdf
0.78MB

 

 

Modbus Serial Line Protocol and Implementation Guide V1.02 다운로드

Modbus_over_serial_line_V1_02.pdf
0.25MB

 

 

 

PDU & ADU 하편 마무리하며,

 
 
 드디어 오늘로써 PDU와 ADU에 대해서 설명하는 포스팅을 마무리하였습니다.

 

사실, PDU와 ADU에 대한 내용 그리고 연관된 내용들은 앞서 소개한 3개의 포스팅에 비할 수 없을 정도로 방대한 내용을 함유하고 있다고 생각됩니다. 그것이 너무 방대하다 보니 모두 담을 수 없는 점 양해 바라며, 이외에 생각나는 혹은 질문받게 되는 내용이 있을 때마다 이어서 포스팅하도록 하겠습니다. 🤔

 

 

하얗게 불태웠어...
하얗게 불태웠어...

 

 

 

오늘 내용 정리해 보자면,

 

 

ADU = Additional address + PDU + error check 

 

 

이고,

 

 

 

  • Addtioncal Address는 MODBUS 통신망에서 Slave Device의 개별 주소 값을 가리키는 용도

  • Error check는 통신 연결의 건전성을 확인하기 위한 용도

 

 

라 이해하시면 되겠습니다.

 

 

 다소 난해한 내용이다 보니 최대한 비유와 예시를 들어가면 쉽게 설명해 보려고 노력해 보았습니다. 솔직히 잘 전달이 되었을지는 모르겠습니다.

 

 이번 내용을 포함하여, 아래 카테고리에서 모드버스와 필드버스에 대한 내용을 업데이트하고 있습니다. 시간 되실 때 천천히 읽어보시길 권해드립니다.

 


'공장 자동화/통신' 카테고리의 글 목록 (datawizard.co.kr)

 

'공장 자동화/통신' 카테고리의 글 목록

현장 자동화 라인의 공정개선 / 유지보수 / 프로젝트 관리 업무에 도움을 드립니다. 📧 simo@datawizard.co.kr

datawizard.co.kr

 

 

지금까지 데이터위자드였습니다. 오늘도 즐거운 데이터 생활 하시길 바랍니다.

감사합니다.
 


 
* 본 포스팅에서 언급된 모듈이나 제조사, 단체는 필자와 무관함을 알립니다.
 
 

 
 
'💗' 도움이 되셨다면 공감 클릭 부탁드립니다. 감사합니다.

반응형