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