EASY LOGGER에 RS485(Modbus RTU) 장치를 등록하고 MQTT·MySQL로 함께 저장하는 방법

먼저, 수집 후 무엇이 달라지나요?
안녕하세요. RS485(Modbus RTU) 계측기나 PLC의 값을 읽는 일은 통신 연결에서 끝나지 않아요. 주소와 현장 필드를 맞추고 정상 수집을 확인한 뒤 실시간 전달과 이력 저장을 같은 기준으로 운영해야 활용도가 생겨요. 국내 나라장터 공개 규격서에서도 산업 장비의 운전 상태와 주요 계측 데이터를 직접 수집하고, 저장·전송하며 통신 장애 때 임시 저장과 재전송을 고려하는 요구를 확인할 수 있어요.
EASY-LINK는 RS-485 현장 연결과 장치 데이터 전달을 맡고, EASY LOGGER는 장치 등록·저장 목록·수집 상태·저장 이력·전달 상태와 대시보드 운영을 맡는 식으로 역할을 나누면 이해하기 쉬워요. 원격 설비도 장치 한 대와 한 공정의 핵심 필드부터 시작하고 값과 주소가 맞는지 확인한 뒤 MQTT와 MySQL을 붙이는 순서가 좋아요.

현장 값을 실시간 전달과 이력 보존으로 나누어 활용하는 흐름이에요.
1. RS485(Modbus RTU) 장치 또는 PLC 등록
EASY LOGGER의 장치 등록에서는 예시 이름, 통신 포트, 슬레이브 주소, 보드레이트, 데이터 비트, 패리티, 스톱 비트를 장치 매뉴얼과 대조해 입력해요. RS485 A/B 배선의 극성, 종단 저항, 공통 기준도 확인해야 해요. Mitsubishi PLC를 예로 들더라도 실제 PLC 모델과 Modbus RTU 통신 모듈의 설정을 기준으로 판단해야 하고, 기능 코드와 주소 기준이 0-base인지 1-base인지 확인해요.
MITSU_PLC_A, METER_01, D0100은 설명을 위한 예시일 뿐이에요. 실제 필드 주소 맵과 대조하지 않은 주소와 데이터 타입은 운영 설정으로 쓰면 안 돼요. 등록 직후에는 Runtime Status에서 마지막 수신 시각과 오류 상태가 갱신되는지 확인해요.
2. 저장 목록에서 항목·주기·주소 맞추기
저장 목록에서는 모든 레지스터보다 공정 판단에 필요한 항목을 먼저 선택해요. 운전 상태, 누적량, 현재값처럼 의미가 분명한 필드로 시작하고 필드 이름·주소·데이터 타입·부호·스케일·단위를 연결해요. 실제 주소 맵에서 D0100이 어떤 필드인지, 32비트 값의 워드 순서가 어떤지 확인한 뒤 반영해야 해요.
수집 주기는 장치 응답 시간과 공정 변화 속도를 함께 보고 정해요. 너무 짧으면 RS485 응답 지연과 재시도가 겹치고, 너무 길면 상태 변화가 늦게 보여요. 한 장치의 소수 필드로 주기를 정한 다음 저장 목록의 마지막 수집 시각이 꾸준히 갱신되는지 보고 늘려요. 같은 시각 기준으로 항목을 정렬하고 결측·지연 상태를 구분하면 MySQL 이력을 해석하기 쉬워져요.
3. 수집값이 정상인지 화면에서 확인하기
정상 여부는 값 하나만 보고 결정하지 않아요. 마지막 수집 시각이 주기 안에 들어오는지, 허용 범위인지, 단위와 소수점이 현장 표시와 맞는지, 통신 오류가 반복되지 않는지를 같이 봐요. 값이 멈췄다면 센서 고장으로 단정하지 말고 배선, 슬레이브 주소, 응답 지연, 주소 오프셋을 차례로 나눠 확인해요.
Runtime Status는 연결과 수집 시각을, Payload Log는 실제 필드와 값 형태를 확인하는 지점으로 활용해요. 정상 값이 일정한 주기로 들어온 뒤에야 MQTT와 MySQL을 동시에 켜는 것이 좋아요.

주소 매핑과 수집 상태를 확인한 뒤 전달 경로를 늘리는 단계적 도입이에요.
EASY LOGGER MQTT 예제
아래 MITSU_PLC_A, D100_WORD, D0100은 예시 이름과 주소예요. 실제 필드 주소 맵과 대조해 READ Topic과 WRITE Topic을 결정해야 해요. HT Automation 공식 자료의 MQTT 전달 범위를 참고하되, 현장 설정에서 Automatic Topic Preview로 실제 경로를 확인하고 Runtime Status와 Payload Log로 연결·페이로드 흐름을 점검해요.
READ Topic: MITSU_PLC_A/D100_WORD/READ
WRITE Topic: MITSU_PLC_A/D100_WORD/WRITE
{
"plc_name": "MITSU_PLC_A",
"config_name": "D100_WORD",
"data_type": "word",
"values": {"D0100": 123}
}
values.D0100은 저장 목록의 필드 주소와 같은 값을 가리키는 예시예요. Topic Preview에서 READ·WRITE 경로를 보고 Runtime Status에서 발행 상태를 확인한 다음 Payload Log에서 values의 주소·단위·시각을 대조해요. 실제 PLC명·설정명·주소와 payload 필드는 확인된 주소 맵과 대조해야 해요. WRITE가 필요할 때도 시험 주소에서만 검증해요.
- Subscribe to the WRITE Topic.
- 테스트 주소만 사용합니다.
- 최소 권한만 부여합니다.
- 허용 주소 범위를 제한합니다.
- PLC 인터록을 확인합니다.
- 수동 복구 절차를 준비합니다.
EASY LOGGER MySQL 예제
MySQL은 EASY LOGGER 내부 스키마를 가정하지 않고 운영팀이 관리하는 외부 데이터베이스의 스키마·테이블·권한을 먼저 정해 연결해요. 예를 들어 외부 스키마 telemetry_history에 collected_at, device_name, field_address, value_decimal, quality를 두는 식이에요. 실제 컬럼명과 타입은 운영 DB 표준에 맞춰 결정해야 해요.
CREATE TABLE telemetry_history (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
collected_at DATETIME NOT NULL,
device_name VARCHAR(80) NOT NULL,
field_address VARCHAR(40) NOT NULL,
value_decimal DECIMAL(18,4) NULL,
quality VARCHAR(20) NOT NULL
);
SELECT collected_at, value_decimal, quality
FROM telemetry_history
WHERE device_name = 'MITSU_PLC_A'
AND field_address = 'D0100'
AND collected_at >= CURRENT_TIMESTAMP - INTERVAL 24 HOUR
ORDER BY collected_at DESC;
이 테이블과 컬럼은 외부 시스템 예시이며 EASY LOGGER의 내부 스키마를 단정하지 않아요. 저장 목록의 D0100, MQTT의 values.D0100, DB의 field_address가 같은 필드를 가리키는지 맞추는 것이 핵심이에요. DB History에서 수집 시각·주소·값·품질을 조회하고 MQTT Payload Log와 같은 시각의 값을 비교해요. 보존 기간은 외부 DB 운영 기준으로 정하고, 예를 들어 180일보다 오래된 기록을 정리하는 정책은 다음처럼 별도로 관리할 수 있어요.
DELETE FROM telemetry_history
WHERE collected_at < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 180 DAY);
실제 삭제 주기와 보존 기간은 감사·분석 요구에 맞춰 정하고, 운영 전에는 백업과 권한을 확인해요. 특정 장치와 주소를 찾을 때는 device_name, field_address, collected_at를 함께 조건으로 넣어 검색 범위를 줄여요.
MQTT와 MySQL을 함께 쓸지 판단하는 기준
MQTT는 여러 소비자가 변화를 빠르게 받아야 할 때 유용해요. 관제 화면과 상위 MES·CIM은 MQTT 브로커를 통해 구독할 수 있고, 상위 연계는 확인된 MQTT·HTTP API·DB 인터페이스 범위에서 설계해야 해요. MySQL은 시간 구간 조회, 결측·품질 확인, 원인 분석의 근거를 남기는 데 적합해요.
실시간 알림만 필요하고 이력 책임이 다른 시스템에 있으면 MQTT만으로 시작할 수 있어요. 장기 조회가 중요하고 실시간 구독자가 없다면 MySQL만 먼저 써도 돼요. 즉시성과 사후 검증을 모두 해결해야 한다면 같은 저장 목록과 같은 변환 기준으로 두 경로를 함께 써요. EASY-LINK만으로 현장 연결과 단순 전달이 충분한 경우가 있고, 여러 장치의 등록·수집 이력·전달 상태·대시보드 운영까지 관리해야 할 때 EASY LOGGER를 함께 검토하면 좋아요.
한 장치로 작게 시작하고 연결 가능 여부 확인하기
처음에는 한 장치와 핵심 필드 하나를 등록해 주소 매핑, 수집 주기, 정상 범위를 확인해요. 다음으로 MQTT READ 발행을 켜서 Topic Preview와 Payload Log를 대조하고, 마지막에 외부 MySQL 이력 저장을 붙여요. 이 순서를 지키면 통신 문제와 전달·저장 문제를 분리해서 볼 수 있어요.
현장마다 RS485 배선, 장치 주소, 필드 타입, 보안 정책이 다르므로 예시를 그대로 복사하기보다 실제 주소 맵과 운영 기준을 먼저 대조해 보세요. 구매를 서두르기보다 현장 연결 가능 여부와 필요한 필드·전달·이력 범위를 확인해 보는 것부터 시작하면 충분해요.