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); }
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"); } }
/// <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); }
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); }
public bool AssertAutoMode(StationTask task) { if (!_isAutoMode) { task.Log($"{Name} not in Auto Mode", LogLevel.Error); return(false); } return(true); }
public bool AssertPosTeached(string pos, StationTask task) { if (this[pos] == null) { task?.Log($"{Name} {pos} not teached", LogLevel.Error); return(false); } return(true); }
/// <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>(); }
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); }
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); }
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); }
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); }
/// <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); }
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); }
/// <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); }
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); }
public void AddTask(StationTask stationTask) { _station.AddTask(stationTask); }
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()) { }
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); } } }); }
public void AddTask(StationTask stationTask) { throw new NotImplementedException(); }