Esempio n. 1
0
        private void OilConditionControlDeleted(object sender, EventArgs e)
        {
            PowerUnitWorkInRegimeParamsControl control = (PowerUnitWorkInRegimeParamsControl)sender;
            ComponentWorkInRegimeParams        cond    = control.Condition;

            if (cond.ItemId > 0 && MessageBox.Show("Do you really want to delete detail params?", "Deleting confirmation", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
            {
                //если информация о состоянии сохранена в БД
                //и получен положительный ответ на ее удаление
                try
                {
                    GlobalObjects.CasEnvironment.Manipulator.Delete(cond);
                }
                catch (Exception ex)
                {
                    Program.Provider.Logger.Log("Error while removing data", ex);
                }

                flowLayoutPanelMain.Controls.Remove(control);
                control.Deleted       -= OilConditionControlDeleted;
                control.RegimeChanged -= RegimeChanged;
                control.Dispose();
            }
            else if (cond.ItemId <= 0)
            {
                flowLayoutPanelMain.Controls.Remove(control);
                control.Deleted       -= OilConditionControlDeleted;
                control.RegimeChanged -= RegimeChanged;
                control.Dispose();
            }
        }
Esempio n. 2
0
 private void NumericUpDownPersentOhIntValueChanged(object sender, EventArgs e)
 {
     if (comboBoxEngine.SelectedItem == null ||
         comboBoxEngine.SelectedItem as BaseComponent == null ||
         _flightRegime == null)
     {
         numericUpDownPersentOhInt.BackColor = Color.White;
     }
     else
     {
         BaseComponent bd = comboBoxEngine.SelectedItem as BaseComponent;
         ComponentWorkInRegimeParams workParams = bd.ComponentWorkParams.Where(wp => wp.FlightRegime == _flightRegime)
                                                  .FirstOrDefault();
         if (workParams != null)
         {
             if (workParams.ResorceProvider == SmartCoreType.ComponentDirective &&
                 ((double)numericUpDownPersentOhInt.Value > workParams.PersentTime))
             {
                 numericUpDownPersentOhInt.BackColor = Color.Red;
             }
             else
             {
                 numericUpDownPersentOhInt.BackColor = Color.White;
             }
         }
         else
         {
             numericUpDownPersentOhInt.BackColor = Color.White;
         }
     }
 }
Esempio n. 3
0
        /// <summary>
        /// Проверяет введенные параметры на состветсвие параметрам работы заданной силовой установки
        /// </summary>
        private void CheckParametres()
        {
            if (comboBoxEngine.SelectedItem == null ||
                comboBoxEngine.SelectedItem as BaseComponent == null ||
                _flightRegime == null)
            {
                _workParams = null;
                Color white = Color.White;
                numericUpDownTimeInRegime.BackColor     = white;
                numericUpDownPersentSN.BackColor        = white;
                numericUpDownPersentSLO.BackColor       = white;
                numericUpDownPersentLifeLimit.BackColor = white;
                numericUpDownPersentOhInt.BackColor     = white;
                numericUpDownPersentSN.Value            = 0;
                numericUpDownPersentSLO.Value           = 0;
                numericUpDownPersentLifeLimit.Value     = 0;
                numericUpDownPersentOhInt.Value         = 0;
                textBoxTimeInRegimeSN.Text  = "";
                textBoxTimeInRegimeSLO.Text = "";
            }
            else
            {
                BaseComponent bd = comboBoxEngine.SelectedItem as BaseComponent;
                _workParams = bd.ComponentWorkParams.Where(wp => wp.FlightRegime == _flightRegime &&
                                                           wp.GroundAir == _groundAir)
                              .FirstOrDefault();
                if (_workParams != null)
                {
                    Color white = Color.White;
                    Color red   = Color.Red;

                    if (((double)numericUpDownTimeInRegime.Value > _workParams.TimeInRegimeMax.TotalMinutes && _workParams.TLAMaxEnabled))
                    {
                        numericUpDownTimeInRegime.BackColor = red;
                    }
                    else
                    {
                        numericUpDownTimeInRegime.BackColor = white;
                    }

                    //numericUpDownPersentSN.Value = 0;
                    //numericUpDownPersentSLO.Value = 0;
                    //textBoxTimeInRegimeSN.Text = "";
                    //textBoxTimeInRegimeSLO.Text = "";
                }
                else
                {
                    Color white = Color.White;
                    numericUpDownTimeInRegime.BackColor     = white;
                    numericUpDownPersentSN.BackColor        = white;
                    numericUpDownPersentSLO.BackColor       = white;
                    numericUpDownPersentLifeLimit.BackColor = white;
                    numericUpDownPersentOhInt.BackColor     = white;
                    //numericUpDownPersentSN.Value = 0;
                    //numericUpDownPersentSLO.Value = 0;
                    //textBoxTimeInRegimeSN.Text = "";
                    //textBoxTimeInRegimeSLO.Text = "";
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Существует ли информация по уровню масла для заданного агрегата
        /// </summary>
        /// <param name="con"></param>
        /// <returns></returns>
        private bool ConditionExists(ComponentWorkInRegimeParams con)
        {
            //
            if (BaseComponent == null || BaseComponent.ComponentWorkParams == null)
            {
                return(false);
            }

            //
            return(BaseComponent.ComponentWorkParams.Any(t => t == con));

            //
        }
Esempio n. 5
0
        /*
         * Реализация
         */
        #region private void CheckParametres()
        private void CheckParametres()
        {
            if (comboBoxEngine.SelectedItem == null ||
                comboBoxEngine.SelectedItem as BaseComponent == null ||
                _flightRegime == null)
            {
                _workParams = null;
                Color white = Color.White;
                numericUpDownTimeInRegime.BackColor       = white;
                numericUpDownThrottleLeverAngle.BackColor = white;
                numericUpDownFuelPress.BackColor          = white;
                numericUpDownOilPressTorque.BackColor     = white;
                numericUpDownOilFlow.BackColor            = white;
                numericUpDownVibrationOverload.BackColor  = white;
                numericUpDownVibrationOverload2.BackColor = white;
                numericUpDownERP.BackColor      = white;
                numericUpDownN1.BackColor       = white;
                numericUpDownEGT.BackColor      = white;
                numericUpDownN2.BackColor       = white;
                numericUpDownOilTemp.BackColor  = white;
                numericUpDownOilPress.BackColor = white;
                numericUpDownFuelFlow.BackColor = white;
                numericUpDownFuelBurn.BackColor = white;
            }
            else
            {
                BaseComponent bd = comboBoxEngine.SelectedItem as BaseComponent;
                _workParams = bd.ComponentWorkParams.Where(wp => wp.FlightRegime == _flightRegime &&
                                                           wp.GroundAir == _groundAir)
                              .FirstOrDefault();
                if (_workParams != null)
                {
                    Color white = Color.White;
                    Color red   = Color.Red;

                    if (((double)numericUpDownTimeInRegime.Value > _workParams.TimeInRegimeMax.TotalMinutes && _workParams.TLAMaxEnabled))
                    {
                        numericUpDownTimeInRegime.BackColor = red;
                    }
                    else
                    {
                        numericUpDownTimeInRegime.BackColor = white;
                    }

                    if (((double)numericUpDownThrottleLeverAngle.Value > _workParams.TLAMax && _workParams.TLAMaxEnabled) ||
                        ((double)numericUpDownThrottleLeverAngle.Value < _workParams.TLAMin && _workParams.TLAMinEnabled))
                    {
                        numericUpDownThrottleLeverAngle.BackColor = red;
                    }
                    else
                    {
                        numericUpDownThrottleLeverAngle.BackColor = white;
                    }

                    if (((double)numericUpDownFuelPress.Value > _workParams.FuelPressMax && _workParams.FuelPressMaxEnabled) ||
                        ((double)numericUpDownFuelPress.Value < _workParams.FuelPressMin && _workParams.FuelPressMinEnabled))
                    {
                        numericUpDownFuelPress.BackColor = red;
                    }
                    else
                    {
                        numericUpDownFuelPress.BackColor = white;
                    }

                    if (((double)numericUpDownOilPressTorque.Value > _workParams.OilPressTorqueMax && _workParams.OilPressTorqueMaxEnabled) ||
                        ((double)numericUpDownOilPressTorque.Value < _workParams.OilPressTorqueMin && _workParams.OilPressTorqueMinEnabled))
                    {
                        numericUpDownOilPressTorque.BackColor = red;
                    }
                    else
                    {
                        numericUpDownOilPressTorque.BackColor = white;
                    }

                    if (((double)numericUpDownVibrationOverload.Value > _workParams.VibroOverloadMax && _workParams.VibroOverloadMaxEnabled) ||
                        ((double)numericUpDownVibrationOverload.Value < _workParams.VibroOverloadMin && _workParams.VibroOverloadMinEnabled))
                    {
                        numericUpDownVibrationOverload.BackColor = red;
                    }
                    else
                    {
                        numericUpDownVibrationOverload.BackColor = white;
                    }

                    if (((double)numericUpDownVibrationOverload2.Value > _workParams.VibroOverload2Max && _workParams.VibroOverload2MaxEnabled) ||
                        ((double)numericUpDownVibrationOverload2.Value < _workParams.VibroOverload2Min && _workParams.VibroOverload2MinEnabled))
                    {
                        numericUpDownVibrationOverload2.BackColor = red;
                    }
                    else
                    {
                        numericUpDownVibrationOverload2.BackColor = white;
                    }

                    if (((double)numericUpDownERP.Value > _workParams.EPRMax && _workParams.EPRMaxEnabled) ||
                        ((double)numericUpDownERP.Value < _workParams.EPRMin && _workParams.EPRMinEnabled))
                    {
                        numericUpDownERP.BackColor = red;
                    }
                    else
                    {
                        numericUpDownERP.BackColor = white;
                    }

                    if (((double)numericUpDownN1.Value > _workParams.N1Max && _workParams.N1MaxEnabled) ||
                        ((double)numericUpDownN1.Value < _workParams.N1Min && _workParams.N1MinEnabled))
                    {
                        numericUpDownN1.BackColor = red;
                    }
                    else
                    {
                        numericUpDownN1.BackColor = white;
                    }

                    if (((double)numericUpDownEGT.Value > _workParams.EGTMax && _workParams.EGTMaxEnabled) ||
                        ((double)numericUpDownEGT.Value < _workParams.EGTMin && _workParams.EGTMinEnabled))
                    {
                        numericUpDownEGT.BackColor = red;
                    }
                    else
                    {
                        numericUpDownEGT.BackColor = white;
                    }

                    if (((double)numericUpDownN2.Value > _workParams.N2Max && _workParams.N2MaxEnabled) ||
                        ((double)numericUpDownN2.Value < _workParams.N2Min && _workParams.N2MinEnabled))
                    {
                        numericUpDownN2.BackColor = red;
                    }
                    else
                    {
                        numericUpDownN2.BackColor = white;
                    }

                    if (((double)numericUpDownOilTemp.Value > _workParams.OilTemperatureMax && _workParams.OilTemperatureMaxEnabled) ||
                        ((double)numericUpDownOilTemp.Value < _workParams.OilTemperatureMin && _workParams.OilTemperatureMinEnabled))
                    {
                        numericUpDownOilTemp.BackColor = red;
                    }
                    else
                    {
                        numericUpDownOilTemp.BackColor = white;
                    }

                    if (((double)numericUpDownOilPress.Value > _workParams.OilPressureMax && _workParams.OilPressureMaxEnabled) ||
                        ((double)numericUpDownOilPress.Value < _workParams.OilPressureMin && _workParams.OilPressureMinEnabled))
                    {
                        numericUpDownOilPress.BackColor = red;
                    }
                    else
                    {
                        numericUpDownOilPress.BackColor = white;
                    }

                    if (((double)numericUpDownOilFlow.Value > _workParams.OilFlowMax && _workParams.OilFlowMaxEnabled) ||
                        ((double)numericUpDownOilFlow.Value < _workParams.OilFlowMin && _workParams.OilFlowMinEnabled))
                    {
                        numericUpDownOilFlow.BackColor = red;
                    }
                    else
                    {
                        numericUpDownOilFlow.BackColor = white;
                    }

                    if (((double)numericUpDownFuelFlow.Value > _workParams.FuelFlowMax && _workParams.FuelFlowMaxEnabled) ||
                        ((double)numericUpDownFuelFlow.Value < _workParams.FuelFlowMin && _workParams.FuelFlowMinEnabled))
                    {
                        numericUpDownFuelFlow.BackColor = red;
                    }
                    else
                    {
                        numericUpDownFuelFlow.BackColor = white;
                    }

                    if (((double)numericUpDownFuelBurn.Value > _workParams.FuelBurnMax && _workParams.FuelBurnMaxEnabled) ||
                        ((double)numericUpDownFuelBurn.Value < _workParams.FuelBurnMin && _workParams.FuelBurnMinEnabled))
                    {
                        numericUpDownFuelBurn.BackColor = red;
                    }
                    else
                    {
                        numericUpDownFuelBurn.BackColor = white;
                    }
                }
                else
                {
                    Color white = Color.White;
                    numericUpDownTimeInRegime.BackColor       = white;
                    numericUpDownThrottleLeverAngle.BackColor = white;
                    numericUpDownFuelPress.BackColor          = white;
                    numericUpDownOilPressTorque.BackColor     = white;
                    numericUpDownVibrationOverload.BackColor  = white;
                    numericUpDownVibrationOverload2.BackColor = white;
                    numericUpDownERP.BackColor      = white;
                    numericUpDownN1.BackColor       = white;
                    numericUpDownEGT.BackColor      = white;
                    numericUpDownN2.BackColor       = white;
                    numericUpDownOilTemp.BackColor  = white;
                    numericUpDownOilPress.BackColor = white;
                    numericUpDownOilFlow.BackColor  = white;
                    numericUpDownFuelFlow.BackColor = white;
                    numericUpDownFuelBurn.BackColor = white;
                }
            }
        }
Esempio n. 6
0
        private void SetWorkTimeGA(BaseComponent powerUnit, FlightRegime flightRegime)
        {
            if (powerUnit == null)
            {
                return;
            }
            List <PowerUnitTimeInRegimeControlItem> fcs =
                flowLayoutPanelMain.Controls
                .OfType <PowerUnitTimeInRegimeControlItem>()
                .Where(c => c.PowerUnit != null &&
                       c.PowerUnit.ItemId == powerUnit.ItemId &&
                       c.FlightRegime == flightRegime)
                .ToList();
            int t = fcs.Sum(cr => cr.WorkTime);

            Lifelength baseDetailLifeLenghtInRegimeSinceLastOverhaul = null;
            Lifelength baseDetailLifeLenghtSinceLastOverhaul         = null;
            Lifelength baseDetailOhInterval = null;
            Lifelength baseDetailLifeLenghtInRegimeSinceNew =
                GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthOnStartOfDay(powerUnit, _flightDate, flightRegime);
            Lifelength baseDetailLifeLenghtSinceNew =
                GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthOnStartOfDay(powerUnit, _flightDate);
            Lifelength baseDetailLifeLimit = powerUnit.LifeLimit;

            ComponentWorkInRegimeParams inRegimeParams =
                powerUnit.ComponentWorkParams.Where(p => p.FlightRegime == flightRegime).FirstOrDefault();

            if (inRegimeParams != null &&
                inRegimeParams.ResorceProvider == SmartCoreType.ComponentDirective &&
                powerUnit.ComponentDirectives.GetItemById(inRegimeParams.ResorceProviderId) != null)
            {
                //в парамтрах работы требуется расчитать время работы в режиме с
                //последнего выполнения директивы
                ComponentDirective dd = powerUnit.ComponentDirectives.GetItemById(inRegimeParams.ResorceProviderId);
                if (dd.LastPerformance == null)
                {
                    baseDetailOhInterval = dd.Threshold.FirstPerformanceSinceNew;
                    //если последнего выполнения директивы нет,
                    //то расчитывается полная работа агрегата в указанном режиме
                    baseDetailLifeLenghtInRegimeSinceLastOverhaul =
                        GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthOnStartOfDay(powerUnit, _flightDate, flightRegime);
                    baseDetailLifeLenghtSinceLastOverhaul =
                        GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthOnStartOfDay(powerUnit, _flightDate);
                }
                else
                {
                    baseDetailOhInterval = dd.Threshold.RepeatInterval;
                    //т.к. может просматриваться старый полет (н: месячной давности)
                    //производится поиск последней записи о выполнении перед текущим полетов
                    AbstractPerformanceRecord r = dd.PerformanceRecords.GetLastKnownRecord(_flightDate);
                    if (r != null)
                    {
                        baseDetailLifeLenghtInRegimeSinceLastOverhaul =
                            GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthForPeriod(powerUnit, r.RecordDate, _flightDate.AddHours(-1), flightRegime);
                        baseDetailLifeLenghtSinceLastOverhaul =
                            GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthForPeriod(powerUnit, r.RecordDate, _flightDate.AddHours(-1));//TODO:(Evgenii Babak) выяснить почему AddHours(-1)
                    }
                }
            }

            if (Flight.AircraftId <= 0)
            {
                //извлечение всех полетов ВС
                var flights = GlobalObjects.AircraftFlightsCore.GetAircraftFlightsOnDate(Flight.AircraftId, _flightDate);
                //И поиск всех полетов, что были раньше текущего
                foreach (AircraftFlight aircraftFlight in flights)
                {
                    //Если полет был раньше текущего, то его наработка добавляется
                    //к рассчитываемым ресурсам базового агрегата
                    if (aircraftFlight.FlightDate < _flightDate.Date.Add(_outTime.TimeOfDay))
                    {
                        baseDetailLifeLenghtInRegimeSinceNew.Add(GlobalObjects.CasEnvironment.Calculator.GetFlightLifelength(aircraftFlight, powerUnit, flightRegime));
                        baseDetailLifeLenghtSinceNew.Add(GlobalObjects.CasEnvironment.Calculator.GetFlightLifelength(aircraftFlight, powerUnit));
                        if (baseDetailLifeLenghtInRegimeSinceLastOverhaul == null)
                        {
                            continue;
                        }
                        baseDetailLifeLenghtInRegimeSinceLastOverhaul.Add(GlobalObjects.CasEnvironment.Calculator.GetFlightLifelength(aircraftFlight, powerUnit, flightRegime));
                        if (baseDetailLifeLenghtSinceLastOverhaul == null)
                        {
                            continue;
                        }
                        baseDetailLifeLenghtSinceLastOverhaul.Add(GlobalObjects.CasEnvironment.Calculator.GetFlightLifelength(aircraftFlight, powerUnit));
                    }
                }
            }
            baseDetailLifeLenghtInRegimeSinceNew.Add(LifelengthSubResource.Minutes, t);

            if (baseDetailLifeLenghtInRegimeSinceLastOverhaul != null)
            {
                baseDetailLifeLenghtInRegimeSinceLastOverhaul.Add(LifelengthSubResource.Minutes, t);
            }


            double persentSN = 0, persentLifeLimit = 0, persentSLO = 0, persentOhInt = 0;
            int?   resInRegimeSN = baseDetailLifeLenghtInRegimeSinceNew.GetSubresource(LifelengthSubResource.Minutes);
            int?   resSN         = baseDetailLifeLenghtSinceNew.GetSubresource(LifelengthSubResource.Minutes);
            int?   resLl         = baseDetailLifeLimit.GetSubresource(LifelengthSubResource.Minutes);

            if (resSN != null && resInRegimeSN != null && resSN > 0)
            {
                persentSN = Convert.ToDouble((double)resInRegimeSN * 100 / resSN);
            }
            if (resLl != null && resInRegimeSN != null && resLl > 0)
            {
                persentLifeLimit = Convert.ToDouble((double)resInRegimeSN * 100 / resLl);
            }

            if (baseDetailLifeLenghtInRegimeSinceLastOverhaul != null)
            {
                int?resInRegimeSLO = baseDetailLifeLenghtInRegimeSinceLastOverhaul.GetSubresource(LifelengthSubResource.Minutes);

                if (baseDetailLifeLenghtSinceLastOverhaul != null)
                {
                    int?resSLO = baseDetailLifeLenghtSinceLastOverhaul.GetSubresource(LifelengthSubResource.Minutes);
                    if (resSLO != null && resInRegimeSLO != null && resSLO > 0)
                    {
                        persentSLO = Convert.ToDouble((double)resInRegimeSLO * 100 / resSLO);
                    }
                }
                if (baseDetailOhInterval != null)
                {
                    int?resOhInt = baseDetailOhInterval.GetSubresource(LifelengthSubResource.Minutes);
                    if (resOhInt != null && resInRegimeSLO != null && resOhInt > 0)
                    {
                        persentOhInt = Convert.ToDouble((double)resInRegimeSLO * 100 / resOhInt);
                    }
                }
            }


            foreach (PowerUnitTimeInRegimeControlItem fc in fcs)
            {
                fc.WorkTimeGA       = t;
                fc.WorkTimeSinceNew = baseDetailLifeLenghtInRegimeSinceNew;
                fc.WorkTimeSLO      = baseDetailLifeLenghtInRegimeSinceLastOverhaul;
                fc.PersentSN        = persentSN;
                fc.PersentLifeLimit = persentLifeLimit;
                fc.PersentSLO       = persentSLO;
                fc.PersentOhInt     = persentOhInt;
            }
        }