public override void OnNewValueToChannel(object sender, TagExchangeWithChannelArgs eventArgs) { base.OnNewValueToChannel(sender, eventArgs); switch (_limitMonitorType) { case MessageLimitMonitorType.GreaterThen: if (IsActive) { if (Value.CompareTo(_limitMinusHyst) < 0) { IsActive = false; } } else { if (Value.CompareTo(_limit) > 0) { IsActive = true; OnActivated(); } } break; case MessageLimitMonitorType.GreaterOrEqual: if (IsActive) { if (Value.CompareTo(_limitMinusHyst) < 0) { IsActive = false; } } else { if (Value.CompareTo(_limit) >= 0) { IsActive = true; OnActivated(); } } break; case MessageLimitMonitorType.LessThen: if (IsActive) { if (Value.CompareTo(_limitPlusHyst) > 0) { IsActive = false; } } else { if (Value.CompareTo(_limit) < 0) { IsActive = true; OnActivated(); } } break; case MessageLimitMonitorType.LessOrEqual: if (IsActive) { if (Value.CompareTo(_limitPlusHyst) > 0) { IsActive = false; } } else { if (Value.CompareTo(_limit) <= 0) { IsActive = true; OnActivated(); } } break; case MessageLimitMonitorType.Equal: if (IsActive) { if (Value.CompareTo(_limit) != 0) { IsActive = false; } } else { if (Value.CompareTo(_limit) == 0) { IsActive = true; OnActivated(); } } break; default: throw new ArgumentOutOfRangeException(); } IsFirstCall = false; }
public void OnNewValueToChannel(object sender, TagExchangeWithChannelArgs eventArgs) { NewValueToChannel?.Invoke(this, new ValueToChannelArgs(_startAddress, eventArgs.Value)); }