src/Bro.Common.Device/DeviceBase/MotionCardBase.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/Bro.Common.Model/Bro.Common.Model.csproj | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/Bro.Common.Model/Model/MotionCardRelated.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/Bro.Device.GTSCard/GTSCardDriver.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/Bro.M071.Process/M071Process.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/Bro.UI.Device.Winform/MotionCard/CtrlMotionCardRunBase.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/Bro.Common.Device/DeviceBase/MotionCardBase.cs
@@ -20,6 +20,18 @@ { public event Action<DateTime, string, IDevice, IMonitorSet> OnMonitorInvoke; public event Action<DateTime, IDevice, IWarningSet> OnMonitorAlarm; public event Action<int, string> OnAxisAlarmRaised; public event Action<int, int, int> OnAxisStatusChanged; public void AxisAlarmRaised(int axisIndex, string msg) { OnAxisAlarmRaised?.Invoke(axisIndex, msg); } public void AxisStatusChanged(int axisIndex, int preStatus, int curStatus) { OnAxisStatusChanged?.Invoke(axisIndex, preStatus, curStatus); } public abstract List<AxisInfo> GetCurrentAxisInfo(params string[] axisName); public abstract void Monitor(); @@ -99,7 +111,7 @@ /// <summary> /// 轴的运动状态值 /// </summary> public List<AxisMovingStatus> AxisMovingOptionValues { get; set; } = new List<AxisMovingStatus>(); public List<AxisMovingStatus> AxisStatusList { get; set; } = new List<AxisMovingStatus>(); public abstract void WriteOutput(short index, IOValue value); src/Bro.Common.Model/Bro.Common.Model.csproj
@@ -78,7 +78,7 @@ </Reference> <Reference Include="dog_net_windows, Version=1.0.1.28668, Culture=neutral, PublicKeyToken=56120be447701319, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>..\..\..\T047\libs\SafetyDog\dog_net_windows.dll</HintPath> <HintPath>..\..\libs\SafetyDog\dog_net_windows.dll</HintPath> </Reference> <Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <HintPath>..\..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath> src/Bro.Common.Model/Model/MotionCardRelated.cs
@@ -236,7 +236,7 @@ public string GetDisplayText() { return $"轴{AxisIndex}:{AxisName}-当前:{CurPosition}-规划:{Destination}"; return $"轴{AxisIndex}:{AxisName}-当前状态:{AxisStatus}-当前位置:{CurPosition}-规划位置:{Destination}"; } } src/Bro.Device.GTSCard/GTSCardDriver.cs
@@ -21,7 +21,7 @@ public class GTSCardDriver : MotionCardBase { // 异常事件 public Action<Exception> OnExceptionRaised; //public Action<Exception> OnExceptionRaised; public GTSCardInitialConfig IIConfig { @@ -61,7 +61,7 @@ { AxisInfo axisInfo = new AxisInfo(); axisInfo.AxisName = axisSetting.AxisName; var axisMovingStatus = AxisMovingOptionValues.FirstOrDefault(u => u.AxisIndex == axisSetting.AxisIndex); var axisMovingStatus = AxisStatusList.FirstOrDefault(u => u.AxisIndex == axisSetting.AxisIndex); axisInfo.AxisLocation = axisMovingStatus == null ? 0 : Convert.ToDouble(axisMovingStatus.CurPosition); axisInfos.Add(axisInfo); @@ -554,7 +554,7 @@ catch (Exception ex) { AllMoveStop(true); OnExceptionRaised?.Invoke(ex); OnExceptionOccured?.Invoke(DateTime.Now, ex); return false; } } @@ -635,7 +635,7 @@ catch (Exception ex) { AllMoveStop(true); OnExceptionRaised?.Invoke(ex); OnExceptionOccured?.Invoke(DateTime.Now, ex); return false; } } @@ -710,7 +710,7 @@ catch (Exception ex) { AllMoveStop(true); OnExceptionRaised?.Invoke(ex); OnExceptionOccured?.Invoke(DateTime.Now, ex); return false; } } @@ -817,7 +817,7 @@ catch (Exception ex) { AllMoveStop(true); OnExceptionRaised?.Invoke(ex); OnExceptionOccured?.Invoke(DateTime.Now, ex); return false; } } @@ -877,7 +877,7 @@ /// <returns></returns> public bool IsStop(short axisNum) { int sts = GetAxisStatus(axisNum); int sts = AxisStatusList.FirstOrDefault(u => u.AxisIndex == axisNum).AxisStatus; if ((sts & 0x400) == 0) return true;//停止返回true else return false; //运行中返回false } @@ -987,8 +987,10 @@ { if (!IConfig.IsEnableMonitor) return; var newValues = GetMonitorValues(); var newAxisMovingStatus = GetAxisMovingStatus(); if (newValues == null || newValues.Count == 0 || newAxisMovingStatus == null || newAxisMovingStatus.Count == 0) continue; @@ -996,12 +998,21 @@ sw.Start(); if (MonitorValues.Count == newValues.Count) { var tempNew = newValues.DeepSerializeClone();//clone var tempOld = MonitorValues.DeepSerializeClone(); //var tempNew = newValues.DeepSerializeClone();//clone //var tempOld = MonitorValues.DeepSerializeClone(); var tempNew = new List<IOItem>(newValues);//clone var tempOld = new List<IOItem>(MonitorValues); MonitorCheckAndInvoke(tempNew, tempOld); } AxisMovingOptionValues = new List<AxisMovingStatus>(newAxisMovingStatus); if (AxisStatusList.Count == newAxisMovingStatus.Count) { var tempNew = new List<AxisMovingStatus>(newAxisMovingStatus);//clone var tempOld = new List<AxisMovingStatus>(AxisStatusList); AxisStatusCheck(tempNew, tempOld); } AxisStatusList = new List<AxisMovingStatus>(newAxisMovingStatus); MonitorValues = new List<IOItem>(newValues); sw.Stop(); @@ -1021,6 +1032,29 @@ if (CurrentState == DeviceState.DSOpen) { LogAsync(DateTime.Now, $"{this.Name}监听异常", ex.GetExceptionMessage()); } } } }); } private async void AxisStatusCheck(List<AxisMovingStatus> tempNew, List<AxisMovingStatus> tempOld) { await Task.Run(() => { foreach (var newSts in tempNew) { var oldSts = tempOld.FirstOrDefault(u => u.AxisIndex == newSts.AxisIndex); if (oldSts != null) { if (oldSts.AxisStatus != newSts.AxisStatus) { AxisStatusChanged(newSts.AxisIndex, oldSts.AxisStatus, newSts.AxisStatus); } if (((newSts.AxisStatus >> 1 & 1) == 1) && ((oldSts.AxisStatus >> 1 & 1) == 0)) //初次报警 { AxisAlarmRaised(newSts.AxisStatus, $"轴{newSts.AxisIndex}:{newSts.AxisName}轴伺服报警"); } } } @@ -1111,7 +1145,8 @@ ClearStatus(1, axisSettings.Count); foreach (var axisSetting in axisSettings) { axis_sts = GetAxisStatus((short)axisSetting.AxisIndex); //axis_sts = GetAxisStatus((short)axisSetting.AxisIndex); axis_sts = AxisStatusList.FirstOrDefault(u => u.AxisIndex == axisSetting.AxisIndex).AxisStatus; if ((axis_sts & 0x200) == 0) { var rst = GTSCardAPI.GT_AxisOn((short)IConfig.CardNum, (short)axisSetting.AxisIndex); src/Bro.M071.Process/M071Process.cs
@@ -50,6 +50,8 @@ base.Open(); InitialMotionCardBaseAxisAlarm(); SwitchBeep(false); SwitchLightGreen(false); SwitchLightRed(false); @@ -59,6 +61,21 @@ FullReset(null); } private void InitialMotionCardBaseAxisAlarm() { if (outputCtrlCard != null) { outputCtrlCard.OnAxisAlarmRaised -= MotionCard_OnAxisAlarmRaised; outputCtrlCard.OnAxisAlarmRaised += MotionCard_OnAxisAlarmRaised; } } private void MotionCard_OnAxisAlarmRaised(int axisIndex, string alarmMsg) { RaisedAlarm(alarmMsg); MachineState = MachineState.Alarm; } private void InitialSetting() { //数据库迁移检查 src/Bro.UI.Device.Winform/MotionCard/CtrlMotionCardRunBase.cs
@@ -44,7 +44,7 @@ { foreach (var axisConfig in MotionCard.IConfig.AxisSettings.FindAll(u => u.IsAxisEnabled)) { var axisMovingStatus = MotionCard.AxisMovingOptionValues.FirstOrDefault(u => u.AxisIndex == axisConfig.AxisIndex); var axisMovingStatus = MotionCard.AxisStatusList.FirstOrDefault(u => u.AxisIndex == axisConfig.AxisIndex); if (axisMovingStatus == null) { axisMovingStatus = new AxisMovingStatus();