PLC 원격제어, EASY LOGGER MQTT 양방향 읽기·쓰기 예제

PLC 원격제어의 결론부터
PLC 원격제어에서 중요한 건 WRITE 메시지를 보냈다는 기록이 아니에요. 명령이 허용된 주소에 도착했고, PLC 인터록을 통과했으며, 실제 상태가 기대한 값으로 바뀌었는지 READ 데이터로 다시 확인해야 해요. 그래서 MQTT 양방향 제어는 읽기와 쓰기를 다른 Topic으로 나누고, 쓰기 뒤 재조회까지 한 묶음으로 설계하는 게 핵심이에요.
처음부터 운전·정지나 속도 설정 전체를 열면 원인을 구분하기 어려워요. 테스트용 WORD 주소 하나를 정하고 현재값 읽기, 제한된 값 쓰기, 결과 재읽기, 통신 단절 뒤 수동 복구 순으로 검증해 보세요. 이 글은 일반 MQTT 메뉴 설명을 반복하기보다 EASY LOGGER에서 PLC 주소와 payload를 맞추고 원격 쓰기 결과를 확인하는 흐름에 집중해요.
읽기와 쓰기를 다른 통로로
READ Topic은 PLC에서 수집한 현재값과 상태를 외부 운영 화면으로 보내는 통로예요. WRITE Topic은 승인된 원격 명령만 받는 통로예요. 두 Topic을 분리하면 조회 계정에는 읽기 권한만 주고, 제어 계정에는 필요한 장치와 주소 범위의 쓰기 권한만 줄 수 있어요. 원격 모니터링과 제어 권한이 섞이지 않아 산업 데이터 보안 경계도 더 분명해져요.
데이터 흐름은 PLC → EASY LOGGER → MQTT Broker → 운영 시스템의 읽기 방향과, 운영 시스템 → MQTT Broker → EASY LOGGER → PLC의 쓰기 방향으로 나뉘어요. 운영 시스템이 WRITE payload를 발행했다고 곧바로 성공으로 표시하면 안 돼요. EASY LOGGER의 수신 로그와 PLC의 다음 READ 값을 함께 비교해야 명령 전달과 실제 반영을 구분할 수 있어요.

PLC 상태는 운영 화면으로 읽고, 승인된 쓰기 명령은 별도 경로로 보내며 결과를 다시 확인하는 흐름이에요.
EASY LOGGER가 맡는 구간
EASY LOGGER는 LS PLC, Mitsubishi PLC와 Modbus 데이터를 통합 수집하고 수집 주기·저장 이력·전달 상태를 관리해요. MQTT 연결에서는 Topic과 payload를 구성하고 양방향 PLC 제어의 실행 상태를 확인하는 운영 계층을 맡아요. 다만 현장 안전 조건을 대신 판단하거나 인터록 없이 설비 동작을 보장하는 장치는 아니에요. 실제 쓰기 가능 주소, 데이터 타입, 허용 범위는 PLC 프로그램과 장비 문서를 기준으로 정해야 해요.
EASY-LINK는 현장 PLC와 센서 데이터를 수집해 MQTT, HTTP API, MySQL, Firebase 같은 목적지로 연결하는 산업용 IoT 게이트웨이 역할을 맡아요. 한 지점의 데이터 연결이 목적이면 EASY-LINK 중심으로 시작할 수 있어요. 여러 PLC의 저장 이력, 전달 상태, 대시보드와 제어 흐름을 함께 운영하려면 EASY LOGGER까지 구성하는 편이 맞아요. 두 제품의 확인된 범위는 HT Automation 공식 제품 페이지에서 확인할 수 있어요.

PLC 데이터 수집·저장·MQTT 연동과 양방향 제어를 운영하는 EASY LOGGER 공식 제품 이미지예요.
쓰기 뒤 상태까지 확인하기
원격 쓰기는 네 단계를 각각 기록해야 해요. 먼저 운영 시스템이 보낸 요청 시각과 payload를 남겨요. 다음으로 EASY LOGGER가 WRITE Topic을 구독해 메시지를 받은 시각을 확인해요. 그다음 PLC 쓰기 처리 결과를 보고, 마지막으로 같은 주소를 READ Topic에서 다시 읽어 기대값과 비교해요. 어느 단계가 비었는지 알 수 있어야 Broker 접속 문제, payload 오류, 주소 불일치, 인터록 거부를 나눠 볼 수 있어요.
KISA 스마트공장 보안모델은 스마트공장의 보안위협, 보안요구사항과 대응방안을 함께 살펴보도록 안내해요. 원격 쓰기도 단순 통신 설정이 아니라 계정 권한, 허용 경로, 로그와 복구 기준까지 포함해 운영해야 해요. KOSHA의 PLC 관련 사고사례도 목표값과 다른 상태에서 절차가 이어지지 않도록 인터록과 PLC 시퀀스를 보완하는 예방대책을 제시해요. MQTT 명령보다 현장 인터록이 우선이어야 하는 이유예요.
설정 화면의 메뉴 순서는 EASY LOGGER MQTT 설정 방법에서 먼저 확인할 수 있어요. 이 글에서는 그 설정을 실제 PLC 원격제어 검증으로 이어 볼게요.
EASY LOGGER MQTT 예제
아래 XBMPLC, D100_WORD, D0100은 설명을 위한 예시예요. D0100을 원격제어 시험용 WORD 필드로 가정했어요. 실제 적용 전에는 이 이름과 주소를 현장 PLC 주소 맵, 데이터 타입, 허용값 목록과 반드시 대조해야 해요.
Automatic Topic Preview에서 READ Topic과 WRITE Topic을 확인해요. 예시 경로는 다음과 같아요.
READ TOPIC: XBMPLC/D100_WORD/READ
WRITE TOPIC: XBMPLC/D100_WORD/WRITE
READ payload의 values.D0100은 PLC 주소 맵의 D0100 현재값과 대응해요. 같은 JSON 형식을 WRITE Topic에 사용할 때도 PLC명, 설정명, 데이터 타입과 주소 키가 실제 저장 목록과 일치해야 해요.
{
"plc_name":"XBMPLC",
"config_name":"D100_WORD",
"data_type":"word",
"values":{"D0100":123}
}
Subscribe to the WRITE Topic.
- 테스트 주소만 사용합니다.
- 최소 권한만 부여합니다.
- 허용 주소 범위를 제한합니다.
- PLC 인터록을 확인합니다.
- 수동 복구 절차를 준비합니다.
Runtime Status에서 MQTT Broker 연결과 마지막 처리 상태를 확인해요. Payload Log에서는 READ 발행 payload를, Subscribed Payload Log에서는 WRITE 수신 payload와 시각을 확인해요. 마지막으로 다음 READ 값이 123으로 바뀌었는지 비교해요. 값이 그대로라면 쓰기 명령을 반복하지 말고 주소 권한, 데이터 타입, 인터록과 PLC 상태부터 점검해요.
한 주소부터 운영으로 넓히기
첫 단계는 테스트 PLC 한 대와 쓰기 주소 하나예요. 두 번째 단계에서 정상값·경계값·허용되지 않은 값을 나눠 시험하고, 세 번째 단계에서 통신 단절과 재연결 뒤 같은 명령이 중복 실행되지 않는지 확인해요. 마지막으로 운영 계정과 조회 계정을 분리하고 변경 이력과 수동 복구 담당자를 정해요. 이 순서라면 스마트팩토리와 원격지 설비의 설비 데이터 수집을 안전한 PLC 연동과 데이터 연동으로 넓힐 수 있어요.
현재 PLC 모델, 통신 방식, 읽을 주소와 제어할 테스트 주소를 정리한 뒤 현장 연결 가능 여부를 확인해 보세요. EASY-LINK만으로 연결할지 EASY LOGGER에서 저장·대시보드·원격제어까지 운영할지 범위를 함께 판단할 수 있어요. 다른 적용 기준은 기술 블로그에서 이어서 볼 수 있어요.