/// <summary> /// Updates the state. /// </summary> /// <param name="limit">The limit.</param> /// <param name="active">if set to <c>true</c> is the state is active.</param> private void UpdateState(TwoStateVariableState limit, bool active) { TranslationInfo state = null; if (active) { state = new TranslationInfo( "ConditionStateActive", "en-US", ConditionStateNames.Active); } else { state = new TranslationInfo( "ConditionStateInactive", "en-US", ConditionStateNames.Inactive); } limit.Value = new LocalizedText(state); limit.Id.Value = active; if (limit.TransitionTime != null) { limit.TransitionTime.Value = DateTime.UtcNow; } }
/// <summary> /// Updates the non-exclusive limit event. /// </summary> private void UpdateNonExclusiveLimitAlarm(NonExclusiveLimitAlarmState instance, EventType eventType, ONEVENTSTRUCT e) { bool active = (e.wNewState & Constants.CONDITION_ACTIVE) != 0; TwoStateVariableState state = null; if (AeTypeCache.IsKnownName(e.szConditionName, "HI HI")) { instance.HighHighState = state = new TwoStateVariableState(instance); instance.HighHighState.BrowseName = Opc.Ua.BrowseNames.HighHighState; } else if (AeTypeCache.IsKnownName(e.szSubconditionName, "HI") || AeTypeCache.IsKnownName(e.szSubconditionName, "DV HI")) { instance.HighState = state = new TwoStateVariableState(instance); instance.HighState.BrowseName = Opc.Ua.BrowseNames.HighState; } else if (AeTypeCache.IsKnownName(e.szSubconditionName, "LO") || AeTypeCache.IsKnownName(e.szSubconditionName, "DV LO")) { instance.LowState = state = new TwoStateVariableState(instance); instance.LowState.BrowseName = Opc.Ua.BrowseNames.LowState; } else if (AeTypeCache.IsKnownName(e.szSubconditionName, "LO LO")) { instance.LowLowState = state = new TwoStateVariableState(instance); instance.LowLowState.BrowseName = Opc.Ua.BrowseNames.LowLowState; } if (state != null) { state.Value = new LocalizedText((active) ? ConditionStateNames.Active : ConditionStateNames.Inactive); state.SetChildValue(m_defaultContext, Opc.Ua.BrowseNames.Id, active, false); } }