미쓰비시 MC 프로토콜 시리얼 수집값을 MySQL에 남기기

시리얼로 수집한 값을 저장할 때는 **"얼마나 자주 남길 것인가"**를 통신 속도와 함께 생각하셔야 합니다. 저장 주기를 통신이 감당하는 속도보다 짧게 잡으면, 데이터베이스에는 같은 값이 반복해서 들어갑니다.
이 글은 시리얼 MC 프로토콜로 수집한 값을 MySQL에 저장하고 Node-RED에서 조회하는 과정입니다.
저장 주기를 정하는 순서
거꾸로 생각하시면 쉽습니다.
1. 이 값으로 무엇에 답할 것인가 "어제 최고 온도"라면 1분 주기로 충분합니다. "설비가 언제 정확히 멈췄나"라면 더 짧아야 합니다.
2. 통신이 그 주기를 감당하는가 읽을 개수 × 통신 속도를 고려합니다. 시리얼에서 값 수십 개를 1초마다 읽는 것은 무리인 경우가 많습니다.
3. 데이터가 얼마나 쌓이는가 1초 주기 × 값 10개 = 하루 86만 행입니다. 1분 주기면 1만 4천 행입니다. 60배 차이입니다.
대부분의 현장에서 10초~1분이 실용적인 출발점입니다. 부족하면 줄이시면 됩니다.
같은 값이 반복해서 들어간다면
통신 주기보다 저장 주기가 짧으면 이런 일이 생깁니다. 확인 방법은 간단합니다.
SELECT 값컬럼, COUNT(*) FROM 테이블명
WHERE 시간컬럼 >= NOW() - INTERVAL 1 HOUR
GROUP BY 값컬럼 ORDER BY COUNT(*) DESC LIMIT 5
특정 값이 유난히 많이 나온다면 저장 주기를 늘리시거나, 값이 변했을 때만 저장하는 방식으로 바꾸십시오.
Step 1. 준비
Node-RED 설치와 데이터베이스가 필요합니다. 테이블 작성은 HeidiSQL로 하시고, Node-RED 팔레트에서 MySQL 노드를 추가하십시오.



Step 2. PLC 및 EASY-LINK 확인


시리얼이므로 통신 속도·국번이 양쪽에서 같아야 하고, 프로토콜은 MC3C입니다.


저장 테이블 이름과 컬럼 구성을 확인해 두십시오. 컬럼 이름은 의미가 담기게 잡으시길 권합니다. d100보다 oven_temp가 반년 뒤에 도움이 됩니다.
Step 3. Node-RED 조회 흐름

inject → MySQL → debug 로 구성합니다.
SELECT * FROM 테이블명 ORDER BY id DESC LIMIT 10





잘 안 될 때 확인할 것
- PLC 값이 안 읽힌다 — 통신 속도·국번, MC3C 선택, RS-485 극성을 확인합니다.
- 데이터베이스에 안 들어간다 — 접속 정보와 테이블 존재 여부를 확인합니다.
- 같은 값만 반복된다 — 저장 주기가 통신 주기보다 짧습니다. 위 쿼리로 확인하십시오.
- 행이 군데군데 빠진다 — 통신이 밀리고 있을 수 있습니다. 읽을 개수를 줄여 보십시오.
- 점점 느려진다 — 시간 컬럼 인덱스를 확인합니다.
자주 묻는 질문
이더넷 버전도 있습니까? 이더넷 MC 프로토콜 MySQL 저장에 정리해 두었습니다. 읽어 오는 양이 많은 구성이라면 이더넷 쪽이 유리합니다.
실시간 감시도 함께 하고 싶습니다. MQTT 발행을 병행하시면 됩니다.
저장한 값으로 화면을 만들려면? EASY DASHBOARD를 참고하십시오.
도입을 검토하신다면
현장 조건에 맞는 모델 선정이나 프로토콜 적용 가능 여부가 궁금하시면 문의해 주세요. 사용 중인 PLC 기종과 수집하려는 데이터만 알려주시면 구성안을 잡아 드립니다.
- 제품 라인업 살펴보기 — EASY-LOGGER · EASY-LINK · EASY-RELAY · EASY-TEMP
- 도입 문의
- 기술 블로그 전체 글