/// <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 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"); } } }
/// <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 bool AssertPosTeached(string pos, StationTask task) { if (this[pos] == null) { task?.Log($"{Name} {pos} not teached", LogLevel.Error); return(false); } return(true); }
public bool AssertAutoMode(StationTask task) { if (!_isAutoMode) { task.Log($"{Name} not in Auto Mode", LogLevel.Error); 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 CheckProductSensor() { if (CarrierSensor1.GetDiSts() && CarrierSensor2.GetDiSts()) { return(true); } Task?.Log($"载具定位传感器无信号", LogLevel.Warning); return(false); }
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 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 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); } } }); }