public RelayTestPointUpDown(RelayTestPointSettings settings, PressureUnitsEnum pressureUnits, double marginCoefficient = 1)
 {
     PercentRange      = (int)settings.TestPoint * 100;
     RangeMin_Pa       = settings.RangeMin;
     RangeMax_Pa       = settings.RangeMax;
     ClassPrecision    = settings.ClassPrecision;
     Units             = pressureUnits;
     MarginCoefficient = marginCoefficient;
     SP         = new Pressure(settings.DeviceSP, pressureUnits);
     Hysteresis = new Pressure(settings.Hysteresis, pressureUnits);
 }
        public RelayTestPointUpDown[] GetTestPoints(RelayTestPointSettings settings, bool absolutePressure,
                                                    PressureUnitsEnum pressureUnits, double marginCoefficient, CancellationToken cancellationToken)
        {
            SendsettingsToDevice(settings.DeviceSP, settings.Hysteresis);

            results = new RelayTestPointUpDown[stateRelayReader.StateRelay.Length];
            for (int i = 0; i < results.Length; i++)
            {
                results[i] = new RelayTestPointUpDown(settings, pressureUnits, marginCoefficient);
            }

            GetUpperPointsAsync(settings, absolutePressure, pressureUnits, marginCoefficient, cancellationToken);
            GetDownPointsAsync(settings, absolutePressure, pressureUnits, marginCoefficient, cancellationToken);
            return(results);
        }
        private async void GetDownPointsAsync(RelayTestPointSettings setpoints, bool absolutePressure,
                                              PressureUnitsEnum pressureUnits, double marginCoefficient, CancellationToken cancellationToken)
        {
            // Устанавливаем верхнюю уставку (потом давление будет плавно изменяться от верхней уставки к нижней)
            SetPressure(setpoints.PsysUpwardSP, setpoints.RangeMin, setpoints.RangeMax, absolutePressure, cancellationToken);
            CheckStateRelays(true, cancellationToken);
            // Записываем уставку с ограничением изменения по скорости
            StartSmothSetPressure(setpoints.PsysDownwardSP, setpoints.RangeMin, setpoints.RangeMax, absolutePressure, setpoints.PsysRate,
                                  cancellationToken);
            double?[] pressures = await GetSwitchPressureValuesAsync(true, false, absolutePressure, setpoints.PressureLimitUpward,
                                                                     cancellationToken);

            for (int i = 0; i < pressures.Length; i++)
            {
                results[i].AddPointDown(pressures[i]);
            }
        }
Exemplo n.º 4
0
        private void AddRelayTestPoint(double point, CancellationToken cancellationToken, IProgress <int> progress)
        {
            var settings = new RelayTestPointSettings(point, rangeMin_Pa, rangeMax_Pa, classPrecision);

            RelayTestPointUpDown[] relaysTestPoint = relayTestTools.GetTestPoints(settings, absoluteType, pressureUnits,
                                                                                  marginCoefficient, cancellationToken);
            if (RelayTestResults == null)
            {
                RelayTestResults = new RelayTestResults[relaysTestPoint.Length];
            }
            for (int i = 0; i < relaysTestPoint.Length; i++)
            {
                if (RelayTestResults[i] == null)
                {
                    RelayTestResults[i] = new RelayTestResults();
                }
                RelayTestResults[i].Add(relaysTestPoint[i]);
            }
            UpdResultsEvent?.Invoke(this, new EventArgs());
            progressValue += deltaProgress;
            progress.Report((int)progressValue);
            waitContinue?.Invoke(cancellationToken);
        }