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");
        }
Exemple #3
0
        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");
            });
        }
Exemple #4
0
 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));
        }
Exemple #6
0
        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");
            });
        }
Exemple #7
0
 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
         }
     }
 }
Exemple #8
0
 public PointMoveBroker(ManualParameter para)
 {
     this.manualPara    = para;
     this.pointMovePara = GlobalModel.Params.LayerConfig.PointMoveCut;
 }