[참고]

The Modbus Protocol In-Depth : www.ni.com/ko-kr/innovations/white-papers/14/the-modbus-protocol-in-depth.html

Modbus 사이트 : modbus.org/


(주의! 공부 차원으로 해석을 해서 정확하지 않을 수 있음. 해석이 막힐 때는 구글 번역기를 사용함)

 

1. Modbus Protocol 이란?

Modbus는 master(의역 : 주장치(PC를 말함인가?))-slave(종속 장치) 관계를 사용해서 시행하는 request(요청)-response(응답) 프로토콜이다. master-slave 관계에서, 통신은 쌍으로 항상 발생하며 - 한 장치가 요청을 개시해야 응답을 기다리고 - 개시된 장치(the master)가 모든 대화에 책임이 있다. 보통 master는 HMI(Human Machine Interface), SCADA(Supervisory Control and Data Acqusition) 시스템이고 slave는 센서, PLC(Programmable Logic Controller), 또는 PAC(Programmable Automation Controller) 이다. 이러한 요청과 응답 내용, 그리고 이러한 메시지가 전송되는 네트워크 계층은 프로토콜의 다른 계층에 의해 정의 된다.

 

2. 모드버스 프로토콜의 레이어

초기 구현에서, Modbus는 serial 위에 구축 된 단일 프로토콜이여서, 여러 레이어로 나눌 수 없었다. 시간이 지나, 시리얼을 통해 사용되는 패킷 형식을을 변경하거나 TCP/IP 및 UDP(사용자 데이터그램 프로토콜) 네트워크의 사용을 허용하기 위해 다른 애플리케이션 데이터가 소개되었다. 이것은 핵심 프로토콜의 분리를 이끌었고, PDU(프로토콜 데이터 유닛)와 네트워크 레이어를 정의했고, ADU(애플리케이션 데이터 유닛)를 정의했다.

 

3. PDU (프로토콜 데이터 유닛)

MODBUS APPLICATION PROTOCOL SPECIFICATION V1.1b

Modbus_Application_Protocol_V1_1b.pdf
0.31MB

MODBUS MESSAGING ON TCP/IP IMPLEMENTATION GUIDE V1.0b 

Modbus_Messaging_Implementation_Guide_V1_0b.pdf
0.43MB

 

이것을 다루는 PDU와 코드는 위 모드버스 애플리케이션 프로토콜 설명(첨부 문서)에 핵심으로 구성되 있다. 이 설명서는 PDU의 형식을 정의한다. 프로토콜에 의해 다양한 데이터 형식이 사용되고, 데이터에 접근하기 위한 함수코드의 사용, 그리고 각 함수 코드의 구체적인 실행과 제약들이 사용된다.

 

Modbus PDU 형식은 데이터의 연관된 세트로 주어진 함수코드로 정의된다. 이 데이터의 크기와 내용들은 함수 코드에 의해 정의되고, 전체의 PDU(함수코드와 데이터)는 253바이트 크기를 초과할 수 없다. 모든 함수 코드는 slaves(종속장치들)가 원하는 애플리케이션 동작에 따라 유연하게 구현할 수 있는 구체적 동작을 한다. PDU 설명서는 데이터 접근과 취급에 관한 핵심 개념을 정의한다; 그러나 slave(종속장치)는 사양서에 명쾌하게 정의 되지 않은 한 가지 방법으로 데이터를 처리할 수 있다.

 

3-1. Modbus 데이터 접근하기와 Modbus 데이터 모델

일반적으로, 모드버스-접근가능한 데이터는 4개의 데이터 더미나 address(주소) 범위 중 하나(coils, discrete inputs, holding registers, input registers)에 저장된다. 대부분의 사양서와 마찬가지로, 산업 또는 응용에 따라 이름이 다를 수 있다. 예를 들어, holding registers 는 출력 레지스터라고 할 수 있고, coils는 디지털 또는 이산 출력이라고 할 수 있다. 이러한 데이터 더미는 포함된 데이터의 유형 및 액세스 권한을 정의한다. Slave(종속) 장치들은 로컬로 호스팅 되는데, 이 데이터에 직접 접근할 수 있다. Modbus에 접근가능한 데이터는 일반적으로 장치의 메인 메모리의 부분 집합이다. 반대로, Modbus 마스터(주장치)는 다양한 함수코드를 통해 이 데이터에 접근을 요청해야 한다. [테이블 1]에 각 블럭의 행동에 대해 서술했다.

 

메모리 구역 데이터 유형 마스터 접근 종속장치 접근
Coils Boolean 읽기/쓰기 읽기/쓰기
Discrete Inputs Boolean 읽기 전용 읽기/쓰기
Holding Registers Unsigned Word 읽기/쓰기 읽기/쓰기
Input Registers Unsigned Word 읽기 전용 읽기/쓰기

[테이블1] Modbus 데이터 모델 구역

 

이러한 블럭은 다양한 데이터 요소에 대한 접근을 제한하거나 허용하는 기능을 제공하고 또한 application 레이어에 다양한 데이터 형식으로 접근할 수 있는 간단한 메커니즘을 제공한다.

 

블럭들은 완전히 개념적이다. 주어진 시스템에서 독립된 메모리 주소로 존재하고, 또한 겹칠 수도 있다. 예를들면, Coil 한 개가 holding 레지스터 한 개에 해당하는 word의 첫번째 비트로 메모리 안 같은 위치에 존재할 수 있다. 주소(어드레싱) 제도는 전적으로 종속장치(slave)에 의해 정의되고, 각 메모리 블럭의 해석은 장치의 데이터 모델의 중요한 부분이다.

 

3-2. 데이터 모델 어드레싱

사양서는 65,536(2**16)개 요소의 주소공간을 포함함하는 것으로 각 블럭을 정의한다. PDU 정의 내에서, Modbus 는 0~65,535 범위의 각 데이터 요소에 주소를 정의한다. 하지만, 각 데이터 요소는 1부터 n까지 번호화 되어 있고, n의 최대값은 65,536 이다. 그것은, Coil 1은 주소0의 코일블록에 있고, holding 레지스터 54는 종속장치가 hoding 레지스터로 정의하는 메모리의 섹션 안에서 주소 53에 있다.

 

+ Recent posts