DUALSONIC_Multy_Function_Tester 금일 측정 수량 오류 #3

Closed
opened 2025-07-01 09:18:21 +09:00 by kje97 · 2 comments
Owner

1. 요구사항

  • 생산2 모드(RF Test) 에서 불량 발생 시, 불량 수량이 업데이트되지 않음
  • 재검사 시(기합격 후 불량 발생 → 재조립 후 재검사한 경우),
    측정 수량 / 합격 수량 / 불량 수량이 모두 업데이트되지 않음
그림1.png

2. 원인 분석

1. RFReCount() 함수 로직 오류

  • RF 테스트 결과를 기반으로 판정해야 하나, HF 테스트 결과로 상태를 체크하고 있음
  • RF 테스트 결과 기준으로 상태 판단 및 카운트 수행 필요

2. TDCompare() 함수의 날짜 조건 부족

  • 재검사 시 과거 모든 검사 이력(HF/RF 포함)을 기준으로 수량 판단
  • 금일 테스트 이력만 카운트 기준이 되어야 하나, 날짜 조건이 누락되어 있음

3. 수정 방향

1. RFReCount() 함수 수정

  • 검사 결과 판단 시 RF 검사 결과(txbRFresult)를 기준으로 처리

  • 재검사(중복 측정) 시 이전 상태와 비교하여 수량 증감 처리
    예시:

    • 이전 실패 → 현재 성공: 불량 -1, 합격 +1
    • 이전 성공 → 현재 실패: 합격 -1, 불량 +1

2. TDCompare() 함수 수정

  • 검사 이력 체크 시, 금일 날짜 조건 추가
  • SQL 쿼리에 다음 조건 추가:
AND DATE(TestDate) = CURDATE()

4. 작업 내역 및 수정 내용

1️⃣ 테스트 불합격 시 기기 전원이 꺼지지 않던 문제 수정

  • 문제: 불합격 후 재테스트를 위해 전원이 바로 꺼지지 않음
  • 조치: InitializeDeviceState() + Jig_End() + ForceJigShutdown() 로직 추가하여 불합격 시 즉시 전원 차단

ForceJigShutdown() 함수에서 [endmft] 명령 전송 후 시리얼 포트 재연결 처리

2️⃣ RF 테스트 불량 발생 시 불량 수량 미카운트 문제

  • 문제: RFReCount() 함수가 RF 불량을 HF 기준으로 판별
  • 원인: TDDataSet(TestStep) 값이 HF 결과를 보고 있어 오작동
  • 조치: processNum과 비교하여 RF 기준으로 수정
  • 기능 동작 요약:
If dupDATA = 0 Then
    ' 신규 테스트
    오늘 수량 +1, 결과에 따라 합격/불량 +1
Else
    ' 중복 테스트 (재테스트)
    기존 실패  성공: 불량 -1, 합격 +1
    기존 성공  실패: 합격 -1, 불량 +1
  • 목표:

    • 오늘 수량 = 최초 테스트 개수
    • 합격/불량 = 최종 결과 기준 (재검사 반영)

3️⃣ 재검사 시 수량 누락 문제 (모드 무관)

문제:

  • 재검사하는 경우(이미 테스트 합격하여 생산 진행되었다가 불량 발생하여 다시 재조립한 후 테스트 공정을 다시 거치는 경우) 측정수량, 합격수량, 불량수량이 업데이트되지 않음
  • 금일 테스트한 이력을 기준으로 카운트를 업데이트해야 하는데, RF 검사 결과, HF 검사 결과 이전 이력 모두를 대상으로 카운트를 하는 오류 발생

원인:

  • TDCompare() 함수에서 금일 테스트한 이력이 있는지 체크하지 않음
  • 중복 체크 쿼리에 날짜 조건이 없어서 과거 이력까지 포함하여 dupDATA > 0이 되면서 재검사로 인식

수정:

  • 쿼리에 AND DATE(TestDate) = CURDATE() 조건 추가하여 금일 테스트 이력만 체크
DBCmd = "SELECT COUNT(PV_SN) FROM " & tableName(i) & _
        " WHERE PV_SN = '" & TestData.Test_Serial & "'" & _
        " AND DATE(TestDate) = CURDATE()"

결과:

  • 재조립 후 재검사 시 오늘 검사 이력이 없으므로 dupDATA = 0으로 처리
  • 금일 새로운 검사로 인식하여 측정수량, 합격/불합격 수량이 정상 카운트됨
  • 오늘 테스트한 이력만 기준으로 수량 카운트 → 정확한 일별 통계 반영

⚠️ 추가 문제 원인 및 수정 결과 1 (생산 2 - RF모드)

  • 추가 문제 원인: 수량 카운트 미반영 현상 발생
    • 카운트 증가 안해서 → 재수정 필요
    • RF 테스트 결과를 기준으로 로직 수정하였으나, 카운트는 여전히 업데이트되지 않음
  • 추가 확인 결과 : 테스트 실패 시 저장/카운트 업데이트 로직(CountChanage)이 실행되지 않음
    • ProcessEnd 블록은 호출되지만, 그 내부에서 조건 분기에 따라 Jig_End()호출
    • 전체 데이터 저장 프로세스: PostgreSQL → DB → Count → CSV 순서로 모든 단계 실행 할수 있도록 추가
    • 모든 테스트 통과 시 → GoTo RunSuccess → 내부에서 합격 처리 완료 후 → GoTo NormalEnd (정상 종료로 이동) 하도록 수정
  • 수정: ProcessEnd 블록에 저장 프로세스 로직 추가
  • 결과화면:
합격 화면 불합격 화면
그림111.png 그림22222.png
  • 기존 마스터 제품으로 확인 진행
    • 금일 기준 테스트 이력이 없어 최초 측정 시 → 측정수량 +1
    • 이후 테스트 2회 진행 결과:
      • 합격: 1회
      • 불합격: 1회
    • 총 측정수량: 2개로 정상 반영됨

⚠️ 추가 문제 원인 및 수정 결과 2 (생산 1 - HF/정보입력 모드)

  • 문제 원인

    • RF 모드는 정상 동작
    • HIFU/정보입력 모드에서 MySQL Duplicate Entry (PV_SN) 오류 발생 → DB 저장 실패 → 수량 카운트 미반영
  • 원인 확인 및 조치

    • 기존 INSERT 로직에서 중복 시 오류 발생 → 저장 중단됨
    • SELECT COUNT(*) 쿼리 추가로 중복 시 UPDATE, 없으면 INSERT 처리로 변경
    • 저장 로직 정상이후에도 Goto 흐름 문제로 저장/카운트 중복 실행 또는 누락 발생
    • Goto NormalEnd명확히 분기하여 중복 실행 방지 및 로직 안정화
  • 결과 화면 :

합격 화면 불합격 화면
캡처5.PNG 캡처33.PNG
  • 테스트 결과

    • 하나의 시리얼 번호로 합격/불합격 전환 테스트

      • 최초 저장: 금일 기준 측정수량 +1 증가
      • 이후 동일 SN으로 합격/불합격 반복 시 → 추가 증가 없이 +1/-1

공정 진행시 카운트 확인 완료(7/17 확인)

7월 16일자 RF공정시 불량 카운트 2개 DB jomtMES_PD1Tbl 동일

image.png
## 1. 요구사항 * **생산2 모드(RF Test)** 에서 불량 발생 시, **불량 수량이 업데이트되지 않음** * **재검사 시**(기합격 후 불량 발생 → 재조립 후 재검사한 경우), **측정 수량 / 합격 수량 / 불량 수량이 모두 업데이트되지 않음** <img width="527" alt="그림1.png" src="attachments/44037441-a81d-4728-a572-11f7998af94c"> --- ## 2. 원인 분석 #### 1. `RFReCount()` 함수 로직 오류 * RF 테스트 결과를 기반으로 판정해야 하나, **HF 테스트 결과로 상태를 체크**하고 있음 * ➤ **RF 테스트 결과 기준으로 상태 판단 및 카운트 수행** 필요 #### 2. `TDCompare()` 함수의 날짜 조건 부족 * 재검사 시 **과거 모든 검사 이력(HF/RF 포함)을 기준으로 수량 판단**함 * ➤ **금일 테스트 이력만** 카운트 기준이 되어야 하나, **날짜 조건이 누락**되어 있음 --- ## 3. 수정 방향 #### 1. `RFReCount()` 함수 수정 * 검사 결과 판단 시 **RF 검사 결과(`txbRFresult`)를 기준**으로 처리 * 재검사(중복 측정) 시 이전 상태와 비교하여 수량 증감 처리 예시: * 이전 실패 → 현재 성공: 불량 -1, 합격 +1 * 이전 성공 → 현재 실패: 합격 -1, 불량 +1 #### 2. `TDCompare()` 함수 수정 * 검사 이력 체크 시, **금일 날짜 조건 추가** * SQL 쿼리에 다음 조건 추가: ```sql AND DATE(TestDate) = CURDATE() ``` --- ## 4. 작업 내역 및 수정 내용 ### 1️⃣ 테스트 불합격 시 기기 전원이 꺼지지 않던 문제 수정 * **문제:** 불합격 후 재테스트를 위해 전원이 바로 꺼지지 않음 * **조치:** `InitializeDeviceState()` + `Jig_End()` + `ForceJigShutdown()` 로직 추가하여 불합격 시 **즉시 전원 차단** → `ForceJigShutdown()` 함수에서 `[endmft]` 명령 전송 후 시리얼 포트 재연결 처리 ### 2️⃣ RF 테스트 불량 발생 시 불량 수량 미카운트 문제 * **문제:** `RFReCount()` 함수가 RF 불량을 **HF 기준**으로 판별 * **원인:** `TDDataSet(TestStep)` 값이 HF 결과를 보고 있어 오작동 * **조치:** `processNum`과 비교하여 RF 기준으로 수정 * **기능 동작 요약:** ```vbnet If dupDATA = 0 Then ' 신규 테스트 오늘 수량 +1, 결과에 따라 합격/불량 +1 Else ' 중복 테스트 (재테스트) 기존 실패 → 성공: 불량 -1, 합격 +1 기존 성공 → 실패: 합격 -1, 불량 +1 ``` * **목표:** * 오늘 수량 = 최초 테스트 개수 * 합격/불량 = 최종 결과 기준 (재검사 반영) ### 3️⃣ 재검사 시 수량 누락 문제 (모드 무관) **문제:** - 재검사하는 경우(이미 테스트 합격하여 생산 진행되었다가 불량 발생하여 다시 재조립한 후 테스트 공정을 다시 거치는 경우) 측정수량, 합격수량, 불량수량이 업데이트되지 않음 - 금일 테스트한 이력을 기준으로 카운트를 업데이트해야 하는데, RF 검사 결과, HF 검사 결과 이전 이력 모두를 대상으로 카운트를 하는 오류 발생 **원인:** - `TDCompare()` 함수에서 금일 테스트한 이력이 있는지 체크하지 않음 - 중복 체크 쿼리에 날짜 조건이 없어서 과거 이력까지 포함하여 `dupDATA > 0`이 되면서 재검사로 인식 **수정:** - 쿼리에 `AND DATE(TestDate) = CURDATE()` 조건 추가하여 금일 테스트 이력만 체크 ```vbnet DBCmd = "SELECT COUNT(PV_SN) FROM " & tableName(i) & _ " WHERE PV_SN = '" & TestData.Test_Serial & "'" & _ " AND DATE(TestDate) = CURDATE()" ``` **결과:** - 재조립 후 재검사 시 오늘 검사 이력이 없으므로 `dupDATA = 0`으로 처리 - 금일 새로운 검사로 인식하여 측정수량, 합격/불합격 수량이 정상 카운트됨 - 오늘 테스트한 이력만 기준으로 수량 카운트 → 정확한 일별 통계 반영 --- ### ⚠️ 추가 문제 원인 및 수정 결과 1 (생산 2 - RF모드) - **추가 문제 원인: 수량 카운트 미반영 현상 발생** - 카운트 증가 안해서 → 재수정 필요 - `RF 테스트 결과`를 기준으로 **로직 수정하였으나**, 카운트는 여전히 업데이트되지 않음 - **추가 확인 결과** : **테스트 실패 시 저장/카운트 업데이트 로직**(`CountChanage`)이 실행되지 않음 - `ProcessEnd` 블록은 호출되지만, 그 내부에서 조건 분기에 따라 **Jig_End()호출** - **전체 데이터 저장 프로세스**: PostgreSQL → DB → Count → CSV 순서로 모든 단계 실행 할수 있도록 추가 - **모든 테스트 통과 시** → GoTo RunSuccess → 내부에서 **합격 처리 완료 후 → GoTo NormalEnd** (정상 종료로 이동) 하도록 수정 - **수정**: ProcessEnd 블록에 저장 프로세스 로직 추가 - **결과화면**: | 합격 화면 | 불합격 화면 | | ------------------------ | --------------------------- | | ![그림111.png](/attachments/c6b6e4a9-9004-4961-87e4-292536df1922)|![그림22222.png](/attachments/c79468fc-80a6-4a3b-98ab-9b8e490b0922)| - **기존 마스터 제품으로 확인 진행** - 금일 기준 **테스트 이력이 없어 최초 측정 시 → 측정수량 +1** - 이후 테스트 2회 진행 결과: - **합격: 1회** - **불합격: 1회** - **총 측정수량: 2개**로 정상 반영됨 --- ### ⚠️ 추가 문제 원인 및 수정 결과 2 (생산 1 - HF/정보입력 모드) - **문제 원인** * *RF 모드*는 정상 동작 * *HIFU/정보입력 모드*에서 **MySQL Duplicate Entry (PV\_SN)** 오류 발생 → DB 저장 실패 → 수량 카운트 미반영 - **원인 확인 및 조치** * **기존 INSERT 로직**에서 중복 시 오류 발생 → 저장 중단됨 * → `SELECT COUNT(*)` 쿼리 추가로 **중복 시 UPDATE, 없으면 INSERT** 처리로 변경 * 저장 로직 정상이후에도 **`Goto` 흐름 문제로 저장/카운트 중복 실행 또는 누락** 발생 * → `Goto NormalEnd`를 **명확히 분기**하여 **중복 실행 방지 및 로직 안정화** - **결과 화면** : | 합격 화면 | 불합격 화면 | | ------------------------ | --------------------------- | | <img width="1440" alt="캡처5.PNG" src="attachments/48920938-12d1-4e73-a573-f0b2a6b5d4c0">|<img width="1440" alt="캡처33.PNG" src="attachments/5d7df032-aa96-4b8a-aa37-0015daee6409">| - **테스트 결과** * **하나의 시리얼 번호로 합격/불합격 전환 테스트** * 최초 저장: 금일 기준 측정수량 **+1 증가** * 이후 동일 SN으로 합격/불합격 반복 시 → **추가 증가 없이 +1/-1** ### 공정 진행시 카운트 확인 완료(7/17 확인) #### 7월 16일자 RF공정시 불량 카운트 2개 DB jomtMES_PD1Tbl 동일 <img width="749" alt="image.png" src="attachments/b9390cdd-24d3-42d5-865f-a12d2f93c65a">
kje97 added reference fix/NgCount_Update_Error 2025-07-01 09:18:39 +09:00
kje97 closed this issue 2025-07-01 10:05:43 +09:00
kje97 reopened this issue 2025-07-01 10:05:55 +09:00
kje97 closed this issue 2025-07-01 10:06:32 +09:00
Author
Owner

fix/NgCount_Update_Error #4[#4]

fix/NgCount_Update_Error #4[http://20.249.208.89:3000/jionmt-sw/prod-ProductFunctionTester/pulls/4]
kje97 reopened this issue 2025-07-04 08:46:00 +09:00
kje97 changed reference from fix/NgCount_Update_Error to fix/NgCount 2025-07-04 08:46:21 +09:00
kje97 closed this issue 2025-07-07 17:44:24 +09:00
Author
Owner

fix: RF공정 DB insert 오류 수정 506b0a241b

fix: RF공정 DB insert 오류 수정 506b0a241baaf935eec649c9fd72229d02c84944
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jionmt-sw/prod-ProductFunctionTester#3
No description provided.