mrDarker
2025-07-14 1c0ac1c7924efb8a2cb6962d3eda4126533a5ac8
ENRIT/InterfaceManager.cpp
@@ -654,11 +654,160 @@
   g_pLog->DisplayMessage(_T("Full Image Save Completed : Time[%d]"),GetTickCount()-dwTick);
}
void CInterfaceManager::CoordProfileJudge(HISTORY_RESULT& pHistory)
{
   PROFILECHAMFER_RESULT_DATA* pProfileResult1 = m_GlassData.GetProfileInspectData();
   pHistory.bResult = TRUE;
   CINSPECT_JUDGEMENT_PARM* pJudges = m_GlassRecipe.GetJudgePrm();
   NgInfo ngArray[3][NG_INF_TOTAL];
   BlVision_GetSoftVisionApp()->Execute(4, ngArray[0]);
   BlVision_GetSoftVisionApp()->Execute(5, ngArray[1]);
   BlVision_GetSoftVisionApp()->Execute(7, ngArray[2]);
   pHistory.nProAlarmResultCountB = 0;
   pHistory.nProAlarmResultCountA = 0;
   pHistory.nProAlarmResultCountD = 0;
   pHistory.nProAlarmResultCountC = 0;
   for (int i = 0; i < 3; i++)
   {
      /*A-BOT*/
      if (i == 0)
      {
         for (int c = 33; c < 47; c++)
         {
            if (pProfileResult1->ProfileData[c].bUseJudge == 1)
            {
               if (pHistory.nProfileDiff[c] > pJudges->nMinProfileNgCount_MinDiff[4])
               {
                  pHistory.bResult = FALSE;
               }
               if (pHistory.nProfileDiff[c] < -1 * pProfileResult1->ProfileData[c].nJudgeMinus || pHistory.nProfileDiff[c] > pProfileResult1->ProfileData[c].nJudgePlus)
               {
                  pHistory.nProAlarmResultCountA += 1;
               }
            }
         }
         for (int z = 0; z < 50; z++)
         {
            if (ngArray[i][z].ngType == 5 && ngArray[i][z].id < 6)
            {
               if (ngArray[i][z].maxValue<ngArray[i][z].result || ngArray[i][z].minValue>ngArray[i][z].result)
               {
                  pHistory.nProAlarmResultCountA += 1;
                  if (pHistory.nProAlarmResultCountA > pJudges->nMinProfileNgCount[4] || ngArray[i][z].result > pJudges->nMinProfileNgCount_MinDiff[4])
                     pHistory.bResult = FALSE;
               }
            }
            if (ngArray[i][z].ngType == 5 && (5 < ngArray[i][z].id && ngArray[i][z].id < 11))
            {
               if (ngArray[i][z].maxValue<ngArray[i][z].result || ngArray[i][z].minValue>ngArray[i][z].result)
               {
                  pHistory.nProAlarmResultCountA += 1;
                  if (pHistory.nProAlarmResultCountA > pJudges->nMinProfileNgCount[4] || ngArray[i][z].result > pJudges->nMinProfileNgCount_MinDiff[4])
                     pHistory.bResult = FALSE;
               }
            }
         }
      }
      /*B-BOT*/
      if (i == 1)
      {
         for (int c = 0; c < 10; c++)
         {
            if (pProfileResult1->ProfileData[c].bUseJudge == 1)
            {
               if (pHistory.nProfileDiff[c] > pJudges->nMinProfileNgCount_MinDiff[5])
               {
                  pHistory.bResult = FALSE;
               }
               if (pHistory.nProfileDiff[c] < -1 * pProfileResult1->ProfileData[c].nJudgeMinus || pHistory.nProfileDiff[c] > pProfileResult1->ProfileData[c].nJudgePlus)
               {
                  pHistory.nProAlarmResultCountB += 1;
               }
            }
         }
         for (int z = 0; z < 50; z++)
         {
            if (ngArray[i][z].ngType == 5 && ngArray[i][z].id < 6)
            {
               if (ngArray[i][z].maxValue<ngArray[i][z].result || ngArray[i][z].minValue>ngArray[i][z].result)
               {
                  pHistory.nProAlarmResultCountB += 1;
                  if (pHistory.nProAlarmResultCountB > pJudges->nMinProfileNgCount[5] || ngArray[i][z].result > pJudges->nMinProfileNgCount_MinDiff[5])
                     pHistory.bResult = FALSE;
               }
            }
         }
      }
      /*D-BOT*/
      if (i == 2)
      {
         for (int c = 23; c < 33; c++)
         {
            if (pProfileResult1->ProfileData[c].bUseJudge == 1)
            {
               if (pHistory.nProfileDiff[c] > pJudges->nMinProfileNgCount_MinDiff[7])
               {
                  pHistory.bResult = FALSE;
               }
               if (pHistory.nProfileDiff[c] < -1 * pProfileResult1->ProfileData[c].nJudgeMinus || pHistory.nProfileDiff[c] > pProfileResult1->ProfileData[c].nJudgePlus)
               {
                  pHistory.nProAlarmResultCountD += 1;
               }
            }
         }
         for (int z = 0; z < 50; z++)
         {
            if (ngArray[i][z].ngType == 5 && ngArray[i][z].id < 6)
            {
               if (ngArray[i][z].maxValue<ngArray[i][z].result || ngArray[i][z].minValue>ngArray[i][z].result)
               {
                  pHistory.nProAlarmResultCountD += 1;
                  if (pHistory.nProAlarmResultCountD > pJudges->nMinProfileNgCount[7] || ngArray[i][z].result > pJudges->nMinProfileNgCount_MinDiff[7])
                     pHistory.bResult = FALSE;
               }
            }
         }
      }
   }
   for (int i = 10; i < 23; i++)
   {
      if (pProfileResult1->ProfileData[i].bUseJudge == 1)
      {
         if (pHistory.nProfileDiff[i] < -1 * pProfileResult1->ProfileData[i].nJudgeMinus || pHistory.nProfileDiff[i] > pProfileResult1->ProfileData[i].nJudgePlus)
         {
            pHistory.nProAlarmResultCountC += 1;
            if (pHistory.nProAlarmResultCountD > pJudges->nMinProfileNgCount[6] || pHistory.nProfileDiff[i] > pJudges->nMinProfileNgCount_MinDiff[6])
               pHistory.bResult = FALSE;
         }
      }
   }
}
void CInterfaceManager::WritePLCResult(HISTORY_RESULT &pHistory)
{
   short *pResult = m_GlassData.GetGlassResultInfo();
   ZeroMemory(pResult,sizeof(short)*5);
   if (m_HardwareRecipe.GetCoordProfileUse() == 1)
   {
      CoordProfileJudge(pHistory);
      if (pHistory.nDefectCnt- (pHistory.nProAlarmResultCountD+ pHistory.nProAlarmResultCountB+ pHistory.nProAlarmResultCountA+ pHistory.nProAlarmResultCountC) >0 )
         pHistory.bResult = FALSE;
   }
   // 0 : OK, 1 : NG
   if(pHistory.bResult == TRUE)
   {
@@ -667,15 +816,26 @@
   }
   else
   {
      if (g_pLog->m_nHoleAlarmState ==TRUE)
      {
         pResult[10] = g_pLog->m_nHoleAlarmState;
      pResult[0] = 1;   
         g_pLog->m_nHoleAlarmState = 0;
         g_pLog->DisplayMessage(_T("Inspection Result Glass %s - NG, Hole Alarm%d-NG"), g_pBase->m_strHPanelID, pResult[10]);
      }
      else
      {
         pResult[0] = 1;
         pResult[10] = 0;
      g_pLog->DisplayMessage(_T("Inspection Result Glass %s - NG"),g_pBase->m_strHPanelID);
      }
   }
   m_GlassData.GetStageTheta(0,pResult[1],pResult[2]);
   m_GlassData.GetStageTheta(1,pResult[3],pResult[4]);
   m_pControlInterface->SendCIMData(pResult,PLC_ADDR_GLASS_JUDEMENT,5);
   g_pLog->DisplayMessage(_T("write PLC Result Data : Resut %d,1_L_Theat %d,1_S_Theat %d,2_L_Theat %d,2_S_Theat %d"),pResult[0],pResult[1],pResult[2],pResult[3],pResult[4]);
   m_pControlInterface->SendCIMData(pResult,PLC_ADDR_GLASS_JUDEMENT,11);
   g_pLog->DisplayMessage(_T("write PLC Result Data : Resut %d,1_L_Theat %d,1_S_Theat %d,2_L_Theat %d,2_S_Theat %d,pResult[10]:%d"),pResult[0],pResult[1],pResult[2],pResult[3],pResult[4], pResult[10]);
   INS_PROFILE_RESULT_INFO *pProfileResult = m_GlassData.GetProfileResultInfo();