KANG 개발 측이 화학 공정용으로 따로 만든 「KANG 공정 PDM」(v0.1.0)을 고치지 않고 실행해 봅니다. 반응기 한 기의 일곱 공정값을 내보내는 RTU 시뮬레이터에 수동으로 이상값을 넣고, 기존 방식(Isolation Forest)과 새 공정형 모델(PCA T²/Q), AutoML이 같은 데이터를 어떻게 판정하는지 비교합니다. 실험해 보니 숫자보다 「언제, 어떤 데이터로 학습하느냐」가 결과를 더 크게 바꿨습니다.
무엇을 배우나#
화학 공장의 반응기에 이상 탐지 프로그램을 도입한다고 가정합니다. 배포본에 들어 있는 교육 자료(PPT 18쪽)와 문서가 설명하는 기능을 직접 실행해 보고, 결과를 수치로 확인합니다. 자료의 설명과 실제 동작이 다른 부분도 정리했습니다.
| 장 | 하는 일 |
|---|---|
| 1. 배경: 화학 공정에서 이상을 찾는다는 것 | 일곱 채널, PLC_LIST와 PLC_DATA, 설비 단위 모델, 두 모델이 묻는 질문 |
| 2. 설치와 첫 연결 | RTU와 PDM을 실행하고 연결합니다. 연결하는 순간 첫 모델이 학습됩니다 |
| 3. 수동 이상을 넣고 두 모델 비교하기 | 화면 기본값과 한 변수 실험으로 Isolation Forest와 PCA T²/Q의 반응을 비교합니다 |
| 4. AutoML과 Zero-shot | 여섯 후보를 고르는 방식, 합성 교란 F1의 뜻, 합성 데모 결과, Zero-shot 대체 예측 |
| 5. 언제 학습하느냐가 결과를 바꾼다 | 정상 운전 중 헛알람, 이상을 먼저 넣고 연결했을 때, 승인 재학습의 함정과 올바른 순서 |
| 6. PLC 파일로 학습하기 | PLC_LIST와 PLC_DATA를 읽어 학습하고, 현장 데이터를 넣기 전에 확인할 것 |
| 7. 과제와 현장으로 가는 길 | 팀 과제, 평가 기준, 개발 측에 전할 확인 사항 |
이번 실험에서 확인한 다섯 가지#
- 수동 이상은 2초 만에 「위험」이 됩니다. 화면 기본값(온도 145 °C, 압력 −280 mmHg 등 일곱 값)을 넣으면 다음 갱신에서 두 모델이 모두 이상으로 판정합니다. 다만 기존 방식의 점수는 1.13으로 임계값을 겨우 넘고, PCA의 점수는 약 2천만 배입니다(3장).
- 기존 방식은 pH와 밸브를 보지 못합니다. 온도·압력만 입력으로 받기 때문입니다. pH만, 밸브만 바꾼 실험에서는 PCA만 이상을 잡았습니다(3장).
- 처음 연결한 모델은 정상 운전에서도 자주 울립니다. RTU를 켜고 20초 만에 연결하면 학습 데이터가 3분 남짓뿐입니다. 이후 30분 동안 정상으로 운전했지만, 화면 갱신의 20~26%에서 「주의」나 「위험」이 떴습니다. 24분 동안 쌓인 정상 이력으로 학습하거나 다시 학습하자 이 비율이 1% 안팎으로 줄었습니다(5장).
- 이상을 먼저 넣고 연결하면 아무것도 잡지 못합니다. 배포본 PPT의 실습 순서대로 이상을 먼저 120초 넣은 뒤 연결하면, 초기 학습에서 이상을 정상으로 배웁니다. 그 뒤로 이상이 계속되어도 알람은 한 번도 울리지 않았습니다(5장).
- 승인 재학습도 이력에 이상이 남아 있으면 해롭습니다. 이상 60초가 이력에 남은 채로 재학습한 뒤 같은 이상을 넣었습니다. 재학습 전에는 갱신마다 「위험」이 떴는데, 재학습 뒤에는 갱신의 60%에서만 「주의」가 떴고 기존 방식은 한 번도 잡지 못했습니다(5장).
앞의 두 교재와 무엇이 다른가#
| 설비 예지보전 PBL | KANG 판 | 이 교재(KANG 공정판) | |
|---|---|---|---|
| 대상 | 페인트 교반기 모터 베어링 | 페인트 교반 설비 | 화학 공정 반응기 DT-100 |
| 센서 | 가속도계 하나, 5,120 Hz | 전류·진동 RMS·온도·압력, 1분 | 온도·압력·유량·레벨·밸브·회전수·pH, 1초 |
| 잘 보는 이상 | 베어링 손상, 불균형 | 펌프 걸림, 과부하 | 밸브 고착, 진공 저하, 센서 고장, pH 이탈 |
| 모델 | 물리 공식, 오토인코더, 제로샷 | Isolation Forest, 고장 기록이 있으면 Logistic Regression | Isolation Forest와 PCA T²/Q를 나란히, AutoML 여섯 후보 |
| 재학습 | 에이전트가 섀도 모드로 검증해 승격 | 30시점마다 자동 | 처음 연결할 때와 사람이 승인할 때만 |
| 고장 확률 | 정비 기록으로 채점 | failure_label로 학습 |
없음(이상 후보만) |
준비물#
- macOS, Windows 또는 Linux, Python 3.12(배포본이 3.12만 지원합니다)
- KANG 공정 PDM 배포본 ZIP(약 1.7 MB) — 수업에서 받습니다. 프로그램 두 개(RTU, PDM), 문서 8편, 교육용 PPT가 들어 있습니다
- 6장 실습용 연습 PLC_LIST — 본문에 내용을 실었습니다
- 처음 설치할 때 인터넷 연결(무료 Python 패키지를 받습니다)
합성 데이터이고, 안전 장치가 아닙니다
RTU 시뮬레이터의 값은 잡음 없는 사인파로 만든 합성 데이터입니다. 이 교재의 수치는 기능과 원리를 배우기 위한 것이며, 현장 성능을 나타내지 않습니다. 프로그램은 설비를 제어하지 않습니다. PLC 인터록, 안전계장, 비상정지, 운전자의 최종 판단을 대신하지 않습니다.
이번 실행 환경#
| 항목 | 값 |
|---|---|
| 기계 | Apple M4 Max, macOS |
| 프로그램 | KANG 공정 PDM v0.1.0(2026-11-10 배포본, 코드 수정 없음) |
| 주요 버전 | Python 3.12.12, scikit-learn 1.8.0, numpy 2.3.5, Flask 3.1.3 |
| 실행 날짜 | 2026년 11월 11일 |
| 화면 | 브라우저 1440×810(모델 결과는 세로 1640) |
배포본의 설치 스크립트는 Windows용(setup_windows.bat)입니다. 이번에는 macOS에서 같은 패키지를 직접 설치해 실행했습니다(2장). 화면 제목에 들어 있는 고객사 이름은 캡처할 때 가렸습니다.
배포본 자료와 실제 동작이 다른 곳#
교육용 PPT와 문서를 따라 하다 막히지 않도록, 직접 실행해 확인한 차이를 먼저 정리합니다.
| 자료 | 자료의 설명 | 실제 동작 | 다룬 곳 |
|---|---|---|---|
| PPT 10·17쪽 | 이상값을 먼저 넣고 PDM에서 「RTU 연결 + 초기 학습」 | 이상이 길면 초기 학습이 이상을 정상으로 배워 알람이 나지 않습니다. 문서 04_USER_MANUAL의 순서(연결 → 이상)가 맞습니다 |
5장 |
| PPT 10쪽 팁 | 한 번에 한 변수만 바꾸기 | 화면의 「수동 이상 적용」은 입력칸의 일곱 값을 모두 상수로 고정합니다. 하나만 바꿔도 나머지 여섯 값이 멈춥니다 | 3장 |
| PPT 7쪽 | PLC_LIST 열 PLC_NO·TABLE_NAME·COLUMN_NAME…, PLC_DATA 열 timestamp·asset_id·temperature… |
프로그램과 테이블 정의서는 PTYPE·IDX·PNAME…, INTIME·PTYPE·IDX·VALUE…(긴 형식)를 씁니다 |
1·6장 |
| PPT 6·14쪽 | 선택한 모델을 「저장」, 「모델 파일」 | 모델을 파일로 저장하지 않습니다. PDM을 다시 켜면 다시 학습해야 합니다 | 4장 |
| PPT 12쪽 | 「시간당 기울기」 | 초당 기울기(slope_per_second)입니다 |
1장 |
README, 문서 00_START_HERE |
「분석 실행」, 「Isolation Forest와 PCA 비교」 버튼, RTU 화면에서 고장 시나리오 변경 | 화면에는 해당 버튼과 시나리오 선택 기능이 없습니다. 「현재 데이터로 모델 재학습」이 비교를 다시 실행합니다 | 2·4장 |
문서 05_TEST_REPORT |
IF 6건, PCA 26건, AutoML PCA-99 F1 0.988 | 실행 시점에 따라 바뀝니다. 이번에는 연결 직후 IF 16·PCA 17창, AutoML PCA-90 F1 0.989였습니다 | 2장 |