Exemplo n.º 1
0
Arquivo: P0202.cs Projeto: slawer/sgt
        /// <summary>
        /// Вычисляет текущее значение параметра Длина инструмента
        /// </summary>
        /// <param name="v1">Положение тальблока в текущий момент</param>
        /// <param name="v2">Вес на крюке в текущий момент</param>
        /// <param name="v3">Положение клиньев в текущий момент</param>
        /// <param name="v4">Положение инструмента (долота) в текущий момент</param>
        /// <param name="v5">Глубина забоя в текущий момент</param>
        /// <param name="v6">Количество опущенных свеч</param>
        /// <param name="currentTime">Текущее технологическое время</param>
        /// <param name="locking_weight_hook">Блокировочное значение веса на крюке</param>
        /// <param name="size_layout_bottom_column">Размер компоновки низа колонны</param>
        /// <param name="r_weight">Метод расчета веса на крюке</param>
        public void Calculate(P0005 v1, P0102 v2, P0012 v3, P0204 v4, P0205 v5, P0203 v6,
                              DateTime currentTime, float locking_weight_hook, float size_layout_bottom_column,
                              float size_layout_top_column, TechnologicalRegimeWeightHook r_weight)
        {
            if (slim.TryEnterWriteLock(300))
            {
                try
                {
                    switch (mode_proccess)
                    {
                    case TModeProcess.mpBase:

                        _value = current_length_instrument(v1, v3, v2, locking_weight_hook, r_weight);
                        break;

                    case TModeProcess.mpSetUser:

                        mode_proccess = TModeProcess.mpBase;
                        if (WeightHookForWeightOrWedges(v2, v3, locking_weight_hook, r_weight)
                            != TProcResult.True || float.IsNaN(v1.Value))
                        {
                            v4.Calculate(_value);
                        }

                        if (_value <= (size_layout_bottom_column + size_layout_top_column))
                        {
                            v6.CorrectLenghtInstrument(0.0f);
                            v6.Calculate(0.0f);
                        }
                        else
                        {
                            float _tmp = _value - (size_layout_bottom_column + size_layout_top_column);
                            v6.CorrectLenghtInstrument(_tmp);
                        }
                        break;

                    case TModeProcess.mpCMDzaboi:

                        mode_proccess = TModeProcess.mpBase;

                        if (WeightHookForWeightOrWedges(v2, v3, locking_weight_hook, r_weight)
                            != TProcResult.True || float.IsNaN(v1.Value))
                        {
                            _value = current_length_instrument(v1, v3, v2, locking_weight_hook, r_weight);
                        }
                        else
                        {
                            last_talblock = v1.Value;
                            weight_status = WeightStatus.wsWeight;

                            _value = v5.Value + v1.Value;

                            if (_value <= (size_layout_bottom_column + size_layout_top_column))
                            {
                                v6.CorrectLenghtInstrument(0.0f);
                                v6.Calculate(0.0f);
                            }
                            else
                            {
                                float _tmp = _value - (size_layout_bottom_column + size_layout_top_column);
                                v6.CorrectLenghtInstrument(_tmp);
                            }
                        }
                        break;

                    case TModeProcess.mpCMDmodifyDepth:

                        if (WeightHookForWeightOrWedges(v2, v3, locking_weight_hook, r_weight)
                            != TProcResult.True || float.IsNaN(v1.Value))
                        {
                            weight_status = WeightStatus.wsClear;
                            if (v5.Value < _value)
                            {
                                _value = v5.Value;
                                if (_value <= (size_layout_bottom_column + size_layout_top_column))
                                {
                                    v6.CorrectLenghtInstrument(0.0f);
                                    v6.Calculate(0.0f);
                                }
                                else
                                {
                                    float _tmp = _value - (size_layout_bottom_column + size_layout_top_column);
                                    v6.CorrectLenghtInstrument(_tmp);
                                }
                            }

                            v4.Calculate(_value);
                        }
                        else
                        {
                            last_talblock = v1.Value;
                            weight_status = WeightStatus.wsWeight;

                            if (v5.Value < (_value - v1.Value))
                            {
                                _value = v5.Value + v1.Value;
                                if (_value <= (size_layout_bottom_column + size_layout_top_column))
                                {
                                    v6.CorrectLenghtInstrument(0.0f);
                                    v6.Calculate(0.0f);
                                }
                                else
                                {
                                    float _tmp = _value - (size_layout_bottom_column + size_layout_top_column);
                                    v6.CorrectLenghtInstrument(_tmp);
                                }
                            }
                        }

                        mode_proccess = TModeProcess.mpBase;
                        break;

                    default:
                        break;
                    }
                }
                finally
                {
                    slim.ExitWriteLock();
                }
            }
        }
Exemplo n.º 2
0
Arquivo: P0202.cs Projeto: slawer/sgt
        /// <summary>
        /// Вычисляет текущее значение параметра Длина инструмента
        /// </summary>
        /// <param name="v1">Положение тальблока в текущий момент</param>
        /// <param name="v2">Вес на крюке в текущий момент</param>
        /// <param name="v3">Положение клиньев в текущий момент</param>
        /// <param name="v4">Положение инструмента (долота) в текущий момент</param>
        /// <param name="v5">Глубина забоя в текущий момент</param>
        /// <param name="v6">Количество опущенных свеч</param>
        /// <param name="currentTime">Текущее технологическое время</param>
        /// <param name="locking_weight_hook">Блокировочное значение веса на крюке</param>
        /// <param name="size_layout_bottom_column">Размер компоновки низа колонны</param>
        /// <param name="r_weight">Метод расчета веса на крюке</param>
        public void Calculate(P0005 v1, P0102 v2, P0012 v3, P0204 v4, P0205 v5, P0203 v6,
            DateTime currentTime, float locking_weight_hook, float size_layout_bottom_column, 
            float size_layout_top_column, TechnologicalRegimeWeightHook r_weight)
        {
            if (slim.TryEnterWriteLock(300))
            {
                try
                {
                    switch (mode_proccess)
                    {
                        case TModeProcess.mpBase:

                            _value = current_length_instrument(v1, v3, v2, locking_weight_hook, r_weight);
                            break;

                        case TModeProcess.mpSetUser:

                            mode_proccess = TModeProcess.mpBase;
                            if (WeightHookForWeightOrWedges(v2, v3, locking_weight_hook, r_weight)
                                != TProcResult.True || float.IsNaN(v1.Value))
                            {
                                v4.Calculate(_value);
                            }

                            if (_value <= (size_layout_bottom_column + size_layout_top_column))
                            {
                                v6.CorrectLenghtInstrument(0.0f);
                                v6.Calculate(0.0f);
                            }
                            else
                            {
                                float _tmp = _value - (size_layout_bottom_column + size_layout_top_column);
                                v6.CorrectLenghtInstrument(_tmp);
                            }
                            break;

                        case TModeProcess.mpCMDzaboi:

                            mode_proccess = TModeProcess.mpBase;

                            if (WeightHookForWeightOrWedges(v2, v3, locking_weight_hook, r_weight)
                                != TProcResult.True || float.IsNaN(v1.Value))
                            {
                                _value = current_length_instrument(v1, v3, v2, locking_weight_hook, r_weight);
                            }
                            else
                            {
                                last_talblock = v1.Value;
                                weight_status = WeightStatus.wsWeight;

                                _value = v5.Value + v1.Value;

                                if (_value <= (size_layout_bottom_column + size_layout_top_column))
                                {
                                    v6.CorrectLenghtInstrument(0.0f);
                                    v6.Calculate(0.0f);
                                }
                                else
                                {
                                    float _tmp = _value - (size_layout_bottom_column + size_layout_top_column);
                                    v6.CorrectLenghtInstrument(_tmp);
                                }
                            }
                            break;

                        case TModeProcess.mpCMDmodifyDepth:

                            if (WeightHookForWeightOrWedges(v2, v3, locking_weight_hook, r_weight)
                                != TProcResult.True || float.IsNaN(v1.Value))
                            {
                                weight_status = WeightStatus.wsClear;
                                if (v5.Value < _value)
                                {
                                    _value = v5.Value;
                                    if (_value <= (size_layout_bottom_column + size_layout_top_column))
                                    {
                                        v6.CorrectLenghtInstrument(0.0f);
                                        v6.Calculate(0.0f);
                                    }
                                    else
                                    {
                                        float _tmp = _value - (size_layout_bottom_column + size_layout_top_column);
                                        v6.CorrectLenghtInstrument(_tmp);
                                    }
                                }

                                v4.Calculate(_value);
                            }
                            else
                            {
                                last_talblock = v1.Value;
                                weight_status = WeightStatus.wsWeight;

                                if (v5.Value < (_value - v1.Value))
                                {
                                    _value = v5.Value + v1.Value;
                                    if (_value <= (size_layout_bottom_column + size_layout_top_column))
                                    {
                                        v6.CorrectLenghtInstrument(0.0f);
                                        v6.Calculate(0.0f);
                                    }
                                    else
                                    {
                                        float _tmp = _value - (size_layout_bottom_column + size_layout_top_column);
                                        v6.CorrectLenghtInstrument(_tmp);
                                    }
                                }
                            }

                            mode_proccess = TModeProcess.mpBase;
                            break;

                        default:
                            break;
                    }
                }
                finally
                {
                    slim.ExitWriteLock();
                }
            }
        }