예제 #1
0
        /// <summary>
        /// CIM에서 설비로 발생하는 Event에 대한 처리
        /// </summary>
        /// <param name="parameters">Parameter Array</param>
        /// <remarks>
        /// parameters[0] : cmdName
        /// parameters[1] : 1st parameter
        /// parameters[2] : 2nd parameter
        /// parameters[3] : 3rd parameter
        /// parameters[4] : 4th parameter
        /// parameters[5] : 5th Parameter
        /// </remarks>
        public void funProcessCIMEvent(object[] parameters)
        {
            string dstrBitAddress  = "B0020";
            string dstrWordAddress = "W0100";
            string dstrLOTID       = "";
            string dstrGLSID       = "";
            int    dintUnitID      = 0;

            try
            {
                dstrLOTID  = parameters[0].ToString().Trim();
                dstrGLSID  = parameters[1].ToString().Trim();
                dintUnitID = Convert.ToInt32(parameters[2].ToString());

                InfoAct.clsLOT CurrentLot = pInfo.LOTID(dstrLOTID);

                if (CurrentLot == null)
                {
                    pInfo.subLog_Set(InfoAct.clsInfo.LogType.CIM, string.Format("Scrap Index Report Error!! Current Lot Error!! LOTID : {0}, GLSID : {1}, UnitNo : {2}", dstrLOTID, dstrGLSID, dintUnitID));
                    return;
                }

                InfoAct.clsGLS CurrentGLS = CurrentLot.GLSID(dstrGLSID);

                if (CurrentGLS == null)
                {
                    pInfo.subLog_Set(InfoAct.clsInfo.LogType.CIM, string.Format("Scrap Index Report Error!! Current GLS Error!! LOTID : {0}, GLSID : {1}, UnitNo : {2}", dstrLOTID, dstrGLSID, dintUnitID));
                    return;
                }

                dstrWordAddress = CommonAct.FunTypeConversion.funAddressAdd(dstrWordAddress, 16 * (dintUnitID - 2));
                pEqpAct.funWordWrite(dstrWordAddress, pInfo.Port(CurrentLot.InPortID).HostReportPortID, EnuEQP.PLCRWType.ASCII_Data);
                dstrWordAddress = CommonAct.FunTypeConversion.funAddressAdd(dstrWordAddress, 2);
                pEqpAct.funWordWrite(dstrWordAddress, CurrentGLS.SlotID.ToString(), EnuEQP.PLCRWType.Int_Data);
                dstrWordAddress = CommonAct.FunTypeConversion.funAddressAdd(dstrWordAddress, 1);
                pEqpAct.funWordWrite(dstrWordAddress, dstrGLSID.PadRight(20), EnuEQP.PLCRWType.ASCII_Data);

                //LotStartFlag 처리
                dstrWordAddress = CommonAct.FunTypeConversion.funAddressAdd(dstrWordAddress, 10);
                //pEqpAct.funWordWrite(dstrWordAddress, , EnuEQP.PLCRWType.Int_Data);

                //LotEndFlag 처리
                dstrWordAddress = CommonAct.FunTypeConversion.funAddressAdd(dstrWordAddress, 10);
                //pEqpAct.funWordWrite(dstrWordAddress, , EnuEQP.PLCRWType.Int_Data);

                dstrBitAddress = CommonAct.FunTypeConversion.funAddressAdd(dstrBitAddress, dintUnitID - 2);
                pEqpAct.funBitWrite(dstrBitAddress, "1");
            }
            catch (Exception ex)
            {
                pInfo.subLog_Set(InfoAct.clsInfo.LogType.CIM, ex.ToString());
            }
        }
예제 #2
0
        private void subLotInfomationData(int intPortID, string strCSTID, string strLOTID)
        {
            string strAddress = "W9000";

            try
            {
                InfoAct.clsPort CurrentPort = pInfo.Port(intPortID);
                InfoAct.clsLOT  CurrentLot  = pInfo.LOTID(strLOTID);

                strAddress = FunTypeConversion.funAddressAdd(strAddress, 1024 * (intPortID - 1));

                pEqpAct.funWordWrite(strAddress, ("P0" + intPortID).PadRight(4, ' '), EnuEQP.PLCRWType.ASCII_Data);
                strAddress = FunTypeConversion.funAddressAdd(strAddress, 2);

                pEqpAct.funWordWrite(strAddress, strLOTID.PadRight(20, ' '), EnuEQP.PLCRWType.ASCII_Data);
                strAddress = FunTypeConversion.funAddressAdd(strAddress, 10);

                pEqpAct.funWordWrite(strAddress, strCSTID.PadRight(20, ' '), EnuEQP.PLCRWType.ASCII_Data);
                strAddress = FunTypeConversion.funAddressAdd(strAddress, 10);

                pEqpAct.funWordWrite(strAddress, CurrentLot.LOTJudge.PadRight(2, ' '), EnuEQP.PLCRWType.ASCII_Data);
                strAddress = FunTypeConversion.funAddressAdd(strAddress, 1);

                pEqpAct.funWordWrite(strAddress, CurrentLot.LSORTTYPE.PadRight(2, ' '), EnuEQP.PLCRWType.ASCII_Data);
                strAddress = FunTypeConversion.funAddressAdd(strAddress, 1);

                pEqpAct.funWordWrite(strAddress, CurrentLot.OPERID.PadRight(10, ' '), EnuEQP.PLCRWType.ASCII_Data);
                strAddress = FunTypeConversion.funAddressAdd(strAddress, 5);

                pEqpAct.funWordWrite(strAddress, CurrentLot.PRODID.PadRight(20, ' '), EnuEQP.PLCRWType.ASCII_Data);
                strAddress = FunTypeConversion.funAddressAdd(strAddress, 10);

                pEqpAct.funWordWrite(strAddress, CurrentLot.QTY.PadRight(2, ' '), EnuEQP.PLCRWType.ASCII_Data);
                strAddress = FunTypeConversion.funAddressAdd(strAddress, 1);
                strAddress = FunTypeConversion.funAddressAdd(strAddress, 24);

                string[] arrData = new string[25];
                for (int dintLoop = 0; dintLoop < pInfo.Port(intPortID).SlotCount; dintLoop++)
                {
                    if (string.IsNullOrEmpty(CurrentPort.Slot(dintLoop + 1).GLSID))
                    {
                        pEqpAct.funWordWrite(strAddress, "0".PadLeft(128, '0'), EnuEQP.PLCRWType.Hex_Data);
                        pEqpAct.funWordWrite(strAddress, (dintLoop + 1).ToString(), EnuEQP.PLCRWType.Int_Data);
                        strAddress = FunTypeConversion.funAddressAdd(strAddress, 32);
                    }
                    else
                    {
                        if (CurrentLot.GLSID(CurrentPort.Slot(dintLoop + 1).GLSID) == null)
                        {
                            pEqpAct.funWordWrite(strAddress, "0".PadLeft(128, '0'), EnuEQP.PLCRWType.Hex_Data);
                            pEqpAct.funWordWrite(strAddress, (dintLoop + 1).ToString(), EnuEQP.PLCRWType.Int_Data);
                            strAddress = FunTypeConversion.funAddressAdd(strAddress, 32);
                        }
                        else
                        {
                            pEqpAct.funWordWrite(strAddress, (dintLoop + 1).ToString(), EnuEQP.PLCRWType.Int_Data);
                            strAddress = FunTypeConversion.funAddressAdd(strAddress, 1);

                            pEqpAct.funWordWrite(strAddress, CurrentLot.GLSID(CurrentPort.Slot(dintLoop + 1).GLSID).GLSID.PadRight(20, ' '), EnuEQP.PLCRWType.ASCII_Data);
                            strAddress = FunTypeConversion.funAddressAdd(strAddress, 10);

                            pEqpAct.funWordWrite(strAddress, CurrentLot.GLSID(CurrentPort.Slot(dintLoop + 1).GLSID).HostPPID.PadRight(20, ' '), EnuEQP.PLCRWType.ASCII_Data);
                            strAddress = FunTypeConversion.funAddressAdd(strAddress, 10);

                            pEqpAct.funWordWrite(strAddress, CurrentLot.GLSID(CurrentPort.Slot(dintLoop + 1).GLSID).GLSJudge.PadRight(2, ' '), EnuEQP.PLCRWType.ASCII_Data);
                            strAddress = FunTypeConversion.funAddressAdd(strAddress, 1);

                            pEqpAct.funWordWrite(strAddress, CurrentLot.GLSID(CurrentPort.Slot(dintLoop + 1).GLSID).SMPLFLAG.PadRight(2, ' '), EnuEQP.PLCRWType.ASCII_Data);
                            strAddress = FunTypeConversion.funAddressAdd(strAddress, 1);

                            pEqpAct.funWordWrite(strAddress, CurrentLot.GLSID(CurrentPort.Slot(dintLoop + 1).GLSID).RWKCNT.PadRight(2, ' '), EnuEQP.PLCRWType.ASCII_Data);
                            strAddress = FunTypeConversion.funAddressAdd(strAddress, 1);

                            string strPPID = CurrentLot.GLSID(CurrentPort.Slot(dintLoop + 1).GLSID).HostPPID;
                            pEqpAct.funWordWrite(strAddress, pInfo.Unit(0).SubUnit(0).HOSTPPID(strPPID).CLEANER_EQPPPID, EnuEQP.PLCRWType.Int_Data);
                            strAddress = FunTypeConversion.funAddressAdd(strAddress, 1);

                            pEqpAct.funWordWrite(strAddress, pInfo.Unit(0).SubUnit(0).HOSTPPID(strPPID).Oven1_EQPPPID, EnuEQP.PLCRWType.Int_Data);
                            strAddress = FunTypeConversion.funAddressAdd(strAddress, 1);

                            pEqpAct.funWordWrite(strAddress, (Convert.ToSingle(pInfo.Unit(0).SubUnit(0).HOSTPPID(strPPID).Tickness) * 100).ToString(), EnuEQP.PLCRWType.Int_Data);
                            strAddress = FunTypeConversion.funAddressAdd(strAddress, 1);

                            strAddress = FunTypeConversion.funAddressAdd(strAddress, 5);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                pInfo.subLog_Set(InfoAct.clsInfo.LogType.CIM, ex.ToString());
            }
        }
예제 #3
0
파일: clsS6F103.cs 프로젝트: k2un/k2un
        /// <summary>
        /// Primary Message를 Biuld하여 Transaction을 Return한다.
        /// </summary>
        /// <param name="strParameters">Parameter 문자열</param>
        public Transaction funPrimarySend(string strParameters)
        {
            string[] arrayEvent;
            string   dstrLotID   = "";
            int      dintPortID  = 0;
            int      dintIndex   = 0;
            string   dstrSLOTMAP = "";
            string   dstrGLSID   = "";

            try
            {
                arrayEvent = strParameters.Split(',');

                pMsgTran  = pSecsDrv.MakeTransaction(this.StrPrimaryMsgName);
                dstrLotID = arrayEvent[1].Trim();
                InfoAct.clsLOT CurrentLot = pInfo.LOTID(dstrLotID);
                pMsgTran.Primary().Item("PTID").Putvalue("P0" + CurrentLot.InPortID);
                pMsgTran.Primary().Item("LOTID").Putvalue(dstrLotID);
                pMsgTran.Primary().Item("CSTID").Putvalue(CurrentLot.CSTID);
                pMsgTran.Primary().Item("LOTJUDGE").Putvalue(CurrentLot.LOTJudge);
                pMsgTran.Primary().Item("LSORTTYPE").Putvalue(CurrentLot.LSORTTYPE);
                pMsgTran.Primary().Item("OPERID").Putvalue(CurrentLot.OPERID);
                pMsgTran.Primary().Item("PRODID").Putvalue(CurrentLot.PRODID);
                StringBuilder sb;
                dintPortID = pInfo.LOTID(dstrLotID).InPortID;

                #region 수정
                for (int dintSlotNo = 0; dintSlotNo < pInfo.Port(dintPortID).SlotCount; dintSlotNo++)
                {
                    if (pInfo.Port(dintPortID).Slot(dintSlotNo + 1).SLOTINFO != "E")
                    {
                        dintIndex++;
                    }
                }

                pMsgTran.Primary().Item("QTY").Putvalue(dintIndex);
                pMsgTran.Primary().Item("L2").Putvalue(25);
                dintIndex = 0;
                for (int dintSlotNo = 0; dintSlotNo < pInfo.Port(dintPortID).SlotCount; dintSlotNo++)
                {
                    InfoAct.clsLOT CurrentLOT = pInfo.LOTID(dstrLotID);
                    dstrGLSID = pInfo.Port(dintPortID).Slot(dintSlotNo + 1).GLSID;
                    if (string.IsNullOrEmpty(dstrGLSID) == false && CurrentLOT.GLSID(dstrGLSID) != null && pInfo.Port(dintPortID).Slot(dintSlotNo + 1).SLOTINFO != "E")
                    {
                        InfoAct.clsGLS CurrentGLS = CurrentLOT.GLSID(dstrGLSID);
                        if (CurrentGLS.ScrapFlag)
                        {
                            pMsgTran.Primary().Item("SLOTNO" + dintIndex).Putvalue((dintSlotNo + 1).ToString());
                            pMsgTran.Primary().Item("GLSID" + dintIndex).Putvalue("");
                            pMsgTran.Primary().Item("PPID" + dintIndex).Putvalue("");
                            pMsgTran.Primary().Item("GLSJUDGE" + dintIndex).Putvalue("");
                            pMsgTran.Primary().Item("GSORTTYPE" + dintIndex).Putvalue(0);
                            pMsgTran.Primary().Item("SMPLFLAG" + dintIndex).Putvalue(0);
                            pMsgTran.Primary().Item("RWKCNT" + dintIndex).Putvalue(0);

                            pMsgTran.Primary().Item("L4" + dintIndex).Putvalue(0);
                            dstrSLOTMAP += "X";
                        }
                        else
                        {
                            pMsgTran.Primary().Item("SLOTNO" + dintIndex).Putvalue(CurrentGLS.SlotID);
                            pMsgTran.Primary().Item("GLSID" + dintIndex).Putvalue(CurrentGLS.GLSID);
                            pMsgTran.Primary().Item("PPID" + dintIndex).Putvalue(CurrentGLS.HostPPID);
                            pMsgTran.Primary().Item("GLSJUDGE" + dintIndex).Putvalue(CurrentGLS.GLSJudge);
                            pMsgTran.Primary().Item("GSORTTYPE" + dintIndex).Putvalue(CurrentGLS.GSORTTYPE);
                            pMsgTran.Primary().Item("SMPLFLAG" + dintIndex).Putvalue(CurrentGLS.SMPLFLAG);
                            pMsgTran.Primary().Item("RWKCNT" + dintIndex).Putvalue(CurrentGLS.RWKCNT);

                            pMsgTran.Primary().Item("L4" + dintIndex).Putvalue(0);

                            if (pInfo.Port(dintPortID).Slot(dintSlotNo + 1).SLOTINFO == "P")// || pInfo.Port(dintPortID).Slot(dintSlotNo + 1).SLOTINFO == "F" || pInfo.Port(dintPortID).Slot(dintSlotNo + 1).SLOTINFO == "S")
                            {
                                dstrSLOTMAP += "O";
                            }
                            else
                            {
                                dstrSLOTMAP += "X";
                            }
                        }
                    }
                    else
                    {
                        pMsgTran.Primary().Item("SLOTNO" + dintIndex).Putvalue((dintSlotNo + 1).ToString());
                        pMsgTran.Primary().Item("GLSID" + dintIndex).Putvalue("");
                        pMsgTran.Primary().Item("PPID" + dintIndex).Putvalue("");
                        pMsgTran.Primary().Item("GLSJUDGE" + dintIndex).Putvalue("");
                        pMsgTran.Primary().Item("GSORTTYPE" + dintIndex).Putvalue(0);
                        pMsgTran.Primary().Item("SMPLFLAG" + dintIndex).Putvalue(0);
                        pMsgTran.Primary().Item("RWKCNT" + dintIndex).Putvalue(0);

                        pMsgTran.Primary().Item("L4" + dintIndex).Putvalue(0);
                        dstrSLOTMAP += "X";
                    }

                    dintIndex++;
                }
                pMsgTran.Primary().Item("SLOTSEL").Putvalue(dstrSLOTMAP);

                #endregion

                #region 이전 소스
                //if (pInfo.Port(pInfo.LOTID(dstrLotID).InPortID).AbortFlag)
                //{
                //    int GLSRunCnt = 0;
                //    foreach (string str in pInfo.LOTID(dstrLotID).GLS())
                //    {
                //        InfoAct.clsGLS CurrentGLS = pInfo.LOTID(dstrLotID).GLSID(str);
                //        if (CurrentGLS.RunState == "E")
                //        {
                //            GLSRunCnt++;
                //        }
                //    }
                //    pMsgTran.Primary().Item("QTY").Putvalue(GLSRunCnt);

                //    pMsgTran.Primary().Item("L2").Putvalue(GLSRunCnt);
                //    sb = new StringBuilder("X".PadRight(25, 'X'));
                //    foreach (string strGLSID in CurrentLot.GLS())
                //    {

                //        InfoAct.clsGLS CurrentGLS = CurrentLot.GLSID(strGLSID);
                //        if (CurrentGLS.RunState == "E")
                //        {
                //            sb[CurrentGLS.SlotID - 1] = 'O';

                //            pMsgTran.Primary().Item("SLOTNO" + dintIndex).Putvalue(CurrentGLS.SlotID);
                //            pMsgTran.Primary().Item("GLSID" + dintIndex).Putvalue(CurrentGLS.GLSID);
                //            pMsgTran.Primary().Item("PPID" + dintIndex).Putvalue(CurrentGLS.HostPPID);
                //            pMsgTran.Primary().Item("GLSJUDGE" + dintIndex).Putvalue(CurrentGLS.GLSJudge);
                //            pMsgTran.Primary().Item("GSORTTYPE" + dintIndex).Putvalue(CurrentGLS.GSORTTYPE);
                //            pMsgTran.Primary().Item("SMPLFLAG" + dintIndex).Putvalue(CurrentGLS.SMPLFLAG);
                //            pMsgTran.Primary().Item("RWKCNT" + dintIndex).Putvalue(CurrentGLS.RWKCNT);

                //            pMsgTran.Primary().Item("L4" + dintIndex).Putvalue(0);
                //            pMsgTran.Primary().Item("PNLJUDGE" + dintIndex + 0).Putvalue("");
                //            pMsgTran.Primary().Item("PNLGRADE" + dintIndex + 0).Putvalue("");
                //            dintIndex++;
                //        }
                //    }
                //}
                //else
                //{
                //    pMsgTran.Primary().Item("L2").Putvalue(CurrentLot.GLSCount);
                //    sb = new StringBuilder("X".PadRight(25, 'X'));

                //    foreach (string strGLSID in CurrentLot.GLS())
                //    {
                //        InfoAct.clsGLS CurrentGLS = CurrentLot.GLSID(strGLSID);
                //        sb[CurrentGLS.SlotID - 1] = 'O';

                //        pMsgTran.Primary().Item("SLOTNO" + dintIndex).Putvalue(CurrentGLS.SlotID);
                //        pMsgTran.Primary().Item("GLSID" + dintIndex).Putvalue(CurrentGLS.GLSID);
                //        pMsgTran.Primary().Item("PPID" + dintIndex).Putvalue(CurrentGLS.HostPPID);
                //        pMsgTran.Primary().Item("GLSJUDGE" + dintIndex).Putvalue(CurrentGLS.GLSJudge);
                //        pMsgTran.Primary().Item("GSORTTYPE" + dintIndex).Putvalue(CurrentGLS.GSORTTYPE);
                //        pMsgTran.Primary().Item("SMPLFLAG" + dintIndex).Putvalue(CurrentGLS.SMPLFLAG);
                //        pMsgTran.Primary().Item("RWKCNT" + dintIndex).Putvalue(CurrentGLS.RWKCNT);

                //        pMsgTran.Primary().Item("L4" + dintIndex).Putvalue(0);
                //        pMsgTran.Primary().Item("PNLJUDGE" + dintIndex + 0).Putvalue("");
                //        pMsgTran.Primary().Item("PNLGRADE" + dintIndex + 0).Putvalue("");
                //        dintIndex++;
                //    }
                //    pMsgTran.Primary().Item("QTY").Putvalue(dintIndex);

                //}
                //pMsgTran.Primary().Item("SLOTSEL").Putvalue(sb.ToString());

                #endregion

                return(pMsgTran);
            }
            catch (Exception error)
            {
                funSetLog(InfoAct.clsInfo.LogType.CIM, error.ToString());
                return(null);
            }
        }