public void SetVaccum(StationTask task, bool status, int delay = 0, int timeout = 1000, bool checkSensor = false, bool showError = false)
        {
            foreach (var vaccumDoEx in VaccumDoExs)
            {
                vaccumDoEx.SetDo(status);
            }

            if (delay > 0)
            {
                Thread.Sleep(delay);
            }

            if (VaccumSensors.Count > 0)
            {
                var ret = VaccumSensors.ToArray().WaitDi(task, status, timeout);
                if (!ret)
                {
                    task.Log($"{string.Join(",", VaccumDoExs.Select(v => v.Description))} 信号异常", showError ? LogLevel.Error : LogLevel.Info);
                }
                else
                {
                    task.Log($"{string.Join(",", VaccumDoExs.Select(v => v.Description))} SetVaccum {status} success");
                }
            }
        }
        public bool WaitStart(StationTask task, bool dryRun)
        {
            //wait start
            DoStart1?.SetDo(false);
            DoStart2?.SetDo(false);


            if (dryRun)
            {
                return(true);
            }

            //wait start
            while ((!DiStart1.GetDiSts() || !DiStart2.GetDiSts()))
            {
                if (dryRun)
                {
                    return(true);
                }
                Thread.Sleep(100);
                task.JoinIfPause();
                task.AbortIfCancel("cancel trans wait start");
            }
            task.Station.ShowAlarm(string.Empty, LogLevel.None);


            //normal start
            DoStart1?.SetDo();
            DoStart2?.SetDo();

            return(true);
        }
Esempio n. 3
0
 public static void AssertNoNull(this object obj, StationTask task, string msg = null)
 {
     if (obj == null)
     {
         task.ThrowException($"{obj.GetType().Name.ToString()}{msg ?? "SOME OBJECT"} is NULL");
     }
 }
Esempio n. 4
0
        /// <summary>
        /// 按statusPattern检查传感器是否在触发状态
        /// </summary>
        /// <param name="task"></param>
        /// <param name="statusPattern"></param>
        /// <returns></returns>
        public bool CheckByPattern(StationTask task, bool[] statusPattern)
        {
            if (DISensors == null || DISensors.Count <= 0)
            {
                task.Log($"{ErrorMsg} - NO DI SENSOR CHECK", LogLevel.Warning);
                return(false);
            }


            if (DISensors.Count != statusPattern.Length)
            {
                task.Log($"{ErrorMsg} - DI SENSOR CHECK PATTERN ERROR ", LogLevel.Warning);
                return(false);
            }


            var ret = true;

            for (int i = 0; i < statusPattern.Length; i++)
            {
                if (!DISensors[i].GetDiSts(statusPattern[i]))
                {
                    ret = false;
                }
            }

            if (!ret)
            {
                task.Station.Machine.Beep();
                task.Log($"{ErrorMsg} - {string.Join(",", DISensors.Select(s => s.Description))} ", LogLevel.Warning);
                return(false);
            }
            return(true);
        }
Esempio n. 5
0
        public static bool SetVio(this IVioEx vioex, StationTask task, bool status = true)
        {
            task?.AbortIfCancel(nameof(SetVio));
            task?.JoinIfPause();

            vioex.DriverCard.SetDo(vioex.Port, status ? 1 : 0);
            task?.Log($"{vioex.Name} SetVio {vioex.Port} {status} success", LogLevel.Debug);
            return(true);
        }
Esempio n. 6
0
 public bool AssertAutoMode(StationTask task)
 {
     if (!_isAutoMode)
     {
         task.Log($"{Name} not in Auto Mode", LogLevel.Error);
         return(false);
     }
     return(true);
 }
Esempio n. 7
0
 public bool AssertPosTeached(string pos, StationTask task)
 {
     if (this[pos] == null)
     {
         task?.Log($"{Name} {pos} not teached", LogLevel.Error);
         return(false);
     }
     return(true);
 }
Esempio n. 8
0
        /// <summary>
        /// StationTask Platform Ctor
        /// </summary>
        /// <param name="name"></param>
        /// <param name="axis"></param>
        /// <param name="task"></param>
        /// <param name="positions"></param>
        public PlatformEx(string name, IAxisEx[] axis, StationTask task, List <IPlatformPos> positions)
        {
            _isAutoMode = true;
            Name        = name;
            Task        = task;

            Axis = axis;

            Positions = positions;
        }
 public StationSimulation(Station station)
 {
     Station                = station;
     _currentTask           = null;
     _currentTaskIsFinished = true;
     _drones                = new List <Drone>();
     _packagesToSent        = new List <Package>();
     _packagesToGive        = new List <Package>();
     _tasks       = new Queue <StationTask>();
     _chargeSlots = new List <int>();
 }
Esempio n. 10
0
        public static bool WaitResetFinish(this StationTask curTask, StationTask waitTask)
        {
            //wait measure task
            while (waitTask.State != TaskState.WaitRun || waitTask.State != TaskState.Running)
            {
                curTask.AbortIfCancel("cancel wait tasks");
                System.Threading.Thread.Sleep(1);
            }

            return(true);
        }
Esempio n. 11
0
        public static bool WaitVioAndClear(this IVioEx vioex, StationTask task, bool status = true,
                                           bool clearStatus = false, int timeout = -1)
        {
            if (!WaitVio(vioex, task, status, timeout))
            {
                return(false);
            }

            SetVio(vioex, task, clearStatus);
            return(true);
        }
Esempio n. 12
0
        public void Reset(StationTask task, int timeout = 150, bool?ignoreOrWarningOrError = null)
        {
            if (_clamps == null)
            {
                _clamps = Clamps.ToArray();
            }

            _clamps.SetDoAsync(task, false);

            _clamps.WaitDi(task, Clamps.Select(c => false).ToArray(), timeout, ignoreOrWarningOrError);
        }
 public bool Check(StationTask task)
 {
     //检查定位传感器
     if (!DISensorCheck1.GetDiSts() || !DISensorCheck2.GetDiSts())
     {
         task.Station.Machine.Beep();
         task.Log($"{DISensorCheck1?.Description} {DISensorCheck2?.Description} {ErrorMsg}", LogLevel.Warning);
         return(false);
     }
     return(true);
 }
Esempio n. 14
0
        public bool WaitStart(StationTask task)
        {
            //wait start
            while ((!DIStart1.GetDiSts() || !DIStart2.GetDiSts()))
            {
                Thread.Sleep(100);
                task.JoinIfPause();
                task.AbortIfCancel("cancel trans wait start");
            }
            task.Station.ShowAlarm(string.Empty, LogLevel.None);

            return(true);
        }
Esempio n. 15
0
        /// <summary>
        /// must call in stationtask
        /// </summary>
        /// <returns></returns>
        public PlatformEx EnterAuto(StationTask task = null)
        {
            if (task != null)
            {
                Task = task;
            }

            foreach (var sc in SafeChecks)
            {
                sc.Enable = true;
            }

            _isAutoMode = true;
            return(this);
        }
Esempio n. 16
0
        public static bool WaitResetFinish(this StationTask waitTask, StationTask curTask)
        {
            if (waitTask == null)
            {
                curTask.ThrowException($"Task is NULL");
            }

            //wait measure task
            while (waitTask.RunningState != RunningState.WaitRun && waitTask.RunningState != RunningState.Running)
            {
                curTask.AbortIfCancel($"Cancel Waiting {waitTask.Name} Reset Finish");
                System.Threading.Thread.Sleep(1);
            }

            return(true);
        }
Esempio n. 17
0
        /// <summary>
        /// 检查所有传感器为触发状态
        /// </summary>
        /// <param name="task"></param>
        /// <returns></returns>
        public bool Check(StationTask task)
        {
            if (DISensors == null || DISensors.Count <= 0)
            {
                task.Log($"{ErrorMsg} - NO DI SENSOR CHECK", LogLevel.Warning);
                return(false);
            }

            //检查定位传感器
            if (DISensors.Any(s => !s.GetDiSts()))
            {
                task.Station.Machine.Beep();
                task.Log($"{ErrorMsg} - {string.Join(",", DISensors.Select(s => s.Description))} ", LogLevel.Warning);
                return(false);
            }
            return(true);
        }
Esempio n. 18
0
        public static bool WaitVio(this IVioEx vioex, StationTask task, bool status = true, int timeout = -1)
        {
            task?.AbortIfCancel(nameof(WaitVio));
            task?.JoinIfPause();

            timeout = timeout < 0 ? int.MaxValue : timeout;

            var err = $"{vioex.Name} WaitVio {vioex.Port} {status}";
            var t   = 0;

            while (t++ <= timeout)
            {
                var sts = 0;
                vioex.DriverCard.GetDo(vioex.Port, out sts);
                if (sts == 1 == status)
                {
                    task?.Log($"{err} success", LogLevel.Debug);
                    return(true);
                }

                if (task != null)
                {
                    task.JoinIfPause();
                    task.AbortIfCancel(nameof(WaitVio));
                }
                else
                {
                    Application.DoEvents();
                }

                Thread.Sleep(1);
            }

            task?.Log($"{err} timeout", LogLevel.Error);
            return(false);
        }
Esempio n. 19
0
 public void AddTask(StationTask stationTask)
 {
     _station.AddTask(stationTask);
 }
Esempio n. 20
0
 public void SetTask(StationTask stationTask)
 {
     _station.SetTask(stationTask);
 }
 public PlatformXyz(string name, IAxisEx[] axis, StationTask task, List <IPlatformPos> positions) : base(name, axis, task, positions)
 {
 }
 public PlatformXyz(string name, IAxisEx[] axis, StationTask task, List <PosXYZ> positions) : base(name, axis, task, positions.Cast <IPlatformPos>().ToList())
 {
 }
Esempio n. 23
0
        public void RunGtService(StationTask t)
        {
            if (FrameworkExtenion.IsSimulate)
            {
                return;
            }

            if (_task != null)
            {
                return;
            }

            _task = t;

            if (!Connected)
            {
                _task.Log($"RunGtService error", LogLevel.Error);
                return;
            }


            Task.Run(() =>
            {
                try
                {
                    _task.Log($"RunGtService Start.....", LogLevel.Info);

                    var ns             = GetStream();
                    byte[] readBuffer  = new byte[4096];
                    byte[] writeBuffer = Encoding.ASCII.GetBytes("M0\r\n");

                    _sw.Start();

                    while (_task.RunningState == RunningState.WaitRun || _task.RunningState == RunningState.Running || _task.RunningState == RunningState.Pause)
                    {
                        lock (this)
                        {
                            ns.Write(writeBuffer, 0, writeBuffer.Length);
                            Thread.Sleep(10);
                            var count = ns.Read(readBuffer, 0, readBuffer.Length);

                            var data = Encoding.ASCII.GetString(readBuffer, 0, count).Replace("\r\n", string.Empty);
                            GtValue  = data.Split(',').Skip(1).Select(v => double.Parse(v) / 10000).ToArray();

                            if (GtValue.Length < 3)
                            {
                                _task.Log($"DATA LEGTH {GtValue.Length} ERROR", LogLevel.Error);
                                return;
                            }
                            else if (GtValue.Any(v => v > 6))
                            {
                                _task.Log($"GT READ MAX OVERRANGE {string.Join(",", GtValue.Select(v => v.ToString("F3")))} ERROR", LogLevel.Error);
                                return;
                            }
                        }
                    }

                    _sw.Stop();
                }
                catch (Exception ex)
                {
                    _task.Log($"RunGtServiceError:{ex.Message}", LogLevel.Error);
                }
                finally
                {
                    if (_task.RunningState == RunningState.Running || _task.RunningState == RunningState.Pause)
                    {
                        _task.Log("RunGTService Error Finish!!!", LogLevel.Error);
                    }
                    else
                    {
                        _task.Log("RunGTService Finish!!!", LogLevel.Debug);
                    }
                }
            });
        }
Esempio n. 24
0
 public void AddTask(StationTask stationTask)
 {
     throw new NotImplementedException();
 }