Esempio n. 1
0
        public void TestMethod1()//OK
        {
            try
            {
                using (var halContext = new MacHalContext("UserData/Manifest/Manifest.xml.real"))
                {
                    halContext.MvaCfBootup();
                    halContext.MvaCfLoad();

                    var unv = halContext.HalDevices[EnumMacDeviceId.eqp_assembly.ToString()] as MacHalEqp;
                    var mt  = halContext.HalDevices[EnumMacDeviceId.masktransfer_assembly.ToString()] as MacHalMaskTransfer;
                    var lpb = halContext.HalDevices[EnumMacDeviceId.loadportB_assembly.ToString()] as MacHalLoadPort;
                    var lpa = halContext.HalDevices[EnumMacDeviceId.loadportA_assembly.ToString()] as MacHalLoadPort;
                    var ic  = halContext.HalDevices[EnumMacDeviceId.inspectionch_assembly.ToString()] as MacHalInspectionCh;
                    unv.HalConnect();//需要先將MacHalUniversal建立連線,各Assembly的Hal建立連線時,才能讓PLC的連線成功
                    mt.HalConnect();
                    lpb.HalConnect();
                    lpa.HalConnect();
                    ic.HalConnect();

                    //1. 光罩放置於Load Port B POD內

                    //2~5  Load Poat B Dock
                    lpb.Dock();

                    //6. (編號7-CCD): 開啟光源 -> 拍照(FOV正確) -> 關閉光源
                    lpb.LightForLoadPortBSetValue(255);
                    lpb.Camera_LoadPortB_CapToSave("D:/Image/LP/LPB/Insp", "jpg");
                    lpb.LightForLoadPortBSetValue(0);

                    //7.Mask Robot從Home點移動至Load Port B
                    mt.RobotMoving(true);
                    mt.ChangeDirection(pathFileObj.LoadPortHomePathFile());
                    mt.ExePathMove(pathFileObj.FromLPHomeToLP2PathFile());
                    mt.RobotMoving(false);

                    //8. Mask Robot上的傾斜角度傳感器可報值 & 位於水平狀態
                    var Level = mt.ReadLevel();

                    //9. Mask Robot在Load Port B 進行光罩夾取
                    mt.Clamp(1);

                    //10. Mask Robot將光罩從Load Port B移動至Recognizer Chamber處
                    mt.RobotMoving(true);
                    mt.ExePathMove(pathFileObj.FromLP2ToLPHomePathFile());
                    mt.ExePathMove(pathFileObj.FromLPHomeToBarcodeReaderPathFile());
                    mt.RobotMoving(false);

                    //11. (編號8 - Barcode CCD)拍攝mask barcode, 並能成功辨識ID
                    lpa.LightForBarcodeReaderSetValue(2);
                    lpa.Camera_Barcode_CapToSave("D:/Image/LP/LPA/Barcode", "jpg");
                    lpa.LightForBarcodeReaderSetValue(0);

                    //12. Mask Robot將光罩從Recognizer移動至Inspection Chamber Entry處
                    mt.RobotMoving(true);
                    mt.ExePathMove(pathFileObj.FromBarcodeReaderToLPHomePathFile());
                    mt.ChangeDirection(pathFileObj.InspChHomePathFile());
                    ic.SetRobotIntrude(true);
                    mt.ExePathMove(pathFileObj.FromICHomeToICBackSidePathFile());
                    mt.ExePathMove(pathFileObj.FromICBackSideToICStagePathFile());
                    mt.RobotMoving(false);

                    //13. Mask Robot將光罩從Inspection Chamber Entry處, 移回Load Port B
                    mt.RobotMoving(true);
                    mt.ExePathMove(pathFileObj.FromICStageToICBackSidePathFile());
                    mt.ExePathMove(pathFileObj.FromICBackSideToICHomePathFile());
                    ic.SetRobotIntrude(false);
                    mt.ChangeDirection(pathFileObj.LoadPortHomePathFile());
                    mt.ExePathMove(pathFileObj.FromLPHomeToLP2PathFile());
                    mt.RobotMoving(false);

                    //14. Mask Robot將光罩放置於Load Port B POD內
                    mt.Unclamp();

                    //15. Mask Robot (無夾持光罩) 從Load Port B移回Home點
                    mt.RobotMoving(true);
                    mt.ExePathMove(pathFileObj.FromLP2ToLPHomePathFile());
                    mt.RobotMoving(false);

                    //16. (編號7-CCD): 開啟光源 -> 拍照(FOV正確) -> 關閉光源
                    lpb.LightForLoadPortBSetValue(255);
                    lpb.Camera_LoadPortB_CapToSave("D:/Image/LP/LPB/Insp", "jpg");
                    lpb.LightForLoadPortBSetValue(0);

                    //17~20  Load Port B Undock
                    lpb.Undock();
                }
            }
            catch (Exception ex) { throw ex; }
        }