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

Modbus TCP란? Ethernet PLC 통신 원리

읽는 시간 약 6분

Modbus TCP란 Ethernet과 TCP/IP 네트워크를 이용해 PLC·HMI·산업장비 사이에서 데이터를 주고받는 통신방식입니다. Modbus TCP의 Client·Server 구조와 TCP 502 Port, MBAP Header 및 Register 통신 원리를 알아봅니다.

Modbus TCP란 무엇이며 어떻게 데이터를 전달할까?

Modbus TCP는 기존 Modbus의 데이터 모델과 Function Code를 Ethernet 기반의 TCP/IP 네트워크에서 사용할 수 있도록 구성한 산업용 통신방식입니다. PLC, HMI, SCADA, 인버터, 전력계, Remote I/O 등 다양한 자동화 장비 사이의 데이터 교환에 활용됩니다. Modbus RTU가 RS-485와 같은 Serial 통신망에서 많이 사용된다면 Modbus TCP는 Ethernet Network를 통해 통신한다는 점이 대표적인 차이입니다. 예를 들어 HMI가 PLC의 Holding Register에 저장된 생산량을 읽거나 PLC가 Ethernet으로 연결된 계측기의 온도와 전력 데이터를 읽는 방식으로 사용할 수 있습니다. Modbus TCP에서도 Coil, Discrete Input, Input Register, Holding Register와 같은 Modbus Data Model과 Function Code가 사용됩니다. 따라서 RTU와 기본적인 데이터 접근개념은 유사하지만 실제 Frame과 전송방식은 다릅니다. Ethernet Cable을 연결하는 것만으로 자동으로 통신되는 것은 아니며 각 장치의 IP 설정, Modbus 역할, Register Address와 데이터 형식 등을 정확하게 설정해야 합니다.

Client와 Server는 어떤 방식으로 통신할까?

Modbus TCP에서는 일반적으로 Client가 요청을 보내고 Server가 해당 요청을 처리한 뒤 응답하는 Request·Response 방식으로 통신합니다. 예를 들어 PLC가 Client 역할을 하면서 전력계 Server에 특정 Holding Register 값을 요청하면 전력계는 해당 데이터를 응답 메시지에 담아 반환합니다. 반대로 SCADA나 HMI가 Client가 되어 PLC Server의 데이터를 주기적으로 읽는 구조도 사용할 수 있습니다. Modbus TCP는 TCP/IP를 이용하며 기본적으로 TCP Port 502가 표준 Port로 사용됩니다. 통신을 위해서는 Client가 Server의 IP Address와 Port에 TCP Connection을 설정한 뒤 Modbus 요청을 전달합니다. 하나의 장치가 항상 Client 또는 Server 역할만 수행해야 하는 것은 아니며 제품 기능에 따라 여러 역할을 지원할 수도 있습니다. 또한 Ethernet Network에서는 여러 장치가 Switch를 통해 연결될 수 있기 때문에 Serial Bus의 장치번호만 생각해서는 안 됩니다. IP Address, Subnet 설정과 Network Topology가 올바르게 구성되어야 정상적인 TCP 연결과 Modbus 데이터 교환이 가능합니다.

MBAP Header와 Modbus 데이터는 어떻게 구성될까?

Modbus TCP의 Application Data Unit에는 MBAP(Modbus Application Protocol) Header가 사용됩니다. MBAP Header에는 Transaction Identifier, Protocol Identifier, Length, Unit Identifier 등의 정보가 포함되고 그 뒤에 Function Code와 Data가 이어집니다. Transaction Identifier는 Client가 보낸 요청과 Server의 응답을 대응시키는 데 사용되며 Protocol Identifier는 Modbus TCP에서 일반적으로 0으로 설정됩니다. Length는 이후 데이터의 길이를 나타내고 Unit Identifier는 Gateway를 통해 다른 Modbus 장치와 연결되는 구조 등에서 장치를 식별하는 데 활용될 수 있습니다. Modbus RTU Frame 끝에는 CRC 오류검사 값이 포함되지만 Modbus TCP Application Data Unit에는 별도의 Modbus CRC가 추가되지 않습니다. Ethernet Frame과 TCP/IP 계층에서 자체적인 오류검출 및 신뢰성 있는 전송기능을 제공하기 때문입니다. 그러나 CRC가 없다는 것이 통신 오류나 애플리케이션 오류가 절대 발생하지 않는다는 의미는 아닙니다. Timeout, Connection 상태, 잘못된 Function Code나 Register Address 등은 별도로 처리해야 합니다.

PLC에서 Modbus TCP를 사용할 때 무엇을 확인할까?

PLC와 산업장비 사이에 Modbus TCP를 구성할 때는 먼저 각 장비가 Client와 Server 중 어떤 기능을 지원하는지 확인해야 합니다. 이후 IP Address와 Subnet Mask를 설정하고 동일 네트워크에서 IP가 중복되지 않는지 점검합니다. Server 측에서는 사용하는 TCP Port를 확인해야 하며 기본값은 502이지만 제품 설정에 따라 다른 Port를 지원하는 경우도 있습니다. 실제 데이터를 주고받으려면 장비 제조사가 제공하는 Register Map에서 Function Code, Register Address, 데이터 길이와 형식을 확인해야 합니다. 특히 문서상의 40001 같은 Reference Number와 실제 Protocol Address Offset이 다르게 표현될 수 있어 주소가 한 칸씩 어긋나는 문제를 주의해야 합니다. 32bit Integer와 REAL 데이터는 여러 16bit Register를 사용하므로 Word Order도 확인해야 합니다. 또한 Modbus TCP 자체는 기본적으로 통신 내용에 강력한 인증이나 암호화를 제공하는 프로토콜이 아니므로 공장 네트워크에서는 VLAN, Firewall, Access Control, Network Segmentation 등의 보안대책을 함께 고려하는 것이 중요합니다.

jssj2627

함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.

error: Content is protected !!

광고 차단 알림

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

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