# **AGING ํ”„๋กœ๊ทธ๋žจ** ## ๐Ÿ“Œ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ์š” | ํ•ญ๋ชฉ | ๋‚ด์šฉ | | ---------- | ---------------------------------------------------------------- | | **ํ”„๋กœ๊ทธ๋žจ ๋ช…** | `AgingTester` | | **์‹คํ–‰ ํŒŒ์ผ ๋ช…** | `DUALSONIC Asing.exe` | | **์„ค์น˜ ์œ„์น˜** | 6์ธต ๊ณต์žฅ ๋ผ์ธ Aging ๊ณต์ • ๊ตฌ์—ญ | | **์šฉ๋„** | ํ•„๋ฆ„ ์••์ฐฉ ๊ธฐ๊ณ„ ์ œ์–ด /ํ•„๋ฆ„ ์ž‘์—… ๊ณต์ • ์ค‘ ์••์ฐฉ๊ธฐ ๋™์ž‘ ์‹œ ์ž๋™ ์‹œ๊ฐ„ ์นด์šดํŠธ ๋ฐ ๋™์ž‘/์ž๋™ ํ•ฉ๋ถˆ ํŒ์ • ์—†์Œ (๊ฒ€์‚ฌ์ž๊ฐ€ ์œก์•ˆ์œผ๋กœ ํ•ฉ๋ถˆ ํŒ๋‹จ)/ ์ค‘๋‹จ ์‹œ ์ž๋™ ๋ถˆ๋Ÿ‰ ์ฒ˜๋ฆฌ | --- ## ๐Ÿ–ฅ๏ธ ํ”„๋กœ๊ทธ๋žจ UI | ๋ฉ”์ธ ํ™”๋ฉด | ์‹คํ–‰ ํ™”๋ฉด | | ------------------------ | --------------------------- | | ![๋ฉ”์ธ ํ™”๋ฉด](docs/aging_main.png) | ![์‹คํ–‰ ํ™”๋ฉด](docs/aging_start.png) | --- ## ๐Ÿ”ข ๊ธฐ๋Šฅ ์š”์•ฝ | ๊ธฐ๋Šฅ | ์„ค๋ช… | | ---------------------------- | ----------------------------------------------------------------------------- | | **๋ผ๋””์˜ค ๋ฒ„ํŠผ ์„ ํƒ์— ๋”ฐ๋ฅธ UI ๋ฐ ์„ค์ • ๋ถ„๊ธฐ** | ํฌํŠธ ์ˆ˜(10์ฑ„๋„/20์ฑ„๋„), ์‹œ๊ฐ„ ์„ค์ • ๋ชจ๋“œ์— ๋”ฐ๋ผ UI ๊ทธ๋ฃน๋ฐ•์Šค ํ‘œ์‹œ ์—ฌ๋ถ€, ์‹œ๋ฆฌ์–ผ ํฌํŠธ ๋ฐฐ์—ด ํฌ๊ธฐ, ์ดˆ๊ธฐ๊ฐ’, ์œ„์น˜ ๋ณ€๊ฒฝ ๋“ฑ ์ž๋™ ์กฐ์ • | | **COM ํฌํŠธ ์Šค์บ” ๋ฐ ์—ฐ๊ฒฐ** | ์Šค์บ” ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ PC์˜ COM ํฌํŠธ ๋ชฉ๋ก ๋ถˆ๋Ÿฌ์˜ค๊ธฐ, ์—ฐ๊ฒฐ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ์„ ํƒํ•œ ํฌํŠธ ์˜คํ”ˆ ๋ฐ ์„ค์ • ์ €์žฅ | | **ํฌํŠธ๋ณ„ ์ธก์ • ์‹œ์ž‘/์ •์ง€** | ๊ฐ ์ฑ„๋„๋ณ„ ์ƒํƒœ์— ๋”ฐ๋ผ ์‹œ์ž‘(`start`), ์ง„ํ–‰(`play`), ์ค‘์ง€(`middleStop`, `endStop`) ์ฒ˜๋ฆฌ ๋ฐ ๋ช…๋ น ์ „์†ก | | **ํƒ€์ด๋จธ ๊ธฐ๋ฐ˜ ์‹œ๊ฐ„ ์นด์šดํŠธ๋‹ค์šด** | ์‹คํ–‰ ์ค‘์ธ ์ฑ„๋„์˜ ๋‚จ์€ ์‹œ๊ฐ„์„ 1์ดˆ์”ฉ ๊ฐ์†Œ์‹œํ‚ค๋ฉฐ UI์— ๋‚จ์€ ์‹œ๊ฐ„ ํ‘œ์‹œ, ์‹œ๊ฐ„์ด 0์ด ๋˜๋ฉด ์ž๋™ ์ •์ง€ ๋ฐ ํ›„์† ์ฒ˜๋ฆฌ ์ˆ˜ํ–‰ | | **์ƒํƒœ ๋ฐ UI ์—…๋ฐ์ดํŠธ** | ๋ฒ„ํŠผ ํ…์ŠคํŠธ ๋ฐ ์ƒ‰์ƒ ๋ณ€๊ฒฝ, ์ƒํƒœ์— ๋”ฐ๋ฅธ ๊ธฐ๋Šฅ ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™”, ๊นœ๋นก์ž„ ํšจ๊ณผ ๋“ฑ์œผ๋กœ ์ง„ํ–‰ ์ƒํ™ฉ ์‹œ๊ฐ์  ํ‘œ์‹œ | | **์ „์ฒด ์‹คํ–‰/์ •์ง€ ์ œ์–ด** | ์ „์ฒด ๋‚ด๋ฆฌ๊ธฐ/์˜ฌ๋ฆฌ๊ธฐ ๋ฒ„ํŠผ์„ ํ†ตํ•ด ๋ชจ๋“  ์ฑ„๋„์˜ ์ƒํƒœ ์ผ๊ด„ ์ „ํ™˜ ๋ฐ ํƒ€์ด๋จธ ์ œ์–ด | | **์ดˆ๊ธฐํ™” ๋ฐ ์ข…๋ฃŒ ์ฒ˜๋ฆฌ** | ๋ชจ๋“  ์ฑ„๋„ ์‹œ๊ฐ„ ๋ฐ UI ์ดˆ๊ธฐํ™”, ์ข…๋ฃŒ ์‹œ ์—ด๋ ค ์žˆ๋Š” ํฌํŠธ ๋ฐ ์“ฐ๋ ˆ๋“œ ์•ˆ์ „ ์ข…๋ฃŒ ๋ฐ ์ •๋ฆฌ | --- ## ๐Ÿ”„ ๊ฒ€์‚ฌ ์ˆœ์„œ ํ๋ฆ„๋„ ``` [์‹œ์ž‘ ๋ฒ„ํŠผ ํด๋ฆญ] โ†“ [cmdRunButton() ์‹คํ–‰] โ†’ [์„ค์ •๊ฐ’ ์ €์žฅ ๋ฐ ์ดˆ๊ธฐํ™”] โ†’ [ํŽŒ์›จ์–ด ๋ช…๋ น์–ด ์ „์†ก: agenable chNum, 1] โ†’ [SendData() ํ˜ธ์ถœ] โ†“ [ํƒ€์ด๋จธ ์‹คํ–‰ (cmdTimer_Tick())] โ†“ [ReceiveData() ํ˜ธ์ถœ] โ†’ [ํŽŒ์›จ์–ด๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ ] โ†“ [๋ฉ”์‹œ์ง€ ํ•ด์„] โ†’ [UI ์—…๋ฐ์ดํŠธ] (์˜ˆ: [avalue], [aerror], [dsfwver]) โ†“ [์ž๋™ ์ข…๋ฃŒ ์กฐ๊ฑด ์ฒดํฌ] โ”œโ”€โ”€ [์˜จ๋„ ๊ธฐ์ค€ ์ถฉ์กฑ ์‹œ โ†’ ํ…Œ์ŠคํŠธ ์ž๋™ ์ข…๋ฃŒ] โ”œโ”€โ”€ [์ƒท ์ˆ˜ ๊ธฐ์ค€ ์ถฉ์กฑ ์‹œ โ†’ ํ…Œ์ŠคํŠธ ์ž๋™ ์ข…๋ฃŒ] โ””โ”€โ”€ [์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ โ†’ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ ๋ฐ UI ๋ฐ˜์˜] โ†“ [๊ฒฐ๊ณผ ์ €์žฅ] โ†’ [PostgreUpdateReg() ํ˜ธ์ถœ] โ†’ [๊ฒฐ๊ณผ PostgreSQL์— ์ €์žฅ] โ†“ [์ค‘์ง€ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ] โ†“ [agenable chNum, 0] โ†’ [ํŽŒ์›จ์–ด์— ํ…Œ์ŠคํŠธ ์ค‘์ง€ ๋ช…๋ น ์ „์†ก] โ†’ [ํ…Œ์ŠคํŠธ ์ข…๋ฃŒ] ``` --- ## ๐Ÿ—ƒ๏ธ MES ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ตฌ์กฐ (temperature_chambers: ์˜จ๋„ ์—์ด์ง• ๊ฒ€์‚ฌ๊ธฐ) | ํ•„๋“œ ์ด๋ฆ„ | ๊ฐ’ ์˜ˆ์‹œ | ์„ค๋ช… | PostgreSQL ์ปฌ๋Ÿผ๋ช… | PostgreSQL ๊ฐ’/์ฝ”๋“œ | Null ํ—ˆ์šฉ | | --- | --- | --- | --- | --- | --- | | jig_num | 1 | ์ง€๊ทธ ๋ฒˆํ˜ธ (nudJigNum.Value) | chNum | chNum | O | | jig_ch | 0 | ์ฑ„๋„ ๋ฒˆํ˜ธ (0~10) | chNum | chNum | O | | test_date | 2025-05-09 | ํ…Œ์ŠคํŠธ ๋‚ ์งœ (AG_DATE) | AG_DATE | AG_DATE(chNum) | O | | start_time | 14:32:10 | ํ…Œ์ŠคํŠธ ์‹œ์ž‘ ์‹œ๊ฐ„ (AG_StartTime) | AG_StartTime | AG_StartTime(chNum) | O | | run_time | 0:27:50 | ํ…Œ์ŠคํŠธ ๊ฒฝ๊ณผ ์‹œ๊ฐ„ (txbEndTime) | txbEndTime | txbEndTime((cmdVal(1))).Text | O | | end_time | 15:00:00 | ํ…Œ์ŠคํŠธ ์ข…๋ฃŒ ์‹œ๊ฐ„ (์‹œ์Šคํ…œ ์‹œ๊ฐ„) | endtime | now | O | | div_num | DIV001 | ๋ฉ”์ธ ์žฅ๋น„ SN (AG_Device_SN) | AG_Device_SN | AG_Device_SN(chNum) | O | | cart_num | CART001 | ์นดํŠธ๋ฆฌ์ง€ SN (AG_Cart_SN) | AG_Cart_SN | AG_Cart_SN(chNum) | O | | test_result | PASS | ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ (PASS / FAIL) | OkNg | OkNg | O | | limit_div_temp | 60 | ๋””๋ฐ”์ด์Šค ์˜จ๋„ ๊ธฐ์ค€ (txbDevTemp) | txbDevTemp | txbDevTemp.Text | O | | limit_cart_temp | 50 | ์นดํŠธ๋ฆฌ์ง€ ์˜จ๋„ ๊ธฐ์ค€ (txbCartTemp) | txbCartTemp | txbCartTemp.Text | O | | limit_shot | 200 | ์ƒท ์ˆ˜ ๊ธฐ์ค€ (txb_limit) | txb_limit | txb_limit.Text | O | | divtemp_start | 36.5 | ๋””๋ฐ”์ด์Šค ์‹œ์ž‘ ์˜จ๋„ (txtMain...) | txtMainStartTemp | txtMainStartTemp(Val(cmdVal(1))).Text | O | | divtemp_end | 38.1 | ๋””๋ฐ”์ด์Šค ์ข…๋ฃŒ ์˜จ๋„ (txtMain...) | txtMainEndTemp | txtMainEndTemp(Val(cmdVal(1))).Text | O | | carttemp_start | 40 | ์นดํŠธ๋ฆฌ์ง€ ์‹œ์ž‘ ์˜จ๋„ | txtCartStartTemp | txtCartStartTemp(Val(cmdVal(1))).Text | O | | carttemp_end | 48 | ์นดํŠธ๋ฆฌ์ง€ ์ข…๋ฃŒ ์˜จ๋„ | txtCartEndTemp | txtCartEndTemp(Val(cmdVal(1))).Text | O | | run_shot | 201 | ์ด ์ƒท ์ˆ˜ (txbShotCnt) | txbShotCnt | txbShotCnt(Val(cmdVal(1))).Text | O | | error_code | 0 | ์—๋Ÿฌ ์ฝ”๋“œ (๋นˆ ๊ฐ’ ๋˜๋Š” ์ฝ”๋“œ, 0=์ •์ƒ) | AG_ERROR | AG_ERROR(chNum) | O | | created_at | 2025-05-09 15:00:00 | ๋“ฑ๋ก ์‹œ๊ฐ„ (NOW()) | created_at | NOW() | O | | updated_at | 2025-05-09 15:00:00 | ์ˆ˜์ • ์‹œ๊ฐ„ (NOW()) | updated_at | NOW() | O | --- ## ๐Ÿ“Ž ๊ธฐํƒ€ ์ฐธ๊ณ  ์ž๋ฃŒ (ํ๋ฆ„๋„) ```mermaid flowchart TD A[ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘] --> B[์„ค์ • ํŒŒ์ผ ์ฝ๊ธฐ] B --> C[์„ค์ •๊ฐ’ UI ๋ฐ˜์˜
or ๊ธฐ๋ณธ๊ฐ’ ์ €์žฅ] C --> D[์‹œ์ž‘ ๋ฒ„ํŠผ ํด๋ฆญ] D --> E[์ฑ„๋„๋ณ„ ๋ฐ˜๋ณต ์‹คํ–‰] E --> F[๋ฒ„ํŠผ ํ…์ŠคํŠธ '์ค‘์ง€'๋กœ ๋ณ€๊ฒฝ] F --> G[ํ†ต์‹  ํ”Œ๋ž˜๊ทธ ๋ฐ UI ์ƒํƒœ ์ดˆ๊ธฐํ™”] G --> H[JSON ๋ฐ์ดํ„ฐ ์ดˆ๊ธฐํ™”] H --> I[์žฅ๋น„ ์‹œ์ž‘ ๋ช…๋ น ์ „์†ก
agenable chNum, 1] I --> J[ํƒ€์ด๋จธ ์‹คํ–‰ ์‹œ์ž‘] J --> K[ํƒ€์ด๋จธ tick ๋ฐœ์ƒ] K --> L[ReceiveData ํ˜ธ์ถœ
ํŽŒ์›จ์–ด ๋ฐ์ดํ„ฐ ์ˆ˜์‹ ] L --> M[์ƒท ์ˆ˜/์˜จ๋„ UI ๊ฐฑ์‹ ] M --> N{์ž๋™ ์ข…๋ฃŒ ์กฐ๊ฑด ์ถฉ์กฑ?} N -->|์˜ˆ| O[์ค‘์ง€ ๋ฒ„ํŠผ ํด๋ฆญ ์ฒ˜๋ฆฌ ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ ์ง„์ž…] N -->|์•„๋‹ˆ์˜ค| K O[์ค‘์ง€ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ์ž‘ ํ…์ŠคํŠธ๋กœ ๋ณ€๊ฒฝ] --> P[ํƒ€์ด๋จธ ์ค‘์ง€ ๋ฐ ์ƒํƒœ ์ดˆ๊ธฐํ™”] P --> Q[ํ…Œ์ŠคํŠธ ์ค‘์ง€ ๋ช…๋ น ์ „์†ก
agenable chNum, 0] Q --> R[์ƒท ์ˆ˜ / ์˜จ๋„ ๊ธฐ์ค€ ํŒ์ •] R --> S{ํ•ฉ๊ฒฉ ๊ธฐ์ค€ ์ถฉ์กฑ?} S -->|PASS| T[๊ฒฐ๊ณผ ํ‘œ์‹œ: PASS
UI ์ดˆ๋ก์ƒ‰, ๋กœ๊ทธ ์ €์žฅ] S -->|FAIL| U[๊ฒฐ๊ณผ ํ‘œ์‹œ: FAIL
UI ๋นจ๊ฐ„์ƒ‰, ๋กœ๊ทธ ์ €์žฅ] T --> V[PostgreSQL ๋“ฑ๋ก] U --> V V --> W[SQL INSERT ์‹คํ–‰
temperature_chambers ํ…Œ์ด๋ธ” ๊ธฐ๋ก] W --> X[UI ๋ฐ ๋กœ๊ทธ ๊ฐฑ์‹ ] X --> Y{๋‹ค๋ฅธ ์ฑ„๋„ ๋‚จ์•˜๋Š”๊ฐ€?} Y -->|์˜ˆ| E Y -->|์•„๋‹ˆ์˜ค| Z[ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ or ๋Œ€๊ธฐ ์ƒํƒœ] ```