Skip to Content

데이터 업로드

시험 데이터를 시스템에 업로드하고 분석 가능한 형태로 전처리하는 과정을 설명합니다.

지원 파일 형식

형식확장자비고
CSV.csvUTF-8 인코딩, 쉼표 구분자
Excel.xlsx첫 번째 시트만 인식

CSV 파일은 첫 행에 컬럼 헤더를 포함해야 합니다. Excel 파일은 셀 병합이 없는 단일 테이블 형태여야 합니다.

데이터 구조

시험 데이터는 시계열 형태로 아래 컬럼을 포함합니다.

컬럼명단위설명필수 여부
timestamps측정 시각 (0부터 시작하는 경과 시간)필수
speedrad/s회전자 각속도필수
current_dAd축 전류필수
current_qAq축 전류필수
voltage_dVd축 전압선택
voltage_qVq축 전압선택
torqueN·m축 토크필수
temp_windingdegC권선 온도필수
temp_bearingdegC베어링 온도선택
temp_inverterdegC인버터 IGBT 접합 온도선택

예시 CSV

timestamp,speed,current_d,current_q,torque,temp_winding 0.000,0.0,0.0,0.0,0.0,25.3 0.001,10.5,0.12,1.85,0.42,25.3 0.002,21.0,0.11,3.70,0.84,25.4 0.003,31.4,0.10,5.55,1.26,25.4

SI 단위 규칙

모든 데이터는 SI 단위계를 따릅니다.

  • 속도: rad/s (RPM이 아닌 rad/s로 변환 필요. 1 RPM = 2π/60 rad/s)
  • 전류/전압: A, V (피크값 기준)
  • 토크: N·m (kgf·cm 등 비SI 단위 사용 금지)
  • 온도: degC (절대온도 K가 아닌 섭씨)

RPM 단위로 기록된 속도 데이터가 있다면 업로드 전 변환하거나, 전처리 단계에서 자동 변환을 적용할 수 있습니다.

import numpy as np RPM_TO_RADS = 2 * np.pi / 60 speed_rads = speed_rpm * RPM_TO_RADS

업로드 절차

웹 대시보드에서 업로드

  1. 대시보드 좌측 메뉴에서 데이터 관리 탭을 선택합니다
  2. 새 데이터 업로드 버튼을 클릭합니다
  3. 파일을 드래그 앤 드롭하거나 파일 선택 대화상자에서 선택합니다
  4. 업로드 후 미리보기 화면에서 컬럼 매핑을 확인합니다
  5. 확인 버튼을 누르면 전처리가 시작됩니다

CLI에서 업로드

simulation/runner.py를 통해 직접 데이터를 로드할 수 있습니다.

cd ev-motor-reliability source venv/bin/activate python -m simulation.runner --input data/test_001.csv --validate

--validate 옵션은 업로드 전 데이터 무결성을 검사합니다. 컬럼 누락, 단위 범위 초과, NaN 값 등을 확인합니다.

시리얼 포트에서 실시간 수집

SMC300 모터제어 패키지와 시리얼 통신으로 실시간 데이터를 수집하는 경우:

python -m automation.pipeline --mode acquire --port /dev/ttyUSB0 --baudrate 115200

수집된 데이터는 data/raw/ 디렉토리에 타임스탬프 기반 파일명으로 자동 저장됩니다.

데이터 전처리

업로드된 데이터는 분석 전 자동 전처리를 거칩니다.

이상치 제거

3σ (표준편차 3배) 범위를 벗어나는 데이터 포인트를 이상치로 판정합니다. 물리적 한계값도 함께 적용됩니다.

물리량유효 범위근거
속도0 ~ 2,094 rad/sPMSM 최대 20,000 RPM 기준
전류-500 ~ 500 A인버터 정격 기준
토크-200 ~ 200 N·m다이나모 최대 토크 기준
온도-40 ~ 200 degC절연 등급 H종 기준

이상치가 전체 데이터의 5% 이상이면 경고가 표시됩니다. 센서 고장이나 통신 오류 가능성을 점검해야 합니다.

결측값 보간

결측값(NaN)은 선형 보간(Linear Interpolation)으로 채웁니다. 연속 결측이 10개 이상이면 해당 구간을 제외하고 분석합니다.

import pandas as pd df = pd.read_csv("data/test_001.csv") df = df.interpolate(method="linear", limit=10) df = df.dropna() # 보간 불가 구간 제거

리샘플링

측정 간격이 불균일한 경우, 지정된 샘플링 주기(기본값: 1 ms)로 리샘플링합니다. scipy의 interp1d를 사용하여 시간축을 정규화합니다.

전처리 결과 확인

전처리 완료 후 요약 리포트가 생성됩니다.

  • 원본 데이터 포인트 수 / 전처리 후 데이터 포인트 수
  • 제거된 이상치 수 및 비율
  • 보간된 결측값 수
  • 각 컬럼의 최소/최대/평균/표준편차

다음 단계

데이터 업로드와 전처리가 완료되면 분석 실행으로 진행합니다.

Last updated on