Innovate With Data

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

공장 자동화/통신

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

데이터위자드 2024. 4. 9. 23:48
반응형

MODBUS 통신에서 나오는 PDU와 ADU에 대해서 알아보겠습니다.

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

모드버스 통신만으로도 아직 여러 개의 포스팅이 필요할 것으로 예상될 정도로, 모드버스 통신은 공장 자동화뿐 아니라 산업 전반에 널리 사용되는 방식입니다. 

 

 

 오늘은 모드버스 통신의 여러 가지 개념 혹은 설명 중 PDU와 ADU라는 것에 대해 이야기해 보겠습니다.

 

 

(* 모드버스에 대한 이전 포스팅은 아래 링크를 참조하여 주시기 바랍니다.)

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

 

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

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

datawizard.co.kr

 

 

 

PDU(protocol data unit) 이란?

 

 

 

앞서 포스팅에서 통신에서 Client & Server에 대해서 잠시 얘기하였습니다.

Client & Server의 개념은, 비단 모드버스 통신뿐만 아니라 대부분의 산업용 통신에서 동일하게 나오는 기본 개념이지요.

 

 

  • 고객(Client)은 정보를 요청(Request)하고

  • 제공자(Server)는 요청에 응답(Response)한다

 

 

언듯 보면 당연한 개념이라 할 수 있겠는데요.

도식화해 보면 아래와 같겠습니다.

 

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

 

 

이때 모드버스 통신에서는 Request와 Response 하는 일련의 통신 과정에서 Protocol Data Unit (이하 PDU)라는 핵심 개념이 등장하게 됩니다. Pdu를 한 문장으로 표현하자면,

 

PDU = Function code + data

 

 

이며, Function code와 Data가 결합된 구조입니다.

 

모드버스 통신에서는 Request와 Response 할 때 PDU 구조를 기본 단위(unit)로 통신하게 됩니다. 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로부터 응답을 수신하고 트랜잭션은 종료된다.

 

 

(* 함께 보면 좋은 글)

 MODBUS 통신 알아보자 (3) - MODBUS의 Function Code

 

MODBUS 통신 알아보자 (3) - MODBUS의 Function Code

MODBUS 통신의 Function Code에 대해서 알아보겠습니다. 안녕하세요? 데이터위자드입니다. 즐거운 데이터 생활 되고 있으신지요? 앞서 모드버스 통신에 대해서 여러 개의 포스팅을 하면서 모드버스

datawizard.co.kr

 

 

PDU는 모드버스 통신의 근간을 이루는 기본 개념이라 할 수 있습니다. 물론, Bit나 Byte와 같은 것들이 기본이라 하겠지만, Protocol에서의 기본 단위는 PDU라 하겠습니다.

 

 비유하자면, 화학시간에 배운 것과 같이, 양성자, 중성자, 전자가 기본 단위라 할지라도 분자나 화학물이 되어야 우리가 느끼기에 유의미한 것과 같다는 느낌이라 하겠습니다. (화공과 출신이 아니라 적절한 비유가 되는지는 모르겠네요..😅)

 

 

다음으로 ADU(application data unit)에 대해서 알아보겠습니다.

 

 

다음으로 Application data unit(이하 ADU)을 알아보겠습니다. 이 역시 ADU의 표현식을 보자면 그 의미를 쉽게 유추하실 수 있으실 텐데요.

 

ADU = Additional address + PDU + error check 

따라서,

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

 

 

ADU는 PDU에 주소값과 에러 체크 구문을 추가하여 완전체로 만들어 놓은 개념으로서, Modbus Organization에서는 ADU를 Modbus frame이라 공식적으로 칭하고 있습니다.

 

 

PDU & ADU를 모드버스 통신과 실생활에서 사용하는 언어과 비교하여 비유해 본다면,

 

언어 모드버스 통신
자음 & 모음 bit, byte
단어 PDU
문장 ADU

 

 

정도로 볼 수 있겠습니다. (물론, 상호 1:1 정확하게 매칭되는 개념은 아닙니다.)

 

 

 
 

PDU & ADU 상편 마무리하며,

 
 
 오늘 포스팅에서는 모드버스 통신의 PDU와 ADU에 대한 내용을 정리해 보았습니다. PDU에 대한 내용과 Client & Server에 대한 Transaction에 대한 내용이 주가 되었는데요. 정리해 보자면,

 

 

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

 

 

 

모드버스 통신에서 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로부터 응답을 수신하고 트랜잭션은 종료된다.

 

 

이라 하겠습니다.

 

 

 오늘 포스팅한 내용 또한, 이전 포스팅과 마찬가지로 현장에서 공장 자동화를 주로 다루는 End user에게는 크게 중요하지 않은 원론적인 내용이라 볼 수 있는데요. 비록, 원론적인 이야기라 할지라도 조금 더 자세히 알면 관련 업무를 수행하는데 도움이 되실 것이라 생각됩니다.

 

 모드버스에 대한 원론과 관련된 내용이라 다소 난해한 내용이 있으실 것이라 생각됩니다. 아래 카테고리에서 모드버스와 필드버스에 대한 더 자세한 내용을 확인해 보시기 바랍니다.

 


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

 

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

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

datawizard.co.kr

 

 

 
PDU와 ADU에 대한 내용을 쓰다 보니, 예상보다 길어져 부득이 상/하편으로 나누어 포스팅하도록 하겠습니다. 

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

 

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

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

반응형