public virtual void Save(BinaryWriter outf) { BatterySwitch.Save(outf); outf.Write(FrontElectricTrainSupplyCableConnected); outf.Write(ElectricTrainSupplyState.ToString()); outf.Write(LowVoltagePowerSupplyState.ToString()); outf.Write(BatteryState.ToString()); outf.Write(VentilationState.ToString()); outf.Write(HeatingState.ToString()); outf.Write(AirConditioningState.ToString()); outf.Write(HeatFlowRateW); }
public void ManageState() { if (_duration > TimeSpan.Zero) { _duration = _duration.Subtract(new TimeSpan(0, 0, 1)); } if (ProcessControl.Instance.CO2 > 0) { if (_ventilationState == VentilationState.Stopped) { if (ProcessControl.Instance.CO2 > (ProcessControl.Instance.TargetCO2 + CO2_TOLERANCE)) { if (ProcessControl.Instance.TargetCO2 > 0) { _ventilationState = VentilationState.Started; _trapState = TrapStateEnum.Opened; _fanState = FanStateEnum.Running; } } } else if (_ventilationState == VentilationState.Started) { if (ProcessControl.Instance.CO2 <= ProcessControl.Instance.TargetCO2) { _ventilationState = VentilationState.Stopped; _duration = TimeSpan.Zero; _toggleVentilationState = false; _ventilationStandby = false; } } } else { _ventilationState = VentilationState.Stopped; _duration = TimeSpan.Zero; _toggleVentilationState = false; _ventilationStandby = false; } ////////////////////////////////////////////////////////////////// if (_ventilationState == VentilationState.Started) { if (_duration == TimeSpan.Zero) { if (_toggleVentilationState) { _duration = new TimeSpan(0, 0, _intervalTargetMinutes); _ventilationStandby = true; _trapState = TrapStateEnum.Closed; _fanState = FanStateEnum.Stopped; } else { _duration = new TimeSpan(0, 0, _durationTargetSeconds); _ventilationStandby = false; } _toggleVentilationState = !_toggleVentilationState; } } ////////////////////////////////////////////////////////////////// if (ProcessControl.Instance.RelativeHumidity > 0) { if (_trapState == TrapStateEnum.Closed) { if (ProcessControl.Instance.RelativeHumidity >= (ProcessControl.Instance.TargetRelativeHumidity + RELATIVE_HUMIDITY_TRAP_DELTA)) { if (ProcessControl.Instance.TargetRelativeHumidity > 0 || (_ventilationState == VentilationState.Started && _ventilationStandby == false)) { _trapState = TrapStateEnum.Opened; } } else if (_ventilationState == VentilationState.Started && _ventilationStandby == false) { _trapState = TrapStateEnum.Opened; } } else if (_trapState == TrapStateEnum.Opened) { if (_ventilationState != VentilationState.Started) { if ((ProcessControl.Instance.RelativeHumidity < (ProcessControl.Instance.TargetRelativeHumidity + RELATIVE_HUMIDITY_TRAP_DELTA)) || ProcessControl.Instance.TargetRelativeHumidity == 0) { _trapState = TrapStateEnum.Closed; } } } if (_fanState == FanStateEnum.Stopped) { if (ProcessControl.Instance.RelativeHumidity >= (ProcessControl.Instance.TargetRelativeHumidity + RELATIVE_HUMIDITY_FAN_DELTA)) { if (ProcessControl.Instance.TargetRelativeHumidity > 0 || (_ventilationState == VentilationState.Started && _ventilationStandby == false)) { _fanState = FanStateEnum.Running; } } else if (_ventilationState == VentilationState.Started && _ventilationStandby == false) { _fanState = FanStateEnum.Running; } } else if (_fanState == FanStateEnum.Running) { if (_ventilationState != VentilationState.Started) { if ((ProcessControl.Instance.RelativeHumidity < (ProcessControl.Instance.TargetRelativeHumidity + RELATIVE_HUMIDITY_TRAP_DELTA + 1)) || ProcessControl.Instance.TargetRelativeHumidity == 0) { _fanState = FanStateEnum.Stopped; } } } } else { _trapState = TrapStateEnum.Closed; _fanState = FanStateEnum.Stopped; } if (ProcessControl.Instance.TargetCO2 == 0) { _ventilationState = VentilationState.Stopped; _duration = TimeSpan.Zero; _toggleVentilationState = false; _ventilationStandby = false; } if (ProcessControl.Instance.TargetRelativeHumidity == 0 && ProcessControl.Instance.TargetCO2 == 0) { _trapState = TrapStateEnum.Closed; _fanState = FanStateEnum.Stopped; } if (ProcessControl.Instance.Temperature > ProcessControl.Instance.TemperatureMax) { _trapState = TrapStateEnum.Opened; } if (_overHeatProtection == false) { if (ProcessControl.Instance.Temperature > ProcessControl.Instance.TargetTemperature + 0.2) { _trapState = TrapStateEnum.Opened; _fanState = FanStateEnum.Running; _overHeatProtection = true; } } if (_overHeatProtection) { if (ProcessControl.Instance.Temperature > ProcessControl.Instance.TargetTemperature + 0.1) { _trapState = TrapStateEnum.Opened; _fanState = FanStateEnum.Running; } else { _overHeatProtection = false; } } SetOutputState(); }
public void OnUpdateVentilationData(FanStateEnum fanState, TrapStateEnum trapState, VentilationState ventilationState, String ventilationDuration, int ventilationIntervalTarget, int ventilationDurationTarget, bool ventilationStandby) { try { String ventilationTxt = "Ventilation: ??"; if (ventilationState == VentilationState.Stopped) { ventilationTxt = "Ventilation: OFF"; if (ventilationDuration == "00:00:00") { ventilationOnOff.Foreground = Brushes.Black; } else { ventilationOnOff.Foreground = Brushes.OrangeRed; } } else if (ventilationState == VentilationState.Started) { if (ventilationStandby) { ventilationTxt = "Ventilation: OFF"; ventilationOnOff.Foreground = Brushes.OrangeRed; } else { ventilationTxt = "Ventilation: ON"; ventilationOnOff.Foreground = Brushes.Green; } } ventilationOnOff.Content = ventilationTxt; if (ventilationIntervalTarget != double.MaxValue) { if (ventilationIntervalTxtBox.Text == "????") { ventilationIntervalTxtBox.Text = ventilationIntervalTarget.ToString(); } } if (ventilationDurationTarget != double.MaxValue) { if (ventilationDurationTxtBox.Text == "????") { ventilationDurationTxtBox.Text = ventilationDurationTarget.ToString(); } } ventilationOnOff.Content += " [ " + ventilationDuration + " ] "; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }