국책과제 시험 설비 소비전력 값을 조건별 기록으로 남기는 구성

시험 설비의 전력 값이 기록으로 남아야 하는 이유
시험 리그를 한 회차 돌리고 나면 그 조건에서 설비가 실제로 얼마나 썼는지 묻는 자리가 옵니다. 계측기 화면에는 지금 값이 떠 있지만 지난주 3차 시험 구간의 값은 어디에도 없는 경우가 많습니다. 보고서에 들어갈 값은 그 순간의 눈금이 아니라 조건별로 이어진 기록입니다.
기록이 쌓이면 판단할 수 있는 범위가 넓어집니다. 같은 조건에서 소비전력이 이전 회차보다 높게 나왔다면, 설비 상태가 달라진 것인지 시험 조건이 달라진 것인지 값으로 구분해 볼 수 있습니다. 중간 점검이나 정산 단계에서 언제 몇 시간을 돌렸고 그때 값이 어땠는지 되짚을 때도 남아 있는 값이 근거가 됩니다.
무엇을 얼마나 자주 읽을 것인가
현장 구성은 대체로 비슷합니다. 시험 설비 배전반에 붙은 전력계가 유효전력과 전류 값을 내보내고, 그 값을 LS PLC가 워드 영역에 받아 둡니다. 값이 이미 제어기 안에 들어와 있으므로 남은 일은 그 주소를 정해진 간격으로 읽어 남기는 것입니다.
정할 것은 세 가지입니다. 어느 주소를 읽을지, 몇 개를 읽을지, 얼마나 자주 읽을지입니다. 시험 구간이 짧은 설비는 1000ms 간격으로도 추세를 보기에 충분하고, 기동 피크까지 봐야 한다면 더 짧게 잡습니다. 다만 주소를 늘릴수록 제어기와 네트워크 부하가 함께 늘어나므로 보고서에 실제로 들어갈 주소만 골라 두는 편이 안정적입니다.

배전반 계측값이 정해진 주기마다 읽혀 저장 계층으로 넘어가는 경로
계측값을 옮기는 두 개의 계층
EASY-LINK는 현장 장치와 상위 구간을 잇는 연결 역할을 맡습니다. 계측 모듈이 자체 브로커로 값을 발행하는 구성이라면 EASY-LINK가 그 값을 MQTT 토픽으로 실어 보내고, 상위 쪽은 SUBSCRIBE TOPIC과 ROOT KEY, ADDRESSES를 지정해 받습니다. 주소를 계산하지 않고 메시지에 실려 오는 주소키를 그대로 쓰는 방식이라 계측기 구성이 바뀌어도 손댈 곳이 적습니다.
EASY LOGGER는 그 값을 받아 쌓는 운영 계층입니다. MAIN 설정에서 CONNECTION PROTOCOL을 LS F-NET / XGT TCP로 고르고 PLC NAME과 IP ADDRESS, PORT를 넣어 등록한 다음, 수집 조건에 CONFIG NAME, DATA TYPE, 시작 번지, 수집요청주기, 디바이스 수를 채웁니다. 저장 PLC 목록의 STATUS가 RUNNING으로 바뀌면 전력계 값의 센서 데이터 수집이 시작된 것입니다. 산업용 IoT 게이트웨이 한 대가 수집과 저장, 외부 연동, 화면 표시를 함께 맡는 구조입니다.
PLC NAME과 CONFIG NAME은 처음에 신중하게 정합니다. 이 두 이름이 MQTT 토픽과 HTTP API 엔드포인트, OPC-UA 노드 경로에 그대로 들어가기 때문에, 운영을 시작한 뒤에 바꾸면 붙어 있던 외부 시스템 주소가 모두 달라집니다.
어디로 보낼지 정합니다
이 구성의 주 전달 대상은 MySQL입니다. 과제 기간 내내 값을 조건별로 되짚어야 하므로, 시간 축으로 검색되는 저장소가 우선입니다. MariaDB를 쓰는 현장도 입력 항목은 같습니다.
MQTT는 값이 생기는 즉시 여러 곳으로 퍼뜨리기 좋지만, 브로커는 흘러가는 값을 다루는 통로에 가깝습니다. Retain을 켜도 마지막 값 한 개가 남을 뿐이라 회차 비교에는 부족합니다. HTTP API는 상위 시스템이 필요한 시점에 가져가는 방식이라 요청과 응답 관계가 분명한 대신, 요청이 없는 구간의 값은 따로 쌓아 두어야 합니다. Firebase처럼 클라우드 쪽에 두는 선택은 외부에서 화면을 열기 쉽지만 폐쇄망 과제에서는 쓰기 어렵습니다. 실무에서는 MySQL에 남기면서 필요한 항목만 MQTT로 함께 내보내는 조합을 많이 씁니다. MES 같은 상위 시스템과 붙일 때도 인터페이스는 MQTT, HTTP API, 데이터베이스 세 가지 안에서 정리됩니다.

같은 계측값을 실시간 전달 경로와 기록 저장 경로로 나눠 보내는 구성
EASY LOGGER MySQL 예제
DB 설정 화면의 스위치를 ENABLE로 켜고 DB Name, Host Address, Port, User, Password를 채운 뒤 연결 테스트를 누릅니다. 장비 안의 데이터베이스를 쓰면 Host Address는 127.0.0.1이고 Port는 3306입니다. 설정 저장을 누르면 수집 설정 이름으로 테이블이 만들어지고 Timestamp, Config, Address, Value 컬럼에 값이 쌓입니다. 저장된 값은 외부 데이터베이스에 그대로 남아 과제 담당자가 SELECT 쿼리로 조회합니다. 분석 도구는 아래와 같은 형태의 스키마와 테이블을 그대로 읽습니다.
CONNECTION PROTOCOL: LS F-NET / XGT TCP
PLC NAME: RND_POWER
CONFIG NAME: RND_POWER_MAIN
DATA TYPE: DWORD
Host Address: 127.0.0.1
Port: 3306
DB Name: rnd_power
SELECT Timestamp, Config, Address, Value
FROM RND_POWER_MAIN
WHERE Config = 'RND_POWER_MAIN'
AND Address IN ('D100', 'D102')
AND Timestamp BETWEEN '2026-09-04 08:00:00' AND '2026-09-04 20:00:00'
ORDER BY Timestamp;
값이 실제로 들어가는지는 화면에서 확인합니다. 화면 아래 STATUS 표시등의 DB가 정상인지 보고, DB 이력 로그(DB History)에서 전체 처리 건수와 성공률, 마지막 오류 시각을 봅니다. DB 조회 화면에서는 테이블을 고르고 기간을 지정해 필요한 구간만 검색한 뒤 CSV 출력으로 뽑을 수 있습니다. 보존 기간(retention)은 DB 저장 공간 관리의 DB TABLE DELETE에 정해 두면 매일 00:00에 기간이 지난 수집 데이터만 지웁니다. EASY LOGGER 대시보드에서는 게이지와 그래프로 값을 보면서 저장 이력과 전달 상태를 같은 화면에서 확인합니다.
한 대부터 시작하는 단계적 구성
처음부터 모든 시험 설비를 묶을 필요는 없습니다. 국책과제 개발 일정에서는 시험 리그 한 대에 전력계 두 채널만 먼저 붙여 값이 제대로 쌓이는지 보고, 같은 방식으로 단계적으로 대상을 넓히는 편이 빠릅니다. 첫 대상에서 주소와 데이터 타입, 수집요청주기가 정리되면 두 번째 설비부터는 설정을 복사하는 수준으로 끝납니다.
데이터 연동 범위를 넓힐 때는 MySQL에 남기는 항목과 MQTT로 내보내는 항목을 나눠 두면 관리가 쉽습니다. 다른 저장 대상을 검토한 사례는 국책과제 압력 검증 데이터 구성에 정리해 두었고, 다른 현장 구성은 블로그 글 목록에서 보실 수 있습니다. 제품 구성과 사양은 홈에 있습니다.
설비 목록과 통신 방식, 읽어야 할 주소만 알려 주시면 현장 연결 가능 여부를 먼저 확인해 드립니다. 도입 여부를 정하기 전에 가능 여부만 짚어 보셔도 됩니다.