일상에 꼭 필요한 정보, 늘 함께하는 나침반 일상에 꼭 필요한 정보, 늘 함께하는 나침반

Modbus란? 산업장비 통신 프로토콜 원리

읽는 시간 약 6분

Modbus란 PLC·HMI·인버터·계측기 등 산업장비가 데이터를 주고받는 통신 프로토콜입니다. Modbus RTU와 TCP의 차이, Master·Slave와 Client·Server 구조, Coil·Register 및 데이터 통신 원리를 알아봅니다.

Modbus란 무엇이며 산업현장에서 왜 사용할까?

Modbus는 PLC, HMI, 인버터, 온도조절기, 전력계, 계측기 등 서로 다른 산업장비 사이에서 데이터를 주고받기 위해 사용하는 대표적인 산업용 통신 프로토콜입니다. 1979년 Modicon에서 PLC 통신을 위해 개발되었으며 구조가 비교적 단순하고 다양한 제조사의 장비에서 지원되어 현재도 산업자동화 현장에서 널리 활용됩니다. 예를 들어 PLC가 인버터에서 현재 출력주파수와 운전상태를 읽거나 HMI가 PLC의 온도·압력 데이터를 가져오는 방식으로 사용할 수 있습니다. 중요한 점은 Modbus가 케이블 자체를 의미하는 것이 아니라 장비가 어떤 형식으로 요청하고 응답하며 데이터를 표현할 것인지를 정의하는 통신 규칙이라는 것입니다. 실제 통신에는 Serial 방식의 Modbus RTU나 Ethernet 기반의 Modbus TCP 등이 사용됩니다. 따라서 장비에 Modbus 지원이라고 표시되어 있더라도 RTU인지 TCP인지, 어떤 통신 Interface를 사용하는지 확인해야 합니다. 또한 장치별 Register Map이 다르므로 통신 연결만으로 모든 데이터를 자동으로 읽을 수 있는 것은 아닙니다.

Modbus RTU와 Modbus TCP는 무엇이 다를까?

Modbus RTU는 Serial Communication을 기반으로 사용하는 대표적인 Modbus 방식이며 산업현장에서는 RS-485와 함께 구성되는 경우가 많습니다. 여러 장치를 하나의 Bus에 연결할 수 있고 비교적 단순한 배선으로 통신망을 구축할 수 있다는 특징이 있습니다. 통신을 설정할 때는 Baud Rate, Data Bit, Parity, Stop Bit와 장치 주소 등이 서로 일치해야 합니다. 반면 Modbus TCP는 Ethernet과 TCP/IP를 이용해 Modbus 데이터를 전달합니다. 일반적으로 Ethernet Switch를 이용한 네트워크 구성이 가능하고 각 장치는 IP Address를 기반으로 통신합니다. Modbus TCP의 기본 Well-known Port는 TCP 502입니다. 두 방식은 Modbus의 데이터 모델과 Function Code 개념을 공유하지만 실제 Frame 구조와 전송계층은 다릅니다. RTU에서는 오류검출을 위해 CRC가 Frame에 포함되며 TCP에서는 MBAP Header가 사용되고 Ethernet·TCP/IP 계층의 오류검출 및 전송기능을 이용합니다. 따라서 RTU 장비와 TCP 장비를 직접 연결할 수 있는 것은 아니며 필요한 경우 Modbus Gateway를 이용해 두 네트워크 사이의 데이터를 변환해야 합니다.

Coil과 Register에는 어떤 데이터가 저장될까?

Modbus에서는 장비의 데이터를 Coil, Discrete Input, Input Register, Holding Register라는 대표적인 데이터 영역으로 구분합니다. Coil은 읽기와 쓰기가 가능한 1bit 데이터로 ON·OFF 명령이나 상태값에 사용할 수 있습니다. Discrete Input은 일반적으로 읽기 전용 1bit 상태정보를 나타냅니다. Input Register는 읽기 중심의 16bit 데이터 영역이며 측정값 등에 사용되고 Holding Register는 읽기·쓰기가 가능한 16bit 데이터 영역으로 설정값이나 제어정보 등에 널리 사용됩니다. 실제 장비에서는 Function Code를 이용해 필요한 데이터 영역을 읽거나 씁니다. 예를 들어 FC03은 Holding Register 읽기, FC04는 Input Register 읽기에 사용됩니다. 다만 매뉴얼에 표시된 40001과 같은 문서상의 Reference Number와 통신 Frame에서 사용하는 실제 Address Offset이 서로 다르게 표현되는 경우가 있어 주의해야 합니다. 또한 32bit Integer나 Float 값은 두 개 이상의 16bit Register에 저장되므로 Word Order와 Byte Order를 장비 매뉴얼에서 확인해야 정상적인 값을 얻을 수 있습니다.

PLC에서 Modbus 통신을 설정할 때 무엇을 확인할까?

PLC와 산업장비 사이에 Modbus 통신을 구성할 때는 먼저 양쪽 장비가 Modbus RTU와 TCP 중 어떤 방식을 지원하는지 확인해야 합니다. RTU라면 RS-485의 통신조건과 장치 주소, 배선 토폴로지, 종단저항 등의 조건을 확인해야 하고 TCP라면 IP Address, Subnet, TCP Port와 네트워크 구성을 확인해야 합니다. 그다음 장비 제조사가 제공하는 Modbus Register Map에서 읽거나 쓸 데이터의 주소, Function Code, 데이터 형식과 Scaling 정보를 찾아야 합니다. 예를 들어 Register 값이 253으로 수신되더라도 실제 온도가 25.3℃라면 매뉴얼에 정의된 Scale Factor를 적용해야 합니다. 통신이 되지 않을 때는 단순히 케이블만 확인하기보다 Timeout, Slave 또는 Server Address, Function Code, Register Address와 데이터 길이 등을 단계적으로 점검하는 것이 중요합니다. 또한 기본 Modbus 자체에는 강력한 인증·암호화 기능이 포함되어 있지 않으므로 중요한 산업 네트워크에서는 방화벽, 네트워크 분리, 접근제어 등 적절한 Cybersecurity 대책도 함께 고려해야 합니다.

jssj2627

함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.

error: Content is protected !!

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.