From 56d73b9710766e7acab2e084a6af322175c78f1b Mon Sep 17 00:00:00 2001
From: xcd <834800634@qq.com>
Date: 星期六, 11 七月 2020 11:20:38 +0800
Subject: [PATCH] 添加急停按钮相关处理
---
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 c3c2e4f..3305e4b 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