산업 제어 전문가라면 Modbus 통신 프로토콜에 익숙할 것입니다. 이는 산업 자동화 분야에서 가장 널리 사용되는 통신 프로토콜입니다. 개방성, 확장성 및 표준화로 인해 보편적인 산업 표준이 되었습니다.
저는 Modbus 프로토콜의 장점은 말할 필요도 없다고 생각합니다. 이 기사의 목적은 주로 Modbus 프로토콜의 단점을 논의하는 것입니다.
모든 것에는 양면이 있고 모든 프로토콜에는 단점이 있습니다. Modbus에 단점이 있다는 사실이 이것이 나쁜 프로토콜이라는 의미는 아닙니다. 모두가 이 사실을 합리적으로 보시길 바랍니다.
1. 읽을 수 있는 데이터 양의 제한
다음 다이어그램은 Modbus RTU 프로토콜 기능 코드 03의 데이터 형식을 보여줍니다.

그림과 같이 슬레이브국이 반환하는 데이터 개수(바이트 개수)는 1바이트에 불과합니다.
바이트 수가 1바이트만 차지하므로 입력/홀드 레지스터를 읽을 때 한 번에 최대 127개의 레지스터를 읽을 수 있습니다. 데이터 볼륨이 매우 큰 애플리케이션에서는 모든 데이터를 검색하기 위해 여러 번의 읽기가 필요하므로 필연적으로 통신 효율성이 저하됩니다.
2. 개별 레지스터 비트에 대한 쓰기 지원 부족
일반적으로 사용되는 8개의 Modbus 기능 코드 중에는 레지스터 내의 개별 비트에 쓰기 위한 특정 기능이 없습니다. 따라서 레지스터의 특정 비트를 설정하거나 삭제해야 하는 경우 프로세스가 상당히 번거로워집니다.
이를 처리하는 데는 일반적으로 두 가지 접근 방식이 있습니다.
첫 번째 접근 방식: 먼저 레지스터 값을 읽은 다음 해당 값의 특정 비트를 조작하고 마지막으로 수정된 값을 다시 써야 합니다. 이를 완료하려면 두 번의 왕복-이 필요하며 어떤 관점에서는 안전하지 않습니다.
두 번째 접근 방식: 단일 비트를 별도의 레지스터로 처리할 수 있습니다. 여기서 1을 쓰면 True를 나타내고 0을 쓰면 False를 나타냅니다. 이 방법은 단일 상호 작용으로 수행할 수 있지만 상당한 양의 메모리 공간을 낭비합니다.
Modbus 프로토콜은 1979년에 만들어졌으며 현재 수만 개의 장치에서 사용되고 있습니다. 나는 그 발명가들이 이러한 문제를 확실히 알고 있었지만 통합 솔루션을 구현할 수 없었다고 생각합니다.
아마도 언젠가는 Modbus 프로토콜이 이 두 가지 문제를 해결할 수 있을 것입니다.
일부에서는 Modbus 프로토콜에 보안 취약점이 있다고 주장할 수도 있습니다. 그러나 산업 현장 애플리케이션을 위해 설계된 프로토콜로서 주요 목적은 데이터 교환을 촉진하는 것입니다. 오프라인 환경에서는 공격이 없으면 피해가 없습니다.




