Modbus RTU란? RS-485 주소·CRC 원리
Modbus RTU란 RS-485 같은 직렬통신에서 주소와 Function Code, Data, CRC를 이용해 산업장비가 정보를 주고받는 방식입니다. Modbus RTU Frame 구조와 Slave Address·CRC 오류검출 및 PLC 통신 설정 원리를 알아봅니다.
Modbus RTU란 무엇이며 RS-485와 어떤 관계일까?
Modbus RTU(Remote Terminal Unit)는 PLC, HMI, 인버터, 전력계, 온도조절기 등 산업장비 사이에서 데이터를 주고받을 때 사용하는 대표적인 Serial 기반 Modbus 전송방식입니다. 산업현장에서는 RS-485 물리계층과 함께 사용하는 경우가 많아 두 용어를 같은 의미로 생각하기 쉽지만 실제로는 역할이 다릅니다. RS-485는 전기적인 신호레벨과 차동전송 특성 등을 규정하는 물리계층 규격이고 Modbus RTU는 그 통신선 위에서 장치주소와 명령, 데이터를 어떤 형식으로 주고받을지를 정의하는 프로토콜입니다. 따라서 RS-485를 사용한다고 해서 반드시 Modbus RTU를 사용하는 것은 아니며 다른 Serial Protocol도 사용할 수 있습니다. Modbus RTU 통신에서는 일반적으로 한 장치가 요청을 보내고 지정된 장치가 응답하는 방식으로 데이터를 교환합니다. 전통적으로 Master·Slave라는 용어가 널리 사용되어 왔으며 최근 문서에서는 Client·Server라는 표현도 사용됩니다. 실제 통신을 구성하려면 프로토콜뿐 아니라 Baud Rate, Parity, Stop Bit 등의 Serial 설정도 서로 일치해야 합니다.
Modbus RTU Frame은 어떤 구조로 구성될까?
Modbus RTU 메시지는 기본적으로 Address + Function Code + Data + CRC 형태의 Frame으로 구성됩니다. Address는 어떤 장치와 통신할 것인지 구분하는 값이고 Function Code는 데이터를 읽을 것인지, 쓸 것인지와 같은 요청의 종류를 나타냅니다. Data 영역에는 Register 시작주소, 읽을 개수 또는 기록할 값 등이 포함되며 마지막에는 오류검출을 위한 CRC가 추가됩니다. 예를 들어 PLC가 특정 장치의 Holding Register를 읽으려면 대상 장치의 주소와 Holding Register 읽기에 해당하는 Function Code, 시작주소와 Register 수량을 포함하여 요청 Frame을 전송합니다. 수신장치는 자신에게 해당하는 요청인지 확인한 뒤 정상적인 요청이라면 필요한 데이터를 포함한 응답 Frame을 전송합니다. Modbus RTU에서는 Frame 사이를 구분하기 위해 문자 전송시간을 기준으로 한 무통신 구간도 중요합니다. 일반적으로 RTU Frame 사이에는 최소 3.5 Character Time의 Silent Interval이 사용되므로 Serial 데이터를 임의의 간격으로 전송하면 정상적인 Frame으로 인식되지 않을 수 있습니다.
Slave Address와 CRC는 각각 어떤 역할을 할까?
RS-485 기반 Modbus RTU에서는 여러 장치를 하나의 Bus에 연결할 수 있으므로 각 장치를 구분하기 위한 Address가 필요합니다. 일반적인 Modbus Serial 규격에서 개별 Server 주소는 1~247 범위가 사용되며 주소 0은 Broadcast 용도로 예약됩니다. Client가 특정 주소로 요청을 보내면 해당 주소의 장치가 요청을 처리하고 응답합니다. 동일한 통신망에서 장치 주소가 중복되면 여러 장치가 동시에 응답하여 통신 충돌이나 오류가 발생할 수 있습니다. CRC(Cyclic Redundancy Check)는 전송 과정에서 데이터가 손상되었는지를 검출하기 위한 오류검사 값입니다. 송신측은 Frame의 내용을 기준으로 CRC-16 값을 계산하여 메시지 끝에 추가하고 수신측은 받은 데이터로 다시 CRC를 계산하여 일치 여부를 확인합니다. 값이 다르면 전송 중 데이터 오류가 발생한 것으로 판단하여 해당 Frame을 정상 메시지로 처리하지 않습니다. CRC는 통신 오류를 검출하는 기능이지 손상된 데이터를 자동으로 복구하거나 보안상 위·변조를 방지하는 암호화 기능은 아닙니다.
PLC에서 Modbus RTU 통신 전 무엇을 설정해야 할까?
PLC에서 Modbus RTU를 사용하려면 양쪽 장비의 Serial Communication 조건을 동일하게 설정해야 합니다. 대표적으로 Baud Rate, Data Bits, Parity, Stop Bits를 확인하고 각 장치의 Modbus Address가 중복되지 않도록 설정합니다. 다음으로 장비 매뉴얼의 Register Map을 확인하여 읽거나 기록할 데이터의 주소와 Function Code, 데이터 형식을 파악해야 합니다. 통신이 되지 않을 때는 RS-485의 A·B 또는 D+·D− 표기가 제조사마다 다르게 표현될 수 있다는 점도 주의해야 하며 실제 단자 정의는 해당 장비의 매뉴얼을 기준으로 확인해야 합니다. 긴 Bus에서는 케이블 특성과 통신속도에 따라 양 끝단의 Termination과 Biasing 구성도 중요할 수 있습니다. 또한 32bit Integer나 Float 데이터를 두 개의 16bit Register로 전송한다면 Word Order와 Byte Order를 확인해야 값이 정상적으로 해석됩니다. 결국 Modbus RTU 통신의 핵심은 RS-485 배선만 연결하는 것이 아니라 Serial 설정, Address, Function Code, Register와 CRC가 하나의 통신규칙에 맞게 동작하도록 구성하는 것입니다.




댓글 0
첫 댓글을 남겨보세요.