示例#1
0
        private void MeasureDownGt()
        {
            //start measure
            if (Project.DownTestPositions.Count == 0)
            {
                Log($"MeasureGt No Test Points");
                return;
            }

            //run measure loop
            bool   isFirst = true;
            PosXYZ lastPos = PosXYZ.Zero;

            foreach (var pos in Project.DownTestPositions)
            {
                int    gt;
                PosXYZ gtWorkZ;
                PosXYZ newpos;

                //add pos offset
                if (!AddPosOffset(pos, out gt, out gtWorkZ, out newpos))
                {
                    Log($"AddPosOffset GT Raw Index {gt} Error");
                    continue;
                }


                //convert pos to gt pos
                var gtPosZ = gtWorkZ.Z - pos.Z;
                var gtPos  = PosXYZ.Zero;
                if (gt == 1)
                {
                    gtPos = new PosXYZ(Platform.GetPos("P->DOWN1", newpos.Data()))
                    {
                        Z = gtPosZ
                    };
                }
                else if (gt == 2)
                {
                    gtPos = new PosXYZ(Platform.GetPos("P->DOWN2", newpos.Data()))
                    {
                        Z = gtPosZ
                    };
                }
                else
                {
                    Log($"GT Raw Index {gt} Error", LogLevel.Error);
                }

                Log($"Transform {pos.Name} {pos.Description} {newpos} To {gtPos}");


                //jump gt pos
                PlatformJumpPos(isFirst, pos, lastPos, gtPos);
                lastPos = pos;
                isFirst = false;

                //read gt
                System.Threading.Thread.Sleep(CfgSettings.Common.GtReadDelay);
                var gtRaw = GtController?.ReadData();
                if (gtRaw != null)
                {
                    Product.RawDataDown.Add(new PosXYZ()
                    {
                        Name        = pos.Name,
                        Description = pos.Description,
                        X           = pos.X,
                        Y           = pos.Y,
                        Z           = gtRaw[gt],
                        OffsetX     = gtRaw[gt],
                        OffsetZ     = gtPosZ,
                    });
                }
                else
                {
                    Log($"GtController ReadData Error", LogLevel.Error);
                }
            }
        }
示例#2
0
        protected override int RunLoop()
        {
            //in case of manual operations
            Platform.AssertAutoMode(this);
            Platform.LocateInPos("Wait");


            //check safe height
            var safeHeight = Platform["GtWork"].Data()[2] - Project.Height - 6;

            if (Platform.CurPos[2] > safeHeight)
            {
                Log($"{Name} {Platform.Name} SafeHeightError:{Platform.CurPos[2]:F2}>{safeHeight:F2}", LogLevel.Error);
            }

            //wait vio start
            VioTransFinish.WaitVioAndClear(this);
            {
                //move wait
                Platform.MoveAbs("Wait");

                //measure up test positions
                bool isFirst = true;
                foreach (var pos in Project.UpTestPositions)
                {
                    //transform gt work
                    var newpos = AddPosOffset(pos);

                    var gtWorkZ = Platform["GtWork"].Data()[2] - Project.Height;
                    var gtWork  = new PosXYZ(Platform.GetPos("P->UP", newpos.Data()))
                    {
                        Z = gtWorkZ
                    };
                    Log($"Transform {pos.Name} {pos.Description} {newpos} To {gtWork}");

                    //move gt work
                    if (isFirst)
                    {
                        isFirst = false;
                        Platform.Jump(gtWork, 0);
                    }
                    else
                    {
                        var maxJumpHeight = -Platform.CurPos[2];
                        if (PlatformJumpHeight < maxJumpHeight)
                        {
                            Log($"{Platform.Name} Jump Height {PlatformJumpHeight} > {maxJumpHeight}", LogLevel.Warning);
                            PlatformJumpHeight = maxJumpHeight + 0.5;
                        }

                        Platform.Jump(gtWork, PlatformJumpHeight);
                    }

                    //read gt raw
                    Thread.Sleep(CfgSettings.Common.GtReadDelay);
                    var gtRaw = GtController?.ReadData();
                    if (gtRaw != null)
                    {
                        Product.RawDataUp.Add(new PosXYZ()
                        {
                            Name        = pos.Name,
                            Description = pos.Description,
                            X           = pos.X,
                            Y           = pos.Y,
                            Z           = gtRaw[0],
                            OffsetX     = gtRaw[0],
                            OffsetZ     = gtWorkZ,
                        });
                    }
                }

                //move wait
                if (Project.UpTestPositions.Count > 0)
                {
                    Platform.Jump("Wait", PlatformJumpHeight);
                }
            }
            //set vio finish
            VioMeasureFinish.SetVio(this);

            return(0);
        }