Skip to content

Repository files navigation

BarVision 불량판정 로직트리 뷰어

바타입 검사기의 CClientDlg::Get_Defect_Type() (ClientDlg.cpp:9321~9551) 을 있는 그대로 웹 화면에 옮겨 놓은 도구다. 분기 순서, 비교 연산자(> / <), 그리고 소스에 남아 있는 폴스루까지 그대로 재현한다.

실행

run.bat        (또는)  python server.py

브라우저가 http://127.0.0.1:8731/ 로 자동으로 열린다. Python 3.8 이상만 있으면 되고, 별도 패키지 설치는 필요 없다.

화면 구성

영역 내용
좌측 상단 모델 INI 파라미터. 값을 고치면 트리 조건문이 즉시 바뀌고, [INI 저장] 으로 실제 파일에 반영
좌측 하단 판정 입력값(DEFECT_INFO). CSV 없이 직접 값을 넣어 시뮬레이션 가능
중앙 로직 트리. 판정이 지나간 경로가 파란색, 최종 판정 노드가 초록색으로 표시
우측 DEFECT_Detail CSV 목록 / 행 선택 / 전체 행 일괄 검증

모델 파라미터

C:\glim\Parameter\SPEC\*.ini 를 자동으로 리스트업한다. (소스의 PATH_PARAM 과 동일)

트리가 실제로 참조하는 파라미터는 아래 9개뿐이다.

INI 키 내부 인덱스 의미 쓰이는 분기
dParam3 D_IDX_RATIO_W 백 종횡비 절연 라인/핀홀, 돌출/미세라인
dParam5 D_IDX_RATIO_B 흑 종횡비 무지부 주름
dParam7 D_IDX_VAL_PINHOLE 핀홀 밝기 백불량 강제승격, 핀홀
dParam8 D_IDX_VAL_EXTRUDING 돌출 밝기 돌출 / 찍힘
dParam10 D_IDX_LINE_V 라인 밝기 라인 / 미세라인
dParam11 D_IDX_COMPACT 진원도 분화구
dParam20 D_IDX_AREA 최소 면적 분화구
dParam21 D_IDX_AREA_DARK_PERCENT 영역내 비율 분화구
m_nMinDarkDefectValue (별도 int 멤버) 흑불량 최소 밝기 스크래치·크랙 / 약흑점

스크래치 각도 기준(10도 / 80도)은 INI 가 아니라 소스에 하드코딩되어 있다 (ClientDlg.cpp:9519). 화면에서는 바꿔볼 수 있지만 저장 대상이 아니다.

저장 방식

  • 저장 대상은 위 9개 키뿐이다. 그 외 키·주석·순서는 원본 그대로 보존된다.
  • 저장 직전 원본을 C:\glim\Parameter\SPEC\_backup\<모델>_<날짜시각>.ini 로 복사한다.
  • 인코딩은 CP949(멀티바이트) 로 읽고 쓴다.

CSV 연동

D:\DATA\LOT_DATA 이하의 *DEFECT_Detail*.csv 를 찾아 목록으로 보여준다. 다른 PC 파일은 파일 선택 버튼으로 직접 올릴 수 있다.

행을 클릭하면 그 불량의 값으로 트리를 타고, 재현 결과를 CSV 에 기록된 Defect Code 와 비교해 준다. [전체 행 일괄 검증] 은 파일 전체를 한 번에 돌린다.

CSV 로 알 수 있는 값 / 알 수 없는 값

CSV(WriteCSV_defect_detail, ClientDlg.cpp:2694)에 기록되는 값은 판정이 끝난 뒤의 결과라서, 트리 상단 분기의 입력 플래그는 들어 있지 않다.

  • CSV 에서 직접 얻는 값 — White, Line, MaxV, MinV, Ratio(Y/X), Ratio(Mopol), Angle, Area, Area-Obj, Compact, NG
  • CSV 에 없어 최종 Defect Code 로 역추론하는 값 — bInsuDefect, bEdgeDefect, bBurrDefect, bHugeDefect, bNullDefect, bUseWhiteImg, 폭 알람 플래그 일체

역추론된 항목에는 화면에 추론 배지가 붙는다. 값을 직접 고쳐서 다시 돌려볼 수 있다.

알려진 한계

MaxV / MinVnID = bWhite ? 0 : 1한쪽 채널만 기록된다. 따라서 흑불량 행(White=0)은 dPeakValue[W][MAX] 를 알 수 없고, 단계 8의 백불량 강제 승격 여부를 CSV 만으로는 확인할 수 없다. 이 경우 화면은 판정을 멈추고 "판정 불가" 로 표시한다 — 값을 지어내지 않고 모르는 것은 모른다고 표시하기 위해서다. 해당 칸에 값을 직접 입력하면 그 지점부터 이어서 판정한다.

소스에서 발견한 특이점 (화면에 주의 표시됨)

  1. 절연 종횡비 폴스루 (9348~9352) — >< 도 아닌 경우(정확히 같은 값) return 이 없어 절연 판정을 빠져나가 아래 단계로 흘러내린다.
  2. 무지부 분기 무의미 (9388, 9400) — bLinedRatio[B] > dParam5 분기가 참/거짓 양쪽 모두 같은 결과(ISLAND / WRINKLE_NULL)를 낸다. dParam5 는 이 경로에서 결과에 영향을 주지 않는다.
  3. 핀홀 조건 중복 (9453 과 9481) — 승격 조건과 핀홀 판정 조건이 완전히 같다. 승격을 거친 원형 백불량은 항상 핀홀이 되고, 돌출/찍힘에는 원래부터 bWhite 였던 불량만 도달한다.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages