# **AGING ํ๋ก๊ทธ๋จ**
## ๐ ํ๋ก๊ทธ๋จ ๊ฐ์
| ํญ๋ชฉ | ๋ด์ฉ |
| ---------- | ---------------------------------------------------------------- |
| **ํ๋ก๊ทธ๋จ ๋ช
** | `AgingTester` |
| **์คํ ํ์ผ ๋ช
** | `DUALSONIC Asing.exe` |
| **์ค์น ์์น** | 6์ธต ๊ณต์ฅ ๋ผ์ธ Aging ๊ณต์ ๊ตฌ์ญ |
| **์ฉ๋** | ํ๋ฆ ์์ฐฉ ๊ธฐ๊ณ ์ ์ด /ํ๋ฆ ์์
๊ณต์ ์ค ์์ฐฉ๊ธฐ ๋์ ์ ์๋ ์๊ฐ ์นด์ดํธ ๋ฐ ๋์/์๋ ํฉ๋ถ ํ์ ์์ (๊ฒ์ฌ์๊ฐ ์ก์์ผ๋ก ํฉ๋ถ ํ๋จ)/ ์ค๋จ ์ ์๋ ๋ถ๋ ์ฒ๋ฆฌ |
---
## ๐ฅ๏ธ ํ๋ก๊ทธ๋จ UI
| ๋ฉ์ธ ํ๋ฉด | ์คํ ํ๋ฉด |
| ------------------------ | --------------------------- |
|  |  |
---
## ๐ข ๊ธฐ๋ฅ ์์ฝ
| ๊ธฐ๋ฅ | ์ค๋ช
|
| ---------------------------- | ----------------------------------------------------------------------------- |
| **๋ผ๋์ค ๋ฒํผ ์ ํ์ ๋ฐ๋ฅธ 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 ๋๊ธฐ ์ํ]
```