|
|
@@ -23,7 +23,6 @@ namespace SWRIS.Models
|
|
|
private double ropeLength = 100f; // 默认长度为100米
|
|
|
private RunningStatus runningStatus = RunningStatus.Stopped;
|
|
|
private DirectionState direction;
|
|
|
- private FaultType? faultType;
|
|
|
private double speed;
|
|
|
private double position;
|
|
|
private double absolutePosition;
|
|
|
@@ -43,6 +42,7 @@ namespace SWRIS.Models
|
|
|
private double samplingStep;
|
|
|
private DebugMessageModel debugMessage = new DebugMessageModel(string.Empty);
|
|
|
private bool isAlerting = false;
|
|
|
+ private bool isFaulting = false;
|
|
|
private bool isSpeedStable = true;
|
|
|
private double variationThreshold = 0.25;
|
|
|
private bool isHeartbeatReceived;
|
|
|
@@ -50,7 +50,7 @@ namespace SWRIS.Models
|
|
|
private bool disableAlarm;
|
|
|
private int[] inUseSensor = new int[] { 1, 2, 3, 4 };
|
|
|
|
|
|
-
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 钢丝绳绳号
|
|
|
/// </summary>
|
|
|
@@ -136,15 +136,6 @@ namespace SWRIS.Models
|
|
|
get => direction;
|
|
|
set { direction = value; OnPropertyChanged(nameof(Direction)); }
|
|
|
}
|
|
|
- /// <summary>
|
|
|
- /// 故障类型
|
|
|
- /// </summary>
|
|
|
- public FaultType? FaultType
|
|
|
- {
|
|
|
- get => faultType;
|
|
|
- set { faultType = value; OnPropertyChanged(nameof(FaultType)); }
|
|
|
- }
|
|
|
-
|
|
|
/// <summary>
|
|
|
/// 速度
|
|
|
/// </summary>
|
|
|
@@ -305,6 +296,14 @@ namespace SWRIS.Models
|
|
|
get => isAlerting;
|
|
|
set { isAlerting = value; OnPropertyChanged(nameof(IsAlerting)); }
|
|
|
}
|
|
|
+ /// <summary>
|
|
|
+ /// 是否故障中
|
|
|
+ /// </summary>
|
|
|
+ public bool IsFaulting
|
|
|
+ {
|
|
|
+ get => isFaulting;
|
|
|
+ set { isFaulting = value; OnPropertyChanged(nameof(IsFaulting)); }
|
|
|
+ }
|
|
|
public bool IsHeartbeatReceived
|
|
|
{
|
|
|
get => isHeartbeatReceived;
|
|
|
@@ -350,13 +349,50 @@ namespace SWRIS.Models
|
|
|
get => inUseSensor;
|
|
|
set { inUseSensor = value; OnPropertyChanged(nameof(InUseSensor)); }
|
|
|
}
|
|
|
+
|
|
|
public ObservableCollection<AlarmDataModel> Alarms { get; set; } = new ObservableCollection<AlarmDataModel>();
|
|
|
public Dictionary<FaultType, FaultDataModel> Faults { get; set; } = new Dictionary<FaultType, FaultDataModel>();
|
|
|
public ObservableCollection<string> Messages { get; set; } = new ObservableCollection<string>();
|
|
|
public ObservableCollection<LimitModel> Limits { get; set; } = new ObservableCollection<LimitModel>();
|
|
|
public Coordinates[] ChartSource { get; internal set; }
|
|
|
public Queue<double> RecentSpeeds { get; internal set; } = new Queue<double>();
|
|
|
+ public void AddFault(FaultDataModel faultData)
|
|
|
+ {
|
|
|
+ if (Faults.ContainsKey(faultData.FaultType))
|
|
|
+ {
|
|
|
+ if (faultData.FaultCode == 0)
|
|
|
+ {
|
|
|
+ Faults.Remove(faultData.FaultType);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Faults[faultData.FaultType] = faultData;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (faultData.FaultCode != 0)
|
|
|
+ {
|
|
|
+ Faults.Add(faultData.FaultType, faultData);
|
|
|
+ }
|
|
|
|
|
|
+ Application.Current.Dispatcher.Invoke(() =>
|
|
|
+ {
|
|
|
+ if (Messages.Any())
|
|
|
+ {
|
|
|
+ Messages.Clear();
|
|
|
+ }
|
|
|
+ foreach (var fault in Faults)
|
|
|
+ {
|
|
|
+ if (fault.Value != null)
|
|
|
+ {
|
|
|
+ Messages.Add(fault.Value.ToString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (Messages.Any())
|
|
|
+ IsFaulting = true;
|
|
|
+ else
|
|
|
+ IsFaulting = false;
|
|
|
+ }
|
|
|
public void AddSpeedData(double speed)
|
|
|
{
|
|
|
// 更新数据窗口
|