From 2edc3c54ba7a42d5e9bb9120b9881d418e6bd408 Mon Sep 17 00:00:00 2001 From: patrick.xu <patrick.xu@broconcentric.com> Date: 星期五, 13 八月 2021 09:38:29 +0800 Subject: [PATCH] 1. GTS回原点修改,避免来回 2. 添加单键测量结果补偿 3. 部分条件限制,日志修改 4. 来料检debug,添加退出条件判断 --- src/Bro.M071.Process/M071Process_MotionCard.cs | 100 +++++++++++++++++++++++++++++++------------------ 1 files changed, 63 insertions(+), 37 deletions(-) diff --git a/src/Bro.M071.Process/M071Process_MotionCard.cs b/src/Bro.M071.Process/M071Process_MotionCard.cs index 5423b8f..7d5994c 100644 --- a/src/Bro.M071.Process/M071Process_MotionCard.cs +++ b/src/Bro.M071.Process/M071Process_MotionCard.cs @@ -7,6 +7,7 @@ using System.ComponentModel; using System.Drawing.Design; using System.Linq; +using System.Runtime.CompilerServices; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -17,6 +18,8 @@ public partial class M071Process { public Timer ResetTimer = null; + + MachineState MeasureState = MachineState.Unknown; object machineStateLock = new object(); //MachineState _machineStatePre = MachineState.Unknown; @@ -29,10 +32,13 @@ if (machineState == value) return; + LogAsync(DateTime.Now, $"璁惧鐘舵�佸垏鎹�:{machineState.ToString()}->{value.ToString()}", ""); machineState = value; Task.Run(() => { + OnMachineStateChanged?.Invoke(machineState); + switch (machineState) { case MachineState.Ready: @@ -122,9 +128,7 @@ default: break; } - }); - - OnMachineStateChanged?.Invoke(machineState); + }); } } @@ -247,17 +251,21 @@ MotionCardDefaultRun("Reset", ref opConfig, ref invokeDevice); (invokeDevice as MotionCardBase).ResetAlarm(); - RaisedAlarm(""); + _isdoing = false; + _pausedHandle.Set(); - if (MachineState != MachineState.Pause) - { - MachineState = MachineState.Ready; - } - else - { - LogAsync(DateTime.Now, "璁惧鏆傚仠涓紝鏃犳硶澶嶄綅", ""); - return new ProcessResponse(true); - } + RaisedAlarm(""); + OnCheckHintUpload?.Invoke("", false); + + //if (MachineState != MachineState.Pause) + //{ + MachineState = MachineState.Ready; + //} + //else + //{ + // LogAsync(DateTime.Now, "璁惧鏆傚仠涓紝鏃犳硶澶嶄綅", ""); + // return new ProcessResponse(true); + //} if (IsEmergencyStopped) { @@ -267,6 +275,7 @@ } LogAsync(DateTime.Now, "鏅�氬浣嶅姩浣滃畬鎴�", ""); + OnResetDone?.Invoke(); return new ProcessResponse(true); } @@ -301,8 +310,11 @@ MachineState = MachineState.Resetting; MotionCardDefaultRun("FullReset", ref opConfig, ref invokeDevice); - productionList.ForEach(u => u.Dispose()); - productionList.Clear(); + lock (productionLock) + { + productionList.ForEach(u => u.Dispose()); + productionList.Clear(); + } OnFullResetDone?.Invoke(); @@ -642,39 +654,51 @@ ManualResetEventSlim _pausedHandle = new ManualResetEventSlim(true); MachineState _machineStateBeforePause = MachineState.Unknown; - private void CheckMachinePauseState() + object _pauseLock = new object(); + private async void CheckMachinePauseState() { - //await Task.Run(() => + await Task.Run(() => { - if (IsMachinePaused) + lock (_pauseLock) { - if (MachineState == MachineState.Ready || MachineState == MachineState.Running) + if (IsMachinePaused) { - _machineStateBeforePause = MachineState; - } - MachineState = MachineState.Pause; - _pausedHandle.Reset(); + if (MachineState == MachineState.Ready || MachineState == MachineState.Running) + { + _machineStateBeforePause = MachineState; + } + MachineState = MachineState.Pause; + _pausedHandle.Reset(); - if (_machineStateBeforePause == MachineState.Running) - { - Pause(); - } - } - else - { - if (MachineState == MachineState.Pause) - { if (_machineStateBeforePause == MachineState.Running) { - Resume(true); + Pause(); } - _pausedHandle.Set(); - RaisedAlarm(""); - MachineState = _machineStateBeforePause; + } + else + { + if (MachineState == MachineState.Pause) + { + if (_machineStateBeforePause == MachineState.Running || _machineStateBeforePause == MachineState.Ready) + { + Resume(true); + } + _pausedHandle.Set(); + RaisedAlarm(""); + + if (_machineStateBeforePause == MachineState.Running && MeasureState == MachineState.Ready) + { + MachineState = MachineState.Ready; + } + else + { + MachineState = _machineStateBeforePause; + } + } } } } - //); + ); } public bool IsMachinePaused @@ -683,6 +707,7 @@ } [ProcessMethod("", "SafetyDoorSignal", "瀹夊叏闂ㄤ俊鍙风洃鎺э紝姝e父ON锛孫FF鏃舵姤璀�", InvokeType.TestInvoke)] + [MethodImpl(MethodImplOptions.Synchronized)] public ProcessResponse SafetyDoorSignal(IOperationConfig opConfig, IDevice invokeDevice, IDevice sourceDevice) { //if (MachineState != MachineState.Running && MachineState != MachineState.Pause) @@ -702,6 +727,7 @@ } [ProcessMethod("", "SafetyBeamSignal", "瀹夊叏鍏夊箷淇″彿鐩戞帶锛屾甯窸N锛孫FF鏃舵姤璀�", InvokeType.TestInvoke)] + [MethodImpl(MethodImplOptions.Synchronized)] public ProcessResponse SafetyBeamSignal(IOperationConfig opConfig, IDevice invokeDevice, IDevice sourceDevice) { if (opConfig.InputPara == null || opConfig.InputPara.Count == 0) -- Gitblit v1.8.0