Azure IoT Edge로 PLCnext 최적화: 엣지 분석 및 클라우드 통합
Azure IoT Edge를 사용하면 클라우드 분석과 사용자 지정 로직을 "엣지", 즉 PLCnext 장치로 이동할 수 있습니다. 이는 대역폭 사용량과 지연 시간을 줄이는 이점이 있습니다. Azure IoT Edge를 사용하면 중앙 클라우드 애플리케이션에서 자체 애플리케이션을 개발하고 배포할 수 있습니다. 이 블로그에서는 Azure IoT Edge 설정과 기본 원칙을 배웁니다.
소개
Azure IoT Edge 솔루션의 모든 세부 사항을 설명하기엔 메이커스 블로그 범위를 벗어날 수 있으니, 계속하기 전에 이 포털에서 충분히 읽어보시기 바랍니다. 자, 런타임을 설치해 봅시다.

설치
Azure IoT Hub 생성 및 디바이스 등록
시작하기 전에 Azure 포털에서 몇 가지를 설정해야 합니다. Azure 계정이 이미 있다고 가정합니다.
- 리소스 그룹 생성: "리소스 그룹 만들기" 클릭, 없으면 "+" 버튼으로 검색 후 생성. 설명적인 이름 부여.
- 새 IoT Hub 서비스 생성: 무료 티어(1개 무료 가능)로 변경 권장. 나머지 기본값 유지 후 배포.
- IoT Edge 디바이스 생성: 서비스 열기 → 왼쪽 패널에서 "IoT Edge" 클릭 → "새 IoT Edge 디바이스" 생성. 디바이스 ID 부여, 나머지는 기본값.

새로 생성된 디바이스를 클릭하고 "기본 연결 문자열(Primary Connection String)"을 기록해 둡니다. 다음 단계에서 디바이스 프로비저닝에 필요합니다.

Azure IoT Edge 런타임 설치
아래 명령을 순서대로 실행하세요. 최신 버전은 여기에서 확인 가능합니다.
git clone https://github.com/pxcbe/azure-iot-edge.git
cd azure-iot-edge/install
sudo passwd root
su
chmod +x SetupEdge.sh
./SetupEdge.sh
다음 단계는 디바이스 프로비저닝입니다. 반자동 또는 완전 자동도 가능합니다. 인포포털에서 자세한 정보를 확인하세요. 다음 명령을 쉘에 입력하고 55번째 줄에 연결 문자열을 붙여넣으세요 (ctrl+s, ctrl+x로 저장 후 종료).
nano /etc/iotedge/config.yaml
변경 사항 적용을 위해 컨트롤러를 재부팅합니다.
reboot
설치 확인
루트 권한으로 다음 명령 실행:
iotedge check --verbose
오류가 없으면 진행! 오류가 있으면 GitHub 저장소에서 수정 사항을 확인하거나 이슈를 생성하세요.
모듈 배포
런타임만으로는 부족합니다. 모듈을 배포해 봅시다! "모듈 설정" 클릭 → "런타임 설정" 클릭. PLCnext에서 실행 중인 NGINX 서버와 충돌하지 않도록 "Hostport"를 변경해야 합니다. 마지막으로 마켓플레이스 모듈 "Simulated Temperature Sensor" 추가. "검토 + 만들기" 누르고 PLCnext 디바이스에 배포.

설정은 다음과 같아야 합니다:
{
"HostConfig": {
"PortBindings": {
"443/tcp": [{"HostPort": "444"}],
"5671/tcp": [{"HostPort": "5671"}],
"8883/tcp": [{"HostPort": "8883"}]
}
}
}

원격 측정 메시지 확인
메시지가 들어오는지 확인하려면 이 절차를 따라 Visual Studio Code에 Azure IoT Tools를 설치하세요. (Azure 로그인 필요, 인증서 사용 시 개발 머신에도 있어야 함)
PLCnext 데이터를 IoT Hub로 전송
다음 단계는 PLCnext Engineer 데이터를 클라우드로 가져오는 것입니다. 여러 방법이 있습니다:
- Modbus 모듈 사용: PLCnext 프로젝트에 Modbus 서버 생성
- REST 서비스 사용: 커스텀 모듈로 GET 요청, 또는 마켓플레이스에서 적합한 모듈 찾기
- OPC Publisher 사용: PLCnext 내장 OPC UA 서버에서 데이터 발행 (이 블로그에서 설명)
업데이트: 현재 OPC Publisher 모듈에 오류가 있는 것으로 보입니다. 당분간 다른 방법을 시도해 주세요.
면책 조항: 이 블로그에서는 PLCnext 보안 기능을 비활성화합니다. 프로덕션 환경에서는 사용하지 마세요!
PLCnext 장치의 WBM에서 사용자 인증을 비활성화한 후 계속 진행하세요.
마켓플레이스에서 "Simulated Temperature Sensor"와 같은 방식으로 OPC Publisher 추가. 모듈 클릭 → 컨테이너 생성 옵션으로 이동. 다음 설정을 창에 복사 붙여넣기:
{
"Hostname": "publisher",
"Cmd": [
"publisher",
"--pf=/appdata/publishednodes.json",
"--di=60",
"--to",
"--aa",
"--si=10",
"--ms=262144"
],
"HostConfig": {
"Binds": ["/iiotedge:/appdata"],
"PortBindings": {
"62222/tcp": [{"HostPort": "62222"}]
},
"ExtraHosts": ["localhost:127.0.0.1"]
}
}
다음 설정을 본인의 노드 ID에 맞게 수정하고, /appdata 폴더를 생성한 후 publishednodes.json 파일에 새 설정을 저장하세요:
[
{
"EndpointUrl": "opc.tcp://192.168.10.10:4840",
"UseSecurity": false,
"OpcNodes": [
{
"Id": "ns=3;s=Counter",
"OpcSamplingInterval": 2000,
"OpcPublishingInterval": 5000
},
{
"Id": "ns=3;s=Sinusoid",
"OpcSamplingInterval": 2000,
"OpcPublishingInterval": 5000
}
]
}
]
모든 것이 잘 됐다면 Visual Studio용 Azure IoT Tools에서 데이터를 볼 수 있어야 합니다!
여전히 문제가 있다면?
iotedge logs -f "namemode"
다음 명령으로 상황을 확인하세요.
감사의 말
Oliver Warneke에게 특별히 감사드립니다. 그의 작업을 기반으로 구축할 수 있었고, 제가 빠르게 적응할 수 있도록 시간을 내주셨습니다!
연락처
문제가 발생하거나 더 알고 싶으시면 axsupport@phoenixcontact.be로 연락주세요.
참고 자료
Azure IoT Edge 문서