ABOUT ME

Today
Yesterday
Total
  • Example source of processing when EQP State is changed
    IT Story/C# & WPF 2022. 7. 3. 17:37
    반응형
    /// <param name="nUnitID"></param>
            /// <param name="sEQPState"></param>
            private void s_ChangeEQPStatus(int nUnitID, int EQPState)
            {
                Structure.classStructure.EQPState sBackupOLDState = Structure.classStructure.EQPState.NONE;
                Structure.classStructure.EQPState eEQPState = Structure.classStructure.EQPState.NONE;
    
                try
                {
                    eEQPState = (Structure.classStructure.EQPState)EQPState;
                    if (this.m_Info.Unit(nUnitID).SubUnit(0).EQPState == eEQPState) return;
    
                    //이전 상태를 백업
                    sBackupOLDState = this.m_Info.Unit(nUnitID).SubUnit(0).EQPState;
    
                    this.m_Info.Unit(nUnitID).SubUnit(0).EQPStateOLD = sBackupOLDState;    //이전
                    this.m_Info.Unit(nUnitID).SubUnit(0).EQPState = eEQPState;             //현재
    
                    //HOST나 OP가 이벤트를 발생시키지 않았다면 장비가 발생시킨것임.
                    if (this.m_Info.Unit(nUnitID).SubUnit(0).EQPStateChangeBYWHO ==  Structure.classStructure.BYWHO.ByHost || this.m_Info.Unit(nUnitID).SubUnit(0).EQPStateChangeBYWHO == Structure.classStructure.BYWHO.ByOperator) { }
                    else
                    {
                        this.m_Info.Unit(nUnitID).SubUnit(0).EQPStateChangeBYWHO = Structure.classStructure.BYWHO.ByEQP;   //By Equipment
                    }
    
                    // 이전 상태가 MANUAL 이고,
                    if (sBackupOLDState == Structure.classStructure.EQPState.DOWN)
                    {
                        // 현재 상태가 IDLE or BUSY이면 JOB RESTART 보고
                        if (eEQPState == Structure.classStructure.EQPState.IDLE || eEQPState == Structure.classStructure.EQPState.BUSY)
                        {
                            this.m_Info.Set_SendSF(Structure.classStructure.SFName.S6F11EQPEventRequest, 52, nUnitID, 0);
                            this.m_Info.Unit(nUnitID).SubUnit(0).EQPStateChangeBYWHO = Structure.classStructure.BYWHO.None;
                        }
                        else
                        {
                            this.m_Info.Set_SendSF(Structure.classStructure.SFName.S6F11EQPEventRequest, 53, nUnitID, 0);
                            this.m_Info.Unit(nUnitID).SubUnit(0).EQPStateChangeBYWHO = Structure.classStructure.BYWHO.None;
                        }
                    }
                    else if (sBackupOLDState == Structure.classStructure.EQPState.STOP)
                    {
                        if (eEQPState == Structure.classStructure.EQPState.DOWN)
                        {
                            this.m_Info.Set_SendSF(Structure.classStructure.SFName.S6F11EQPEventRequest, 51, nUnitID, 0);
                            this.m_Info.Unit(nUnitID).SubUnit(0).EQPStateChangeBYWHO = Structure.classStructure.BYWHO.None;
                        }
                        else
                        {
                            this.m_Info.Set_SendSF(Structure.classStructure.SFName.S6F11EQPEventRequest, 54, nUnitID, 0);
                            this.m_Info.Unit(nUnitID).SubUnit(0).EQPStateChangeBYWHO = Structure.classStructure.BYWHO.None;
                        }
                    }
                    else
                    {
                        // 현재 상태가 MANUAL으로 바뀐 것이면,
                        if (eEQPState == Structure.classStructure.EQPState.DOWN)
                        {
                            this.m_Info.Set_SendSF(Structure.classStructure.SFName.S6F11EQPEventRequest, 51, nUnitID, 0);
                            this.m_Info.Unit(nUnitID).SubUnit(0).EQPStateChangeBYWHO = Structure.classStructure.BYWHO.None;
                        }
                        else if (eEQPState == Structure.classStructure.EQPState.STOP)
                        {
                            this.m_Info.Set_SendSF(Structure.classStructure.SFName.S6F11EQPEventRequest, 53, nUnitID, 0);
                            this.m_Info.Unit(nUnitID).SubUnit(0).EQPStateChangeBYWHO = Structure.classStructure.BYWHO.None;
                        }
                    }
                }
                catch (Exception ex)
                {
                    this.m_Info.Set_Log(Common.EnuCommon.LogType.CIM, ex.ToString());
                }
            }
    반응형

    댓글

Designed by Tistory.