본문 바로가기
컴퓨터&네트워크

[네트워크] Modbus 프로토콜에 대해서 (마스터/슬레이브, RS485)

by 파란하랑 2024. 10. 1.

업무를 하면서 Modbus TCP/IP를 많이 접하게 되는데 해당 프로토콜이 무엇인지 하기와 같이 정리해 봤습니다. 하기 내용에는 ‘TCP/IP가 보이는 그림책 (ANK Co., Ltd 저)’에서 나오는 내용도 있습니다.

 

 

MODBUS 개요

 

MODBUS-TCP/IP
MODBUS-TCP/IP

 

 

MODBUS 는 마스터/슬레이브 혹은 요청/응답 아키텍처 기반의 응용계층 프로토콜중 하나입니다. Modicon이라는 회사에서 만든 시리얼 통신 프로토콜로 보면 되며, 많은 산업용 애플리케이션에서 사용되고 있는 통신 프로토콜입니다. 설치와 유지 보수에도 유리합니다. 공개된 OPEN 프로토콜이다 보니 별도의 사용료 지불도 불필요 합니다.

 

참고로 여기서 프로토콜(protocol)이란, 컴퓨터 간에 데이터를 주고받을 때 필요한 통신 방법을 통신 장비 간에 서로 정해 놓은 규칙과 약속을 말합니다. 예를 들어, 인터넷에서는 TCP/IP 프로토콜이 사용되고 있습니다.

 

인터넷
인터넷

 

 

MODBUS 직렬 라인 프로토콜(Serial Line protocol)은 마스터(master)와 슬레이브(slave) 사이의 프로토콜로 볼 수 있습니다. 이 프로토콜은 OSI 모델의 레벨 2에 해당합니다.

 

마스터-슬레이브 형태의 시스템은 하나의 노드(node) 즉 마스터 노드를 갖는데 마스터 노드는 슬레이브 노드로의 명령과 프로세스 응답을 내보냅니다. 슬레이브 노드는 마스터 노드로부터의 요청이 없으면 데이터를 전송할 수 없고, 다른 슬레이브와 통신도 불가능합니다.

 

한 대의 마스터 노드가 여러 대의 슬레이브, 즉 여러 개의 센서 혹은 PLC 등과 통신을 하면서 명령을 내리고 데이터를 읽어 오는 방식으로 볼 수 있습니다.

 

마스터-슬레이브-구조
마스터-슬레이브-구조

 

 

여기서 마스터, 슬레이브는 왜 설정해야 할까요? 마스터, 슬레이브를 정해두지 않으면 여러 노드들이 동시에 송신을 하여 신호가 완전히 왜곡되는 현상이 발생할 수가 있습니다. 이런 현상을 방지하기 위해서 마스터, 슬레이브를 두는 것은 필수적입니다.

 

물리 레벨에서 직렬 라인 시스템의 MODBUS는 RS-485, RS232라는 다른 물리적 인터페이스를 사용합니다. TIA/EIA-485(RS-485)는 2선식선로 인터페이스로 가장 일반적으로 사용됩니다. 부가적으로 RS-485 4선식선로 인터페이스로도 사용됩니다.(RS-422)

 

TIA-EIA-232-E(RS-232) 직렬 인터페이스는 짧은 포인트간의 통신이 요구될 경우에 인터페이스로 사용되는데 50ft (15m)가 넘어가면 RS-485 혹은 RS232 통신을 사용해야만 합니다.

 

 

MODBUS 마스터/슬레이브 프로토콜 원칙

 

마스터 노드는 오직 한번에 하나의 MODBUS 처리를 수행합니다. 마스터 노드가 슬레이브 노드로의 MODBUS 요청은 하기와 같이 두 가지 모드가 있습니다.

 

▶ 유니캐스트(unicast) 모드는 마스터가 각각의 슬레이브를 호출하는 것으로 보면 됩니다. 요청을 받고 처리한 후 슬레이브는 마스터에게 메시지를 보내게 됩니다.

 

이 모드에서 MODBUS 트랜잭션은 두 메시지로 구성되게 되는데, 마스터로부터의 요청과 슬레이브의 응답으로 보면 됩니다. 각 슬레이브는 단일 주소(1~247)를 가지며, 각 슬레이브 노드로부터 독립적으로 호출됩니다.

 

▶ 방송(broadcast) 모드는 마스터가 모든 슬레이브를 호출할 수 있는데, 마스터가 보낸 방송에 대한 응답은 돌아오지 않습니다.

 

MODBUS-통신-구조
MODBUS-통신-구조

 

 

모드 버스에 사용되는 modbus 통신의 종류는 크게 Modbus Serial, Modbus plus, Modbus TCP/IP 등 세 가지로 나뉩니다. 앞에서 언급했던 바와 같이, Modbus Serial은 다시 RS 232C 기반의 Modbus (1:1 통신, 15m이하, 매우 simple한 case)와 RS 422 기반의 Modbus 그리고 RS 485 기반의 Modbus (1200m이하, master 당 node 32개까지 통신 가능, 그 이상 node가 늘어날 시에는 리피터 사용)로 세분화 됩니다.

 

Modbus의 전송방식에 따라 RTU(Remote Terminal Unit) 전송방식과 ASCII(American Standard Code For Information Interchange) 등 두 가지로 나눌 수도 있습니다. 일반적으로 산업현장에서는 Modbus RTU 전송방식이 주로 사용되고 있으나 RTU와 ASCII 전송방식을 선택하여 사용하는 제품도 꽤 사용되고 있습니다.

 

Modbus RTU (RS485)를 사용할 때도 전송속도, Parity, Stop bit 등을 서로 맞춰줘야만 통신이 가능합니다. 또한, 통신을 원하는 장비의 Mapping list도 확인되어야 통신이 가능합니다.

 

프로토콜 Modbus RTU (RS485)

전송속도 (bps) 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
Parity EVEN, ODD, NONE
Stop bit 2, 1

 

통신구성시-주의사항
통신구성시-주의사항

 

그리고 통신 구성할 때, Daisy Chain으로만 동작 가능하며 Star 방식으로는 구성 불가한 부분을 주의해야 합니다.

 

MODBUS Address

 

MODBUS는 256개의 서로 다른 주소 공간을 가진다고 보면 됩니다.

0
1~247
248~255
방송 주소
슬레이브 주소
Reserved

 

 

Modbus 데이터 저장 구조

 

데이터 정보는 SLAVE DEVICE에 네 가지 다른 테이블들로 저장됩니다. 두 가지 테이블은 on/off 값을 가지는 0,1을 저장 하는 coils, 그리고 워드를 저장 할 수 있는 registers로 나뉘어 지며 coils과 registers은 각각 read-only, read-write table로 구성됩니다.

 

각 테이블은 9999 values를 가지며 coil은 1bit이며 address 는 0000~ 270E 이며 register 는 1word = 16 bits = 2bytes 이고 address 0000 and 270E 으로 보면 됩니다. 다음은 위에 나타낸 구조를 표로 나타낸 것입니다.

 

Coil/ Register Numbers Data Address Type Table Name

1-9999 0000 to 270E Read-Write discrate output coils
10001-19999 0000 to 270E Read-Only Discrete Input contacts
30001-39999 0000 to 270E Read-Only Analog Input registers
40001-49999 0000 to 270E Read-Write Analog Output Holding registers

 

Function code

1 Read Coil Status

2 Read Input Status
3 Read Holding Registers
4 Read Input Registers
5 Write Single Coil Status
6 Write Single Register
15 Multiple Coil Write
16 Multiple Regsiter Write

 

그리고, TCP/IP를 이용하여 modbus를 전송 할 때는 TCP가 연결이 되어 있는지 꼭 확인해야 합니다.

 

이상으로 MODBUS 통신 프로토콜에 대해서 간략하게 살펴보고 데이터 저장 구조가 어떻게 구성되는지 살펴봤습니다. 다음 글에는 TCP/IP 통신 관련해서 정보를 정리해 보도록 하겠습니다.

 

'컴퓨터&네트워크' 카테고리의 다른 글

파일 시스템 관리 관련해서  (1) 2024.09.12
멀티미디어 운영체제  (6) 2024.09.11
메모리 관리  (1) 2024.09.09
다중컴퓨터  (2) 2024.09.02
네트워크 관련 프로토콜  (0) 2024.08.27