EV Motor Reliability
์ ๊ธฐ์ฐจ ๊ตฌ๋๋ชจํฐ/์ธ๋ฒํฐ ์ ๋ขฐ์ฑ ์ํ ์๋ํ ํ๋ซํผ v0.40.0
๊ฐ์
| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| ํ์จ์ด | C (TMS320F2838x DSP, Code Composer Studio) |
| ๋ถ์ | Python 3.12 (numpy, scipy, matplotlib, reliability) |
| ํ๋์จ์ด | SMC300 ๋ชจํฐ์ ์ด ํจํค์ง, PMSM, BLDC |
| ๋๊ตฌ | CCS, UniFlash, JTAG (SDS200i) |
์น ๋์๋ณด๋
์๋ฎฌ๋ ์ด์ ์คํ, ์ค์๊ฐ ๋ชจ๋ํฐ๋ง, ์ ๋ขฐ์ฑ ๋ถ์์ ํตํฉ ์ ๊ณตํ๋ ์น ๊ธฐ๋ฐ ๋์๋ณด๋์ด๋ค. ์ธ์ฆ(Google OAuth) ํ 5๊ฐ ๋ฉ์ธ ๋ผ์ฐํธ์ ํ๋กํ AI ์ฑํ ์์ ฏ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| ํ๋ก ํธ์๋ | Next.js 15 (App Router) + React 19 + TypeScript |
| UI ํ๋ ์์ํฌ | Mantine 7 |
| API ์๋ฒ | FastAPI + Uvicorn (ํฌํธ 8100) |
| ์ํ ๊ด๋ฆฌ | Zustand (UI ์ํ) + TanStack Query v5 (์๋ฒ ์ํ) |
| ์ฐจํธ | Recharts |
| DB | Neon PostgreSQL (์๋ฒ๋ฆฌ์ค, @neondatabase/serverless) |
| ์ธ์ฆ | Neon Auth (Google OAuth, Better Auth) |
| ํธ์คํ | Vercel (๋์๋ณด๋) + ๋ก์ปฌ ์์ด์ ํธ (์๋ฎฌ๋ ์ด์ /ํ๋์จ์ด) |
๋์๋ณด๋๋ Vercel์ ๋ฐฐํฌ๋์ด ๋ธ๋ผ์ฐ์ ์์ ์ ์ํ๊ณ , ์๋ฎฌ๋ ์ด์ ์คํ๊ณผ ํ๋์จ์ด ํต์ ์ ์ฌ์ฉ์ PC์์ ๊ตฌ๋๋๋ ๋ก์ปฌ ์์ด์ ํธ(FastAPI)๊ฐ ๋ด๋นํ๋ค. ๋ธ๋ผ์ฐ์ ์ ์์ด์ ํธ ๊ฐ ํต์ ์ WebSocket์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
์ฃผ์ ๊ธฐ๋ฅ
- ๋ชจํฐ/์ธ๋ฒํฐ ์ ๋ขฐ์ฑ ์ํ ์๋ํ
- Weibull ๋ถ์ ๋ฐ ์๊ฐํ
- ๊ณ ์ฅ ์์ธก ๋ชจ๋ธ (MTTF, ๊ณ ์ฅ๋ฅ )
- ์๋ฆฌ์ผ/JTAG ํต์ ๊ธฐ๋ฐ ์ค์๊ฐ ๋ฐ์ดํฐ ์์ง
- ์๋ฎฌ๋ ์ด์ ํ์ดํ๋ผ์ธ (runner.py, pipeline.py)
- Motor x Control x Mode 3์ถ ์กฐํฉ ํตํฉ ์๋ฎฌ๋ ์ด์ (๋จ์ผ/๋ฐฐ์น/์ค์)
- Monaco Editor ๊ธฐ๋ฐ ํ์จ์ด/์คํฌ๋ฆฝํธ ์ฝ๋ ๋ทฐ์ด + Git ์ฐ๋
- FMEA (Failure Mode and Effects Analysis) ์๋ ์์ฑ ๋ฐ RPN ์ฐ์ถ
- HTML ์ข ํฉ ๋ณด๊ณ ์ ์๋ ์์ฑ (Weibull + FMEA + ๋น๊ต ๋ถ์ ํตํฉ)
์ธ๋ถ ์ฐ๋
Claude API (AI ์ฑํ )
๋ชจ๋ ํ์ด์ง ์ฐํ๋จ์ ํ๋กํ AI ์ฑํ ์์ ฏ์ ์ ๊ณตํ๋ค. Anthropic Claude API๋ฅผ ํตํด ์ํ ๊ฒฐ๊ณผ ๋ถ์, ์๋ฎฌ๋ ์ด์ ํ๋ผ๋ฏธํฐ ์ถ์ฒ, ๊ธฐ์ ๋ฌธ์ ์ง์๋ฅผ ์์ฐ์ด๋ก ์ง์ํ๋ค.
| ๊ธฐ๋ฅ | ์ค๋ช |
|---|---|
| ์๋ฎฌ๋ ์ด์ ์คํ | ์ฑํ ์ผ๋ก ํ๋ผ๋ฏธํฐ๋ฅผ ์ง์ ํ๊ณ ์๋ฎฌ๋ ์ด์ ์คํ ์์ฒญ |
| ๊ฒฐ๊ณผ ํด์ | Weibull ๋ถ์, FMEA ๊ฒฐ๊ณผ์ ๋ํ ์์ฐ์ด ์ง์ ์๋ต |
| ๋ฌธ์ ์ฐธ์กฐ | ํ๋ก์ ํธ ๋ฌธ์ ๊ธฐ๋ฐ ๊ธฐ์ ์ง์ |
| ์๋ต ๋ฐฉ์ | SSE (Server-Sent Events) ์คํธ๋ฆฌ๋ฐ |
์ฌ์ฉ์๊ฐ ์์ ์ API ํค๋ฅผ ์์ด์ ํธ์ ์ค์ ํ๋ BYOK (Bring Your Own Key) ๋ฐฉ์์ผ๋ก ์ด์๋๋ค.
WebSocket (์ค์๊ฐ ๋ชจํฐ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ)
๋ก์ปฌ ์์ด์ ํธ์ ๋ธ๋ผ์ฐ์ ๊ฐ WebSocket ์ฐ๊ฒฐ๋ก ์ค์๊ฐ ๋ชจํฐ ๋ฐ์ดํฐ๋ฅผ 10Hz ์ฃผ๊ธฐ๋ก ์คํธ๋ฆฌ๋ฐํ๋ค. ์๋(RPM), ์ ๋ฅ(A), ์จ๋(degC), ํ ํฌ(N-m) 4์ฑ๋์ ๋์์ ๋ชจ๋ํฐ๋งํ๋ฉฐ, ๊ฐ ์ธก์ ๊ฐ์ด ์๊ณ์น(80% ๊ฒฝ๊ณ , 100% ์ํ)๋ฅผ ์ด๊ณผํ๋ฉด ์๋ ์๋ฆผ๊ณผ ๋น์ ์ ์ง๋ฅผ ์ํํ๋ค.
pyserial (์๋ฆฌ์ผ UART ํต์ )
SMC300 ๋ชจํฐ์ ์ด ๋ณด๋์ PC ๊ฐ UART/SCI ์๋ฆฌ์ผ ํต์ ์ผ๋ก ์ค์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ค. 24์๊ฐ ๋ฌด์ธ ์ด์ ๋ชจ๋์์ ์๋ ๋ก๊น ํ๋ฉฐ, ํต์ ํ์์์ ๋ฐ์ ์ ๊ณ ์ฅ ์ด๋ฒคํธ๋ก ๊ธฐ๋กํ๋ค.
JTAG/SWD (ํ์จ์ด ํ๋ก๊ทธ๋๋ฐ)
SDS200i ์ ์ฐ JTAG ์๋ฎฌ๋ ์ดํฐ(XDS200-ISO)๋ฅผ ํตํด TMS320F2838x DSP์ ํ์จ์ด๋ฅผ ์
๋ก๋ํ๋ค. UniFlash CLI(dslite.sh)๋ก ์๋ ํ๋์ฑํ๋ฉฐ, Code Composer Studio(CCS)์์ ์ค์๊ฐ ๋๋ฒ๊น
์ ์ง์ํ๋ค.
๋ฐฐํฌ
Docker + docker-compose๋ก ํ๋ก ํธ์๋(SPA)์ API ์๋ฒ๋ฅผ ๋จ์ผ ์ปจํ ์ด๋์ ํจํค์งํ๋ค.
| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| ๋ฒ ์ด์ค ์ด๋ฏธ์ง | Python 3.12-slim |
| ๋น๋ ๋ฐฉ์ | ๋ฉํฐ์คํ ์ด์ง ๋น๋ (Node.js๋ก SPA ๋น๋ โ Python ์ด๋ฏธ์ง์ ์ ์ ํ์ผ ํฌํจ) |
| ์ปจํ ์ด๋ ๊ตฌ์ฑ | FastAPI๊ฐ SPA ์ ์ ํ์ผ ์๋น + API ์๋ํฌ์ธํธ๋ฅผ ๋จ์ผ ํ๋ก์ธ์ค๋ก ์ ๊ณต |
| ๋์๋ณด๋ (Vercel) | Next.js App Router ๊ธฐ๋ฐ, Vercel์ ์๋ ๋ฐฐํฌ |
| ๋ก์ปฌ ์์ด์ ํธ | ์ฌ์ฉ์ PC์์ python agent.py๋ก ์คํ, ํ๋์จ์ด ํต์ ๋ฐ ์๋ฎฌ๋ ์ด์
๋ด๋น |
Vercel์ ๋ฐฐํฌ๋ ๋์๋ณด๋๊ฐ ๋ธ๋ผ์ฐ์ ์ธก UI๋ฅผ ์ ๊ณตํ๊ณ , ์๋ฎฌ๋ ์ด์ ๊ณผ ํ๋์จ์ด ์ ์ด๋ ์ฌ์ฉ์ PC์ ๋ก์ปฌ ์์ด์ ํธ๊ฐ ์ํํ๋ ํ์ด๋ธ๋ฆฌ๋ ์ํคํ ์ฒ์ด๋ค.
๋จ์ ๊ท์น
SI ๋จ์๊ณ ์ฌ์ฉ: rad/s (์๋), A (์ ๋ฅ), V (์ ์), Nยทm (ํ ํฌ), degC (์จ๋)
๋งค๋ด์ผ
- ์ฌ์ฉ์ ๋งค๋ด์ผ โ ๋ถ์/์ํ ๋ด๋น์์ฉ
- ์ด์์ ๋งค๋ด์ผ โ ์๋ฒ/์ฅ๋น ๊ด๋ฆฌ์์ฉ