Exemplo n.º 1
0
        public void On_Node_State_Changed(Node Node, string Status)
        {
            logger.Debug("On_Node_State_Changed");
            NodeStatusUpdate.UpdateNodeState(Node.Name, Status);
            switch (Node.Name)
            {
            case "ROBOT01":
            case "ROBOT02":
                ManualRobotStatusUpdate.UpdateRobotStatus(Node.Name, Status);    //update 手動功能畫面
                break;

            case "ALIGNER01":
            case "ALIGNER02":
                ManualAlignerStatusUpdate.UpdateAlignerStatus(Node.Name, Status);    //update 手動功能畫面
                break;
            }
        }
Exemplo n.º 2
0
        public void On_Command_Finished(Node Node, Transaction Txn, CommandReturnMessage Msg)
        {
            logger.Debug("On_Command_Finished");
            //Transaction txn = new Transaction();
            switch (Txn.FormName)
            {
            case "ChangeAlignWaferSize":
                switch (Node.Type)
                {
                case "ROBOT":
                    switch (Txn.Method)
                    {
                    case Transaction.Command.RobotType.GetWait:
                        Node.WaitForFinish = false;
                        break;
                    }
                    break;
                }
                break;

            case "FormManual":

                switch (Node.Type)
                {
                case "SMARTTAG":
                    switch (Txn.Method)
                    {
                    case Transaction.Command.SmartTagType.GetLCDData:
                        ManualPortStatusUpdate.UpdateID(Msg.Value);
                        break;
                    }
                    //ManualPortStatusUpdate.LockUI(false);
                    break;

                case "LOADPORT":

                    ManualPortStatusUpdate.UpdateLog(Node.Name, Msg.Command + " Finished");
                    //ManualPortStatusUpdate.LockUI(false);

                    break;

                case "ROBOT":
                    ManualRobotStatusUpdate.UpdateGUI(Txn, Node.Name, Msg.Value);        //update 手動功能畫面
                    break;

                case "ALIGNER":
                    ManualAlignerStatusUpdate.UpdateGUI(Txn, Node.Name, Msg.Value);        //update 手動功能畫面
                    break;
                }
                break;

            default:
                switch (Node.Type)
                {
                case "ROBOT":
                //switch (Txn.Method)
                //{
                //    case Transaction.Command.RobotType.Mapping: //when 200mm port mapped by robot's fork, then port's busy switch to false.
                //        NodeManagement.Get(Txn.Position).Busy = false;
                //        break;
                //}
                //break;
                case "LOADPORT":
                    switch (Txn.Method)
                    {
                    }
                    break;

                case "OCR":
                    switch (Txn.Method)
                    {
                    case Transaction.Command.OCRType.Read:
                        OCRUpdate.UpdateOCRRead(Node.Name, Msg.Value, Txn.TargetJobs[0]);

                        break;
                    }
                    break;
                }
                break;
            }
        }
Exemplo n.º 3
0
        public void On_Command_Excuted(Node Node, Transaction Txn, CommandReturnMessage Msg)
        {
            logger.Debug("On_Command_Excuted");
            string Message = "";

            Transaction SendTxn = new Transaction();

            if (Txn.Method == Transaction.Command.LoadPortType.Reset)
            {
                AlarmUpdate.UpdateAlarmList(AlarmManagement.GetAll());
            }



            switch (Node.Type)
            {
            case "LOADPORT":
                switch (Txn.Method)
                {
                case Transaction.Command.LoadPortType.GetMapping:
                case Transaction.Command.LoadPortType.Unload:
                case Transaction.Command.LoadPortType.MappingUnload:
                case Transaction.Command.LoadPortType.DoorUp:
                case Transaction.Command.LoadPortType.InitialPos:
                case Transaction.Command.LoadPortType.ForceInitialPos:
                    WaferAssignUpdate.RefreshMapping(Node.Name);
                    MonitoringUpdate.UpdateNodesJob(Node.Name);
                    RunningUpdate.UpdateNodesJob(Node.Name);
                    break;

                case Transaction.Command.LoadPortType.GetCassetteSize:
                    ManualPortStatusUpdate.UpdateParameter("CASSETTE_SIZE_tb", Msg.Value);
                    break;

                case Transaction.Command.LoadPortType.GetSlotOffset:
                    ManualPortStatusUpdate.UpdateParameter("SLOT_OFFSET_tb", Msg.Value);
                    break;

                case Transaction.Command.LoadPortType.GetWaferOffset:
                    ManualPortStatusUpdate.UpdateParameter("WAFER_OFFSET_tb", Msg.Value);
                    break;

                case Transaction.Command.LoadPortType.GetTweekDistance:
                    ManualPortStatusUpdate.UpdateParameter("TWEEK_tb", Msg.Value);
                    break;

                case Transaction.Command.LoadPortType.GetSlotPitch:
                    ManualPortStatusUpdate.UpdateParameter("SLOT_PITCH_tb", Msg.Value);
                    break;
                }
                break;

            case "ROBOT":
                switch (Txn.Method)
                {
                case Transaction.Command.RobotType.GetMapping:
                    WaferAssignUpdate.RefreshMapping(Node.CurrentPosition);
                    MonitoringUpdate.UpdateNodesJob(Node.CurrentPosition);
                    RunningUpdate.UpdateNodesJob(Node.CurrentPosition);
                    break;
                }
                break;
            }

            switch (Txn.FormName)
            {
            case "FormStatus":
                Util.StateUtil.UpdateSTS(Node.Name, Msg.Value);
                break;

            case "PauseProcedure":

                break;

            case "FormManual":
                switch (Node.Type)
                {
                case "SMARTTAG":
                    if (!Txn.Method.Equals(Transaction.Command.SmartTagType.GetLCDData))
                    {
                        //ManualPortStatusUpdate.LockUI(false);
                    }
                    break;

                case "LOADPORT":
                    if (!Txn.CommandType.Equals("MOV") && !Txn.CommandType.Equals("HCS"))
                    {
                        //ManualPortStatusUpdate.LockUI(false);
                    }
                    else
                    {
                        if (Txn.Method.Equals(Transaction.Command.LoadPortType.Reset))
                        {
                            // ManualPortStatusUpdate.LockUI(false);
                        }
                    }
                    ManualPortStatusUpdate.UpdateLog(Node.Name, Msg.Command + " Excuted");
                    switch (Txn.Method)
                    {
                    case Transaction.Command.LoadPortType.ReadVersion:
                        ManualPortStatusUpdate.UpdateVersion(Node.Name, Msg.Value);
                        break;

                    case Transaction.Command.LoadPortType.GetLED:
                        ManualPortStatusUpdate.UpdateLED(Node.Name, Msg.Value);
                        break;

                    case Transaction.Command.LoadPortType.ReadStatus:
                        ManualPortStatusUpdate.UpdateSmifStatus(Node.Name, Msg.Value);
                        break;

                    case Transaction.Command.LoadPortType.GetCount:

                        break;

                    case Transaction.Command.LoadPortType.GetMapping:
                        ManualPortStatusUpdate.UpdateMapping(Node.Name, Msg.Value);
                        break;
                    }
                    break;

                case "OCR":
                    switch (Txn.Method)
                    {
                    case Transaction.Command.OCRType.GetOnline:
                        //OCRUpdate.UpdateOCRStatus(Node.Name, Msg.Value);
                        break;
                    }
                    break;

                case "ROBOT":
                    switch (Txn.Method)
                    {
                    case Transaction.Command.RobotType.Speed:
                    case Transaction.Command.RobotType.Mode:
                    case Transaction.Command.RobotType.Reset:
                    case Transaction.Command.RobotType.Servo:

                        ManualRobotStatusUpdate.UpdateGUI(Txn, Node.Name, Msg.Value);            //update 手動功能畫面
                        break;

                    case Transaction.Command.RobotType.GetSpeed:
                    case Transaction.Command.RobotType.GetRIO:
                    case Transaction.Command.RobotType.GetError:
                    case Transaction.Command.RobotType.GetMode:
                    case Transaction.Command.RobotType.GetStatus:
                    case Transaction.Command.RobotType.GetSV:
                        ManualRobotStatusUpdate.UpdateGUI(Txn, Node.Name, Msg.Value);            //update 手動功能畫面
                        break;

                    case Transaction.Command.RobotType.GetCombineStatus:
                        ManualRobotStatusUpdate.UpdateGUI(Txn, Node.Name, Msg.Command);            //update 手動功能畫面
                        break;
                    }
                    break;

                case "ALIGNER":
                    switch (Txn.Method)
                    {
                    case Transaction.Command.AlignerType.Speed:
                    case Transaction.Command.AlignerType.Mode:
                    case Transaction.Command.AlignerType.Reset:
                    case Transaction.Command.AlignerType.Servo:
                    //Thread.Sleep(500);
                    ////向Aligner 詢問狀態
                    //Node aligner = NodeManagement.Get(Node.Name);
                    //String script_name = aligner.Brand.ToUpper().Equals("SANWA") ? "AlignerStateGet" : "AlignerStateGet(Kawasaki)";
                    ////aligner.ExcuteScript(script_name, "FormManual", out Message);
                    //ManualAlignerStatusUpdate.UpdateGUI(Txn, Node.Name, Msg.Value);//update
                    //break;
                    case Transaction.Command.AlignerType.GetMode:
                    case Transaction.Command.AlignerType.GetSV:
                    case Transaction.Command.AlignerType.GetStatus:
                    case Transaction.Command.AlignerType.GetSpeed:
                    case Transaction.Command.AlignerType.GetRIO:
                    case Transaction.Command.AlignerType.GetError:
                        ManualAlignerStatusUpdate.UpdateGUI(Txn, Node.Name, Msg.Value);            //update 手動功能畫面
                        break;

                    case Transaction.Command.RobotType.GetCombineStatus:
                        ManualAlignerStatusUpdate.UpdateGUI(Txn, Node.Name, Msg.Command);            //update 手動功能畫面
                        break;
                    }
                    break;
                }
                break;

            default:

                break;
            }
        }