EASY LOGGER 사용 예제: WireGuard VPN으로 원격 PLC 데이터를 MySQL에 남기기

먼저 결론부터 볼게요
원격지 PLC의 데이터를 사무실에서 읽으려면 통신 경로와 저장 경로를 따로 설계해야 해요. 고정 IP를 외부에 공개하거나 PLC 포트를 인터넷에 직접 열어 두는 방식은 현장 네트워크 정책과 접근통제 부담을 키울 수 있어요. WireGuard VPN은 승인된 네트워크 사이에 암호화된 터널을 만들고, 그 안에서 필요한 PLC 대상만 접근하도록 경계를 나누는 선택지예요.
다만 VPN을 구성했다고 현장 조건이 자동으로 해결되는 건 아니에요. 공인 IP 또는 VPN 서버의 연결 조건, 방화벽 정책, 사내망 승인, PLC 통신 포트와 주소는 담당자가 먼저 확인해야 해요. 이 글은 확인된 EASY LOGGER 범위 안에서 LS XGT, Mitsubishi MC, Modbus RTU/TCP를 한 터널로 다루고, 읽은 PLC 운영 데이터를 외부 MySQL에 기록하는 흐름을 설명해요.
포트 개방과 VPN은 무엇이 달라질까요
포트포워딩이나 DDNS를 쓰는 방식은 외부에서 현장 주소와 전달 포트를 찾아 들어오는 경로를 만들어요. 이때 어떤 주소와 포트를 언제 열어 둘지, 방화벽 예외를 어떻게 승인·기록할지, 변경 뒤 접근 권한을 어떻게 회수할지가 운영 과제가 돼요. VPN은 공개 주소를 늘리는 대신 VPN 피어와 허용된 경로를 기준으로 사설 통신 구간을 구성하는 방식이라서 접근 경계와 기록 위치를 다시 설계하게 해요.
국내 보안 자료도 원격접속에서 필요한 IP·포트만 허용하고 접속 기록을 남기며 네트워크 구간을 암호화하는 통제를 제시해요. 따라서 WireGuard를 선택하더라도 관리자 계정, 키 보관과 허용 대상은 현장 승인 절차에 맞춰 정해야 해요.
PLC 수집 경로와 제품 역할을 나눠요
EASY-LINK는 현장 PLC와 네트워크 사이의 게이트웨이로서 LS XGT, Mitsubishi MC, Modbus RTU/TCP처럼 확인된 수집 방식을 연결하고 데이터를 전달하는 역할을 맡아요. 한 장치의 PLC 데이터를 필요한 목적지로 보내는 연결 계층이 중심이라서, 현장 배선과 주소 맵, 읽기 조건을 먼저 맞춰야 해요.
EASY LOGGER는 여러 EASY 장치와 PLC 데이터를 통합하는 데이터 로거이자 운영 계층이에요. WireGuard VPN, 수집 주기, 저장 이력, 전달 상태, 대시보드 범위를 함께 관리할 수 있어 원격지 여러 제조사의 PLC를 한 운영 흐름으로 묶을 때 검토하기 좋아요. 대시보드는 EASY-LINK 단독 기능으로 보지 않고 EASY LOGGER의 통합 관리 범위로 설명해야 해요.
두 제품은 같은 역할을 반복하지 않아요. 현장 연결과 데이터 전달만 필요하면 EASY-LINK 중심으로 확인하고, VPN 원격 접근과 여러 PLC의 수집 이력·전달 상태를 함께 운영해야 한다면 EASY LOGGER까지 이어서 검토해요. MES나 CIM과의 연계는 MQTT, HTTP API 또는 DB 인터페이스라는 확인된 경로로 설계하고, 실제 지원 범위와 연결 조건은 담당자가 확인해야 해요.

원격 PLC 데이터를 승인된 VPN 경로로 읽고 저장·확인하는 흐름이에요.
연결 전에 확인할 현장 항목
먼저 현장 PLC의 제조사와 통신 방식을 주소 맵에 적어요. LS XGT, Mitsubishi MC, Modbus RTU/TCP가 실제 설비에 어떻게 배치됐는지, 각 PLC의 대상 주소와 데이터 타입이 무엇인지 확인해야 해요. 예시 주소를 실제 주소처럼 복사하지 말고, 태그 이름·PLC 주소·단위·수집 주기·마지막 변경 시각을 한 표에서 대조하는 게 좋아요.
그다음 WireGuard 쪽에서는 서버 Endpoint, 피어 키, VPN 주소, Allowed IPs와 필요한 대상 경로를 담당자와 확인해요. EASY LOGGER 공식 네트워크 자료에도 VPN 상태, Handshake, 송수신 상태와 PLC 포트 매핑을 점검하는 흐름이 안내돼요. 고정 IP가 있는지, 방화벽에서 어떤 연결을 허용할지, 사내망에 원격 접근을 승인할지는 현장 담당자와 보안 담당자가 결정해야 해요.
원격 쓰기나 제어는 읽기 수집과 분리해 기본 비활성으로 두는 편이 안전해요. 필요한 경우에도 최소 권한, 허용 주소 범위, PLC 인터락, 수동 복귀 절차를 먼저 확인하고 운영 중인 주소에 바로 시험 명령을 보내지 않도록 해요.
MySQL에 남기기 전 목적지를 비교해요
VPN은 연결 경로를 정하는 기술이고, 데이터를 어디에 남길지는 별도 판단이에요. MQTT는 여러 소비자에게 이벤트를 전달하기 좋고, HTTP API는 상위 서비스의 요청·응답 계약에 맞추기 쉬워요. MySQL은 수집 시각, PLC 주소, 값, 상태를 외부 스키마에 기록해 기간별 검색과 이력 조회를 하려는 경우에 검토할 수 있어요. Firebase는 화면 중심의 상태 공유가 필요할 때 비교 대상이 될 수 있어요.
이번 구성의 deliveryTarget은 엣지 서버예요. VPN으로 읽은 PLC 값을 운영 서버에 모아 DB에 기록해요. MQTT와 HTTP API도 전달 대안이고, MySQL은 통합 예제 경로예요. 외부 스키마와 테이블은 현장 DB 담당자가 정하며 EASY LOGGER 내부 스키마로 가정하지 않아요. 보존 기간과 재전송, 시간대·단위는 운영 기준에 맞춰 합의해요.

작은 수집 범위에서 주소 매핑과 연결 상태를 확인한 뒤 DB 이력으로 넓혀 가는 단계예요.
원격 모니터링은 PLC 한 대, 읽기 주소 한 구간, 외부 DB의 한 기록 흐름으로 시작해요. VPN Status에서 Handshake와 송수신 상태를 보고, DB History의 성공·실패 기록과 실제 MySQL 조회 결과를 대조해요. 값이 없을 때는 PLC 주소, VPN 경로, 방화벽, DB 연결을 구간별로 확인해야 원인을 좁힐 수 있어요.
EASY LOGGER MySQL 예제
아래 SQL은 EASY LOGGER 내부 스키마가 아니라 현장 담당자가 별도로 만든 외부 스키마와 테이블을 가정한 예시예요. plc_tag, value_number, collected_at 같은 필드는 실제 DB 설계에 맞춰 바꾸고, D0100 등의 PLC 주소는 현장 주소 맵과 먼저 대조해야 해요. EASY LOGGER에서 수집 주기와 전달 상태를 확인한 뒤 DB History에서 기록이 쌓였는지 보고, 외부 DB의 검색 결과를 비교해요.
SELECT collected_at, plc_name, plc_tag, value_number, quality
FROM site_plc_history
WHERE plc_name = 'REMOTE_PLC_A'
AND plc_tag = 'D0100'
AND collected_at >= :from_time
AND collected_at < :to_time
ORDER BY collected_at DESC;
이 쿼리의 site_plc_history와 컬럼은 외부 시스템의 예시 이름이에요. plc_tag가 실제 PLC 주소 맵의 어느 필드인지, value_number의 단위와 변환 규칙이 무엇인지, quality가 수집 성공 상태를 어떻게 표현하는지 DB 담당자와 정해야 해요. DB History의 전달 상태와 외부 MySQL의 레코드 시각이 어긋나면 VPN Handshake, 수집 주기, DB 연결 로그를 차례로 확인해요.
이 방식으로 MES나 CIM에 데이터를 넘길 때도 MQTT, HTTP API 또는 DB 인터페이스 중 현장 계약에 맞는 경로를 고르고, 상위 시스템 필드명과 PLC 주소 맵을 별도로 관리해요. 제품 자료와 설정 항목은 EASY LOGGER 네트워크 설정과 VPN 운영 기준에서 확인하고, 실제 버전별 항목은 제품 매뉴얼 자료실에서 대조하면 좋아요.
현장 연결 가능 여부를 확인해 보세요
구매나 전체 설비 확장부터 결정하기보다 현재 PLC 제조사와 통신 방식, VPN 서버 조건, 방화벽 정책, 사내망 승인, MySQL 담당 범위를 먼저 적어 보세요. 그 정보가 정리되면 EASY-LINK가 맡을 연결 계층과 EASY LOGGER가 맡을 운영 계층을 나누고, 읽기 전용의 작은 범위에서 현장 연결 가능 여부를 확인해 볼 수 있어요.
원격 쓰기·제어가 필요해지는 경우에는 기본 비활성, 최소 권한, 인터락, 수동 복귀를 다시 확인하고 담당자 승인 뒤에 별도 검증하세요. VPN은 현장 조건을 대신 결정하는 기능이 아니라, 승인된 접근 경로와 운영 기록을 설계하기 위한 한 구성 요소예요.