From 8477176a329c0530c4873f57f401a2a22b002760 Mon Sep 17 00:00:00 2001 From: wells.liu <wells.liu@broconcentric.com> Date: 星期六, 11 七月 2020 15:33:24 +0800 Subject: [PATCH] 回原点 --- src/Bro.Device.GTSCard/GTSCardDriver.cs | 94 +++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 87 insertions(+), 7 deletions(-) diff --git a/src/Bro.Device.GTSCard/GTSCardDriver.cs b/src/Bro.Device.GTSCard/GTSCardDriver.cs index cd6746f..85c4e5f 100644 --- a/src/Bro.Device.GTSCard/GTSCardDriver.cs +++ b/src/Bro.Device.GTSCard/GTSCardDriver.cs @@ -425,7 +425,8 @@ break; case MotionMode.FindOri: { - isSuccessAndStop = GoHome(optionPara); + //isSuccessAndStop = GoHome(optionPara); + isSuccessAndStop = P2PGoHome(optionPara); } break; case MotionMode.Jog: @@ -463,7 +464,7 @@ throw new Exception("杞�" + axisNum + "鑾峰彇瑙勫垝浣嶇疆寮傚父锛岄敊璇爜锛�" + ret); } //var AxisRatio = IConfig.AxisSettings.FirstOrDefault(u => u.AxisIndex == axisNum) == null ? 1 : IConfig.AxisSettings.FirstOrDefault(u => u.AxisIndex == axisNum).AxisRatio; - position = prfpos ; + position = prfpos; return position; } @@ -628,8 +629,8 @@ repeatTime = 1000; do { - isStop = IsStop((short)optionPara.AxisIndex); Thread.Sleep(50); + isStop = IsStop((short)optionPara.AxisIndex); repeatTime--; } while (!isStop && repeatTime > 0); @@ -703,8 +704,8 @@ repeatTime = 1000; while (!isStop && repeatTime > 0) { - isStop = IsStop((short)optionPara.AxisIndex); Thread.Sleep(50); + isStop = IsStop((short)optionPara.AxisIndex); repeatTime--; } @@ -746,8 +747,8 @@ int repeatTime = 100; do { - isStop = IsStop((short)axisNum); Thread.Sleep(10); + isStop = IsStop((short)axisNum); repeatTime--; } while (!isStop && repeatTime > 0); @@ -786,7 +787,13 @@ PositionReset(movingOption.AxisIndex, 1); GTSCardAPI.THomePrm thomeprm; GTSCardAPI.THomeStatus homests; - short rtn = GTSCardAPI.GT_GetHomePrm((short)IConfig.CardNum, (short)movingOption.AxisIndex, out thomeprm); + // 鍚姩Home鎹曡幏 + short rtn = GTSCardAPI.GT_SetCaptureMode((short)IConfig.CardNum, (short)movingOption.AxisIndex, GTSCardAPI.CAPTURE_HOME); + // 鍒囨崲鍒扮偣浣嶈繍鍔ㄦā寮� + rtn = GTSCardAPI.GT_PrfTrap((short)IConfig.CardNum, (short)movingOption.AxisIndex); + // 璇诲彇鐐逛綅妯″紡杩愬姩鍙傛暟 + rtn = GTSCardAPI.GT_GetHomePrm((short)IConfig.CardNum, (short)movingOption.AxisIndex, out thomeprm); + thomeprm.mode = movingOption.GoHomePara.HomeMode;//鍥為浂鏂瑰紡 thomeprm.moveDir = movingOption.GoHomePara.HomeDir;//鍥為浂鏂瑰悜 thomeprm.edge = movingOption.GoHomePara.Edge; @@ -794,7 +801,7 @@ thomeprm.velLow = movingOption.GoHomePara.LowVelocity; thomeprm.acc = movingOption.VelocityPara.Acc; thomeprm.dec = movingOption.VelocityPara.Dec; - thomeprm.searchHomeDistance = movingOption.GoHomePara.SearchHomeDistance;//鎼滄悳璺濈 + thomeprm.searchHomeDistance = movingOption.GoHomePara.SearchHomeDistance;//鎼滅储璺濈 thomeprm.homeOffset = movingOption.GoHomePara.HomeOffset; //鍋忕Щ璺濈 thomeprm.escapeStep = movingOption.GoHomePara.EscapeStep; rtn = GTSCardAPI.GT_GoHome((short)IConfig.CardNum, (short)movingOption.AxisIndex, ref thomeprm); //鍚姩鍥為浂 @@ -826,6 +833,79 @@ } /// <summary> + /// P2P鏂瑰紡鍥炲師鐐� + /// </summary> + /// <param name="movingOption">杩愬姩鍙傛暟</param> + public bool P2PGoHome(MovingOption movingOption) + { + try + { + PositionReset(movingOption.AxisIndex, 1); + ClearStatus(movingOption.AxisIndex, 1); + GTSCardAPI.TTrapPrm trapPrm; + bool isStop = false; + //鎼滅储璺濈 闃舵1 + // 鍚姩Home鎹曡幏 + short sRtn = GTSCardAPI.GT_SetCaptureMode((short)IConfig.CardNum, (short)movingOption.AxisIndex, GTSCardAPI.CAPTURE_HOME); + // 鍒囨崲鍒扮偣浣嶈繍鍔ㄦā寮� + sRtn = GTSCardAPI.GT_PrfTrap((short)IConfig.CardNum, (short)movingOption.AxisIndex); + // 璇诲彇鐐逛綅妯″紡杩愬姩鍙傛暟 + sRtn = GTSCardAPI.GT_GetTrapPrm((short)IConfig.CardNum, (short)movingOption.AxisIndex, out trapPrm); + trapPrm.acc = movingOption.VelocityPara.Acc; + trapPrm.dec = movingOption.VelocityPara.Dec; + // 璁剧疆鐐逛綅妯″紡杩愬姩鍙傛暟 + sRtn = GTSCardAPI.GT_SetTrapPrm((short)IConfig.CardNum, (short)movingOption.AxisIndex, ref trapPrm); + // 璁剧疆鐐逛綅妯″紡鐩爣閫熷害锛屽嵆鍥炲師鐐归�熷害 + sRtn = GTSCardAPI.GT_SetVel((short)IConfig.CardNum, (short)movingOption.AxisIndex, movingOption.GoHomePara.HighVelocity); + // 璁剧疆鐐逛綅妯″紡鐩爣浣嶇疆锛屽嵆鍘熺偣鎼滅储璺濈 + sRtn = GTSCardAPI.GT_SetPos((short)IConfig.CardNum, (short)movingOption.AxisIndex, movingOption.GoHomePara.SearchHomeDistance); + // 鍚姩杩愬姩 + sRtn = GTSCardAPI.GT_Update((short)IConfig.CardNum, 1 << (movingOption.AxisIndex - 1)); + + int repeatTime = 1000; + do + { + Thread.Sleep(20); + isStop = IsStop((short)movingOption.AxisIndex); + repeatTime--; + } while (!isStop && repeatTime > 0); + + if (isStop) + { + short capture; + int pos; + uint clk;//鏃堕挓鍙傛暟 + // 璇诲彇鎹曡幏鐘舵�� + GTSCardAPI.GT_GetCaptureStatus((short)IConfig.CardNum, (short)movingOption.AxisIndex, out capture, out pos, 1, out clk); + //宸茬粡鎹曡幏鍒癏ome鎵嶅彲浠ュ洖闆� 闃舵2 + if (capture == 1) + { + // 杩愬姩鍒�"鎹曡幏浣嶇疆+鍋忕Щ閲�" + sRtn = GTSCardAPI.GT_SetPos((short)IConfig.CardNum, (short)movingOption.AxisIndex, pos + movingOption.GoHomePara.HomeOffset); + // 鍦ㄨ繍鍔ㄧ姸鎬佷笅鏇存柊鐩爣浣嶇疆 + sRtn = GTSCardAPI.GT_Update((short)IConfig.CardNum, 1 << (movingOption.AxisIndex - 1)); + isStop = false; + } + repeatTime = 1000; + do + { + Thread.Sleep(20); + isStop = IsStop((short)movingOption.AxisIndex); + repeatTime--; + } while (!isStop && repeatTime > 0); + return (sRtn == (short)GTSRetCode.GRCRunOK) && isStop; + } + return false; + } + catch (Exception ex) + { + AllMoveStop(true); + OnExceptionOccured?.Invoke(DateTime.Now, ex); + return false; + } + } + + /// <summary> /// 璇诲彇IO杈撳叆 /// </summary> /// <param name="cardNum">鍗″彿</param> -- Gitblit v1.8.0