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 |
📎 기타 참고 자료
flowchart TD
A[프로그램 시작] --> B[설정 파일 읽기]
B --> C[설정값 UI 반영<br/>or 기본값 저장]
C --> D[시작 버튼 클릭]
D --> E[채널별 반복 실행]
E --> F[버튼 텍스트 '중지'로 변경]
F --> G[통신 플래그 및 UI 상태 초기화]
G --> H[JSON 데이터 초기화]
H --> I[장비 시작 명령 전송<br/>agenable chNum, 1]
I --> J[타이머 실행 시작]
J --> K[타이머 tick 발생]
K --> L[ReceiveData 호출<br/>펌웨어 데이터 수신]
L --> M[샷 수/온도 UI 갱신]
M --> N{자동 종료 조건 충족?}
N -->|예| O[중지 버튼 클릭 처리 시나리오로 진입]
N -->|아니오| K
O[중지 버튼 클릭 시작 텍스트로 변경] --> P[타이머 중지 및 상태 초기화]
P --> Q[테스트 중지 명령 전송<br/>agenable chNum, 0]
Q --> R[샷 수 / 온도 기준 판정]
R --> S{합격 기준 충족?}
S -->|PASS| T[결과 표시: PASS<br/>UI 초록색, 로그 저장]
S -->|FAIL| U[결과 표시: FAIL<br/>UI 빨간색, 로그 저장]
T --> V[PostgreSQL 등록]
U --> V
V --> W[SQL INSERT 실행<br/>temperature_chambers 테이블 기록]
W --> X[UI 및 로그 갱신]
X --> Y{다른 채널 남았는가?}
Y -->|예| E
Y -->|아니오| Z[프로그램 종료 or 대기 상태]