From 0dfbcfad8bbbeae5218293d59aba851fd8e65a90 Mon Sep 17 00:00:00 2001 From: wells <123> Date: 星期六, 11 七月 2020 12:25:35 +0800 Subject: [PATCH] Merge branch 'master' of http://gitblit.broconcentric.com:8088/r/M071 --- src/Bro.M071.Process/M071Process.cs | 5 ++ src/Bro.M071.Process/M071Process_MotionCard.cs | 58 ++++++++++++++++++++++++++++- 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs index caa2bd1..5b63bbf 100644 --- a/src/Bro.M071.Process/M071Process.cs +++ b/src/Bro.M071.Process/M071Process.cs @@ -220,6 +220,11 @@ { _pauseHandle.WaitHandle.WaitOne(); + if (MachineState != MachineState.Running) + { + throw new ProcessException("鏈哄彴鐘舵�佷笉鍦ㄨ繍琛屼腑锛岄��鍑烘娴�"); + } + IDevice device = DeviceCollection.FirstOrDefault(u => u.Id == s.MotionOp.Device); if (device == null) throw new ProcessException($"{s.Name}鎷嶇収鐐逛綅鏈缃繍鍔ㄨ澶�"); diff --git a/src/Bro.M071.Process/M071Process_MotionCard.cs b/src/Bro.M071.Process/M071Process_MotionCard.cs index f2adb36..70bb5c8 100644 --- a/src/Bro.M071.Process/M071Process_MotionCard.cs +++ b/src/Bro.M071.Process/M071Process_MotionCard.cs @@ -206,9 +206,9 @@ // } //} - if (IsSafetyBeamTrigged || IsSafetyDoorTrigged) + if (!IsAllowedWork) { - LogAsync(DateTime.Now, $"{(IsSafetyDoorTrigged ? "瀹夊叏闂�" : "")}{(IsSafetyBeamTrigged ? " 瀹夊叏鍏夌嚎" : "")}瑙﹀彂涓紝澶嶄綅澶辫触", ""); + LogAsync(DateTime.Now, $"{(IsSafetyDoorTrigged ? "瀹夊叏闂�" : "")}{(IsSafetyBeamTrigged ? " 瀹夊叏鍏夌嚎" : "")}{(isEmergencyStopped ? " 鎬ュ仠鎸夐挳" : "")}瑙﹀彂涓紝澶嶄綅澶辫触", ""); return new ProcessResponse(false); } @@ -217,6 +217,12 @@ RaisedAlarm(""); MachineState = MachineState.Ready; + + if (IsEmergencyStopped) + { + RaisedAlarm("鎬ュ仠鎸夐挳鏈仮澶嶏紝璇锋墽琛屽ぇ澶嶄綅"); + MachineState = MachineState.Alarm; + } if (ResetTimer == null) { @@ -277,6 +283,7 @@ //{ // motionCard.Run(opConfig); //} + MachineState = MachineState.Resetting; MotionCardDefaultRun("FullReset", ref opConfig, ref invokeDevice); @@ -285,7 +292,11 @@ OnFullResetDone?.Invoke(); + isFullResetCovered = true; + LogAsync(DateTime.Now, "澶у浣嶅姩浣滃畬鎴�", ""); + + RaisedAlarm(""); MachineState = MachineState.Ready; return new ProcessResponse(true); @@ -582,6 +593,11 @@ } } + bool IsAllowedWork + { + get => !(IsSafetyBeamTrigged || IsSafetyDoorTrigged || IsEmergencyStopped); + } + #region 瀹夊叏闂� & 瀹夊叏鍏夌嚎 bool isSafetyDoorTrigged = false; bool isSafetyBeamTrigged = false; @@ -631,5 +647,43 @@ return new ProcessResponse(true); } #endregion + + #region 鎬ュ仠 + bool isEmergencyStopped = false; + bool isFullResetCovered = true; + public bool IsEmergencyStopped + { + get => isEmergencyStopped && isFullResetCovered; + set + { + if (value) + { + isFullResetCovered = false; + isEmergencyStopped = true; + } + else + { + isEmergencyStopped = false; + } + } + } + + [ProcessMethod("", "EmergencyStop", "鎬ュ仠鎸夐挳琚媿涓�", InvokeType.TestInvoke)] + public ProcessResponse EmergencyStop(IOperationConfig opConfig, IDevice invokeDevice, IDevice sourceDevice) + { + if (opConfig.InputPara == null || opConfig.InputPara.Count == 0) + throw new ProcessException("鎬ュ仠鎸夐挳鏈厤缃緭鍏ヤ俊鍙�"); + + IsEmergencyStopped = opConfig.InputPara[0] == 1; + + if (IsEmergencyStopped) + { + RaisedAlarm("鎬ュ仠鎸夐挳琚媿涓�"); + MachineState = MachineState.Alarm; + } + + return new ProcessResponse(true); + } + #endregion } } -- Gitblit v1.8.0