public void LoacateBreakPoint() { var point = this.provider.Locate(ref this.currentLen); this.provider.CurrentLen = this.currentLen; if (point == null) { return; } var para = new ManualParameter { Speed = GlobalModel.Params.LayerConfig.EmptyMoveSpeed, Acceleration = GlobalModel.Params.LayerConfig.EmptyMoveAcceleratedSpeed, TargetPoint = point.Value }; this.NotifyStatusChanged("BreakPointLocate"); this.lastOperation = "BreakPointLocate"; Messenger.Default.Send <object>(OperationStatus.Running, "OperStatusChanged"); this.AddSysLog("定位", Color.FromArgb(128, 0, 0)); this.AddSysLog("停止-->定位", Color.Black); OperationEngine.Instance.MakeManualMovementAsync(para).ContinueWith(x => { Messenger.Default.Send <object>(OperationStatus.Idle, "OperStatusChanged"); this.AddSysLog("定位-->暂停", Color.Black); this.NotifyStatusChanged("Pause"); this.lastOperation = "Pause"; this.provider.CurrentLen = this.currentLen; }); }
private void ReturnMark() { this.UpdateReturnPoint(); var retPoint = SystemContext.MachineControlPara.ReturnPoint; if (retPoint != null) { var para = new ManualParameter { Speed = GlobalModel.Params.LayerConfig.EmptyMoveSpeed, Acceleration = GlobalModel.Params.LayerConfig.EmptyMoveAcceleratedSpeed, TargetPoint = retPoint.Value }; this.lastOperation = "Stopping"; this.NotifyStatusChanged("Stopping"); this.AddSysLog("正在加工-->回停靠", Color.Black); OperationEngine.Instance.MakeManualMovementAsync(para).Wait(); this.AddSysLog("回停靠-->停止", Color.Black); } this.NotifyStatusChanged("Idle"); this.lastOperation = "Idle"; SystemContext.MachineControlPara.MachiningCnt = 1; SystemContext.MachineControlPara.MachiningIntervalSeconds = 0; Messenger.Default.Send <object>(true, "CanvasStatusChanged"); Messenger.Default.Send <object>(false, "MenuInfoDisChanged"); Messenger.Default.Send <object>(null, "ClearMark"); }
public void MoveToMarkPoint() { var coordinatePara = SystemContext.CoordinatePara; var p = coordinatePara.MarkSeries[coordinatePara.MarkIndex]; var para = new ManualParameter { Speed = this.Speed, Acceleration = GlobalModel.Params.LayerConfig.EmptyMoveAcceleratedSpeed, Step = double.NaN, TargetPoint = p }; Messenger.Default.Send <bool>(true, "OnManualMovement"); //this => Machining ViewModel this.running = true; this.NotityStatusChanged("Running"); string msg = $"会标记点{coordinatePara.MarkIndex + 1},坐标({p.X.ToString("0.###")},{p.Y.ToString("0.###")})mm"; this.AddSysLog(msg, Color.FromArgb(0, 128, 0)); Messenger.Default.Send <object>("ReturnMark", "UpdateOperation"); OperationEngine.Instance.MakeManualMovementAsync(para).ContinueWith(x => { Messenger.Default.Send <bool>(false, "OnManualMovement"); //this => Machining ViewModel this.running = false; this.NotityStatusChanged("Idle"); this.AddSysLog("回标记点-->停止", Color.Black); Messenger.Default.Send <object>("Idle", "UpdateOperation"); }); }
public Task MakeManualMovementAsync(ManualParameter para) { return(this.machiningTask = Task.Factory.StartNew(() => { this.cancellation = new CancellationTokenSource(); this.Status = EngineStatus.Running; var broker = new PointMoveBroker(para); broker.Execute(this.cancellation.Token); this.Status = EngineStatus.Idle; })); }
private Task MoveToZeroAsync() { var zeroIndex = SystemContext.CoordinatePara.RefZeroIndex; var zeroPoint = SystemContext.CoordinatePara.RefZeroSeries[zeroIndex]; var para = new ManualParameter { Speed = GlobalModel.Params.LayerConfig.EmptyMoveSpeed, Acceleration = GlobalModel.Params.LayerConfig.EmptyMoveAcceleratedSpeed, TargetPoint = zeroPoint }; return(OperationEngine.Instance.MakeManualMovementAsync(para)); }
public void MakeMovement(Tuple <AxisTypes, double> info) { var para = new ManualParameter { Speed = this.Speed, Acceleration = GlobalModel.Params.LayerConfig.EmptyMoveAcceleratedSpeed, Step = this.IsStepMove ? this.Step * info.Item2 : MAX_DISTANCE * info.Item2, Axis = info.Item1, IsPointMoveCut = this.IsPointMoveCut }; this.UpdateStep(para); if (para.Step == 0) { return; } //Update UI before movement if (this.IsStepMove) { this.running = true; this.NotityStatusChanged("Running"); } Messenger.Default.Send <bool>(true, "OnManualMovement"); //this => Machining ViewModel this.AddSysLog("停止-->点动", Color.Black); Messenger.Default.Send <object>("PointMove", "UpdateOperation"); OperationEngine.Instance.MakeManualMovementAsync(para).ContinueWith(x => { Messenger.Default.Send <bool>(false, "OnManualMovement"); //this => Machining ViewModel if (this.IsStepMove) { this.running = false; this.NotityStatusChanged("Idle"); } if (this.IsPointMoveCut) { DispatcherService.BeginInvoke(() => this.IsPointMoveCut = false); } this.AddSysLog("点动-->停止", Color.Black); Messenger.Default.Send <object>("Idle", "UpdateOperation"); }); }
private void UpdateStep(ManualParameter para) { if (SystemContext.MachineControlPara.SoftwareLimitEnabled && (para.Axis == AxisTypes.AxisX || para.Axis == AxisTypes.AxisY)) { var current = SystemContext.Hardware.GetCurrentPosition(); var rect = SystemContext.SystemPara.GetMachiningRegion(); if (para.Axis == AxisTypes.AxisX) { #region AxisX soft limit if (para.Step > 0) { if (current.X < rect.Right) { float xDiff = rect.Right - current.X; if (para.Step > xDiff) { para.Step = xDiff; } } else { para.Step = 0; } } else { if (current.X > rect.Left) { float xDiff = rect.Left - current.X; if (para.Step < xDiff) { para.Step = xDiff; } } else { para.Step = 0; } } #endregion } else { #region AxisY soft limit if (para.Step > 0) { if (current.Y < rect.Bottom) { float yDiff = rect.Bottom - current.Y; if (para.Step > yDiff) { para.Step = yDiff; } } else { para.Step = 0; } } else { if (current.Y > rect.Top) { float yDiff = rect.Top - current.Y; if (para.Step < yDiff) { para.Step = yDiff; } } else { para.Step = 0; } } #endregion } } }
public PointMoveBroker(ManualParameter para) { this.manualPara = para; this.pointMovePara = GlobalModel.Params.LayerConfig.PointMoveCut; }