모드버스(Modbus)로 IIoT 엣지 개발: 라즈베리 파이에서 안전한 센서 데이터 흐름 구축
편집자 주: 산업용 사물인터넷(IIoT)은 산업 운영에 대한 깊은 통찰을 제공하고 연결된 시스템 전반의 효율성을 높입니다. 대규모 IIoT 배포는 계층형 아키텍처에 의존해 다양한 센서에서 데이터를 수집하고, 안전하게 클라우드로 전송하며, 실질적 가치를 창출하는 분석을 수행합니다. 이 장은 IIoT 엣지 개발을 다루며, 시리얼 통신을 위한 경량의 검증된 솔루션인 모드버스 프로토콜에 초점을 맞춥니다.
알레나 트라우키나, 자얀트 토마스, 프라샨트 티아기, 키쇼레 레디팔리 저, '산업용 인터넷 애플리케이션 개발'에서 발췌·각색.
3장. IIoT 엣지 개발 (계속)
산업용 M2M 프로토콜 – 모드버스(Modbus)
이 섹션에서는 라즈베리 파이 허브를 사용해 센서 데이터(시뮬레이터)를 수신 장치(PC 또는 클라우드)로 모드버스 TCP(모드버스의 애플리케이션 계층 변형)로 전송하는 콤팩트한 IoT 애플리케이션을 구축합니다.
센서 시뮬레이터에서 수신 장치로의 데이터 흐름
모드버스는 제약된 하드웨어 디바이스에 이상적입니다: 단순하고 오픈소스이며 널리 지원됩니다. 아래 간략한 사양 스냅샷으로 모드버스가 귀하의 요구사항에 부합하는지 판단해 보세요.
키(Key) 값(Value)
오픈 소스 예*
OSI 계층 전송 또는 애플리케이션
데이터 타입 정수, 실수, 문자열, 불리언
제한사항 • 대용량 이진 객체 불가 • 마스터가 변경 사항 폴링* • 링크당 최대 254 디바이스* • 연속 전송만 가능
연산 레지스터/코일 읽기/쓰기, 진단
지연 시간 높음
용도 SMS, GPRS, 유선, 무선, 메시
보안 없음
압축 없음
* 표기된 값은 구현마다 다를 수 있습니다.
빌딩 블록
필수 소프트웨어:
필수 하드웨어: 라즈베리 파이 3 모델 B 2A/5V 전원 어댑터 8GB+ 마이크로SD 카드 및 어댑터 유선 네트워크용 이더넷 케이블
SD 카드 준비
라즈베리 파이 다운로드 에서 최신 라즈비안 라이트 이미지 다운로드.SD 카드를 컴퓨터에 삽입하고 에처(Etcher) 로 이미지 플래싱 (https://www.balena.io/etcher/ ). 부트 파티션에 빈 파일 ssh 생성으로 SSH 활성화: cd /Volumes/boot touch ssh Wi-Fi 활성화를 위해 network.conf 생성:
network={ ssid="YOUR_SSID" psk="YOUR_WIFI_PASSWORD" }
리눅스 콘솔에서 nano로 파일 편집 가능.
프로젝트 디렉토리 생성: /home/pi/hub. /home/pi/hub/package.json에 추가:
{ "name": "hub", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node index.js", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "modbus": "0.0.16", "request": "^2.81.0" } }
/home/pi/hub/index.js에 모드버스 클라이언트 구현으로 서버에 데이터 전송. 플레이스홀더를 실제 주소로 교체: const modbus = require('modbus'); const request = require('request'); // 예: 센서 레지스터 읽고 원격 서버로 POST // (실제 로직 삽입)
/home/pi/hub/Dockerfile 생성: FROM hypriot/rpi-node:boron-onbuild RUN apt-get update && apt-get install -y libmodbus5
센서 프로젝트 디렉토리 생성: /home/pi/sensor.
/home/pi/sensor/package.json 추가: { "name": "sensor", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node index.js", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "modbus": "0.0.16" } }
/home/pi/sensor/index.js에 센서 시뮬레이터와 모드버스 TCP 클라이언트 구현. REMOTE-HUB-ADDRESS.com을 허브 IP 또는 호스트명으로 교체: const modbus = require('modbus'); // 예: 센서 읽기 시뮬레이션 및 모드버스 쓰기 // (실제 로직 삽입) /home/pi/sensor/Dockerfile 생성: FROM hypriot/rpi-node:boron-onbuild RUN apt-get update && apt-get install -y libmodbus5
솔루션 배포
도커 이미지 빌드, 레지스트리에 푸시, 라즈베리 파이에서 컨테이너 실행. 허브와 센서 컨테이너가 로컬 네트워크로 통신 가능하도록 확인. 배포 완료 후 센서 시뮬레이터가 모드버스 TCP로 허브에 데이터 발행, 허브가 클라우드 엔드포인트로 전달.
이 가이드를 따라 강력하고 낮은 오버헤드의 IIoT 엣지 스택을 구축해 실제 산업 시나리오에서 모드버스의 힘을 확인해 보세요.