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); } } }
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); }