Пример #1
0
        /// <summary>
        /// Присвоить значение параметру
        /// </summary>
        /// <param name="parameter">Параметр, которому присвоить значение</param>
        /// <param name="value">Присваиваемое значение параметру</param>
        protected static void SetCurrentValue(Parameter parameter, float value)
        {
            try
            {
                if (parameter != null)
                {
                    if (parameter.p_slim.TryEnterWriteLock(500))
                    {
                        try
                        {
                            parameter.lastValue = parameter.calculatedValue;

                            parameter.currentValue = value;
                            if (parameter.transformation != null)
                            {
                                parameter.transformation.Arg = value;
                                parameter.calculatedValue    = parameter.transformation.Calculate();
                            }
                            else
                            {
                                parameter.calculatedValue = value;
                            }
                        }
                        finally
                        {
                            parameter.p_slim.ExitWriteLock();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorHandler.WriteToLog(null, new ErrorArgs(ex.Message, ErrorType.NotFatal));
            }
        }
Пример #2
0
        // ------------------------- обработчики событий -------------------------

        /// <summary>
        /// Технология завершила обработку данных
        /// </summary>
        /// <param name="sender">Источник события</param>
        /// <param name="e">Аргументы события</param>
        private void Technology_onComplete(object sender, EventArgs e)
        {
            try
            {
                if (NShow)
                {
                    if (Interlocked.Read(ref initialized) == 1)
                    {
                        if (items != null)
                        {
                            foreach (VPanelParameter item in items)
                            {
                                if (item != null && item.Tag != null)
                                {
                                    Parameter parameter = _app.GetParameter(item.Identifier);
                                    if (parameter != null)
                                    {
                                        PanelItem panel_item = item.Tag as PanelItem;
                                        if (panel_item != null)
                                        {
                                            panel_item.Value = parameter.FormattedCaclulatedValue;
                                        }
                                    }
                                }
                            }
                        }
                        panel.Redraw();
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorHandler.WriteToLog(this, new ErrorArgs(ex.Message, ErrorType.NotFatal));
            }
        }
Пример #3
0
        /// <summary>
        /// Найти номер параметра на сервере данных, который необходимо обновить
        /// </summary>
        /// <param name="t_number">Номер параметра</param>
        /// <returns>Номер параметра который нужно обновить на сервере данных</returns>
        protected int NumberTechOnDev(int t_number)
        {
            try
            {
                if (t_number != -1)
                {
                    foreach (Parameter parameter in parameters)
                    {
                        PDescription channel = parameter.Channel;
                        if (channel != null && channel.Number == t_number)
                        {
                            //if (channel.Type == DeviceManager.FormulaType.Capture)
                            {
                                return(channel.Number);
                            }
                        }
                    }
                }

                return(-1);
            }
            catch (Exception ex)
            {
                ErrorHandler.WriteToLog(this, new ErrorArgs(ex.Message, ErrorType.NotFatal));
            }
            return(-1);
        }
Пример #4
0
 /// <summary>
 /// Актуализировать ссылки на параметры
 /// </summary>
 public void ActualizedParameters()
 {
     try
     {
         SgtApplication _app = SgtApplication.CreateInstance();
         if (_app != null)
         {
             TParameter[] t_parames = Parameters;
             if (t_parames != null)
             {
                 foreach (TParameter t_param in t_parames)
                 {
                     if (t_param != null)
                     {
                         Parameter p_param = _app.GetParameter(t_param.Identifier);
                         if (p_param != null && p_param.Channel != null)
                         {
                             t_param.PNumber = p_param.Channel.Number;
                         }
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         ErrorHandler.WriteToLog(this, new ErrorArgs(ex.Message, ErrorType.NotFatal));
     }
 }
Пример #5
0
        /// <summary>
        /// Получили данные от devMan
        /// </summary>
        /// <param name="sender">Источник события</param>
        /// <param name="e">Параметры события</param>
        protected void DevManClient_onReceive(object sender, ReceivedEventArgs e)
        {
            try
            {
                DateTime now = DateTime.Now;
                TimeDatAacquisition = now;

                if (now > lastTime)
                {
                    TimeSpan interval = now - lastTime;
                    if (interval.Ticks > tInterval.Ticks)
                    {
                        lastTime = now;
                        foreach (Parameter parameter in parameters)
                        {
                            PDescription channel = parameter.Channel;
                            if (channel != null)
                            {
                                if (channel.Number >= 0 && channel.Number < e.Slice.Length)
                                {
                                    CommutatorParameter.setCurrent(parameter, e.Slice[channel.Number]);
                                    e.Slice[channel.Number] = parameter.CalculatedValue;
                                }
                            }
                        }

                        SgtApplication app = SgtApplication.CreateInstance();
                        if (app != null)
                        {
                            app.Technology.Calculate(this, new CommutatorEventArgs(e.Slice));
                            if (tech_saver != null)
                            {
                                tech_saver(e.Slice);
                            }
                        }

                        buffer.Append(new Slice(DateTime.Now, e.Slice));
                        UpdateTechnologyParameters();

                        if (onUpdated != null)
                        {
                            onUpdated(this, new CommutatorEventArgs(e.Slice));
                        }
                    }
                }
                else
                {
                    lastTime = now;
                }
            }
            catch (Exception ex)
            {
                ErrorHandler.WriteToLog(sender, new ErrorArgs(ex.Message, ErrorType.NotFatal));
            }
        }
Пример #6
0
 /// <summary>
 /// проверить состояние сервера WCF
 /// </summary>
 public void PingWcf()
 {
     try
     {
         DevManClient.UpdateParameter(-1, float.NaN);
     }
     catch (Exception ex)
     {
         ErrorHandler.WriteToLog(null, new ErrorArgs(ex.Message, ErrorType.Unknown));
     }
 }
Пример #7
0
 /// <summary>
 /// Разорванно соединение с сервером данных
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void DevManClient_onDisconnected(object sender, EventArgs e)
 {
     try
     {
         ConnectionState = WcfConnectionState.Disconnected;
         if (client.Client.Connected)
         {
             client.Client.Disconnect();
         }
     }
     catch (Exception ex)
     {
         ErrorHandler.WriteToLog(this, new ErrorArgs(ex.Message, ErrorType.NotFatal));
     }
 }
Пример #8
0
        // ---------------------------------

        /// <summary>
        /// Обновить панель
        /// </summary>
        public override void Update()
        {
            try
            {
                base.Update();
                panel.ClearItems();

                UpdateGraphicPanel();
                InitializeNumericPanelItems();
            }
            catch (Exception ex)
            {
                ErrorHandler.WriteToLog(this, new ErrorArgs(string.Format("message: {0} stack: {1}", ex.Message, ex.StackTrace)));
            }
        }
Пример #9
0
        /// <summary>
        /// Извлечь данные из указанного диапазона времени
        /// </summary>
        /// <param name="startTime">Начало временного диапазона</param>
        /// <param name="finishTime">Конец временного диапазона</param>
        /// <returns>Массив срезов данных за указанный диапазон времени
        /// или же null если данных за указанный диапазон времени нет.
        /// </returns>
        public Slice[] GetDataFromBuffer(DateTime startTime, DateTime finishTime, int P1, int P2, int P3, int P4, int P5)
        {
            try
            {
                Slice[] slices = buffer.FindFromEnd(startTime, finishTime, P1, P2, P3, P4, P5);
                if (slices != null)
                {
                    return(slices);
                }
            }
            catch (Exception ex)
            {
                ErrorHandler.WriteToLog(this, new ErrorArgs(ex.Message, ErrorType.NotFatal));
            }

            return(null);
        }
Пример #10
0
 /// <summary>
 /// Обработчик ошибки
 /// </summary>
 /// <param name="sender">Источник события</param>
 /// <param name="args">Аргументы события</param>
 private static void MyHandler(object sender, UnhandledExceptionEventArgs args)
 {
     try
     {
         Exception e = args.ExceptionObject as Exception;
         if (e != null)
         {
             ErrorHandler.WriteToLog(sender,
                                     new ErrorArgs(string.Format("{0} stack {1} is terminating {2}", e.Message, e.StackTrace, args.IsTerminating), ErrorType.Fatal));
         }
         else
         {
             ErrorHandler.WriteToLog(sender, new ErrorArgs("e == null", ErrorType.Fatal));
         }
     }
     catch { }
 }
Пример #11
0
        static void Main()
        {
            try
            {
                AppDomain currentDomain = AppDomain.CurrentDomain;
                currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);

                mutex = new Mutex(true, identifier, out isNotRunning);
                if (isNotRunning)
                {
                    app = SgtApplication.CreateInstance();
                    if (app != null)
                    {
                        app.Load();
                        app.Commutator.DeSerialize();

                        app.Connect();

                        System.Windows.Forms.Application.ApplicationExit += new EventHandler(Application_ApplicationExit);

                        System.Windows.Forms.Application.EnableVisualStyles();
                        System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);

                        System.Windows.Forms.Application.Run(new mainForm());
                    }
                }
                else
                {
                    MessageBox.Show("Приложение уже запущено", "Информация",
                                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (Exception ex)
            {
                ErrorHandler.WriteToLog(null, new ErrorArgs(ex.Message, ErrorType.Unknown));
            }
        }
Пример #12
0
        /// <summary>
        /// Подключиться к серверу данных
        /// </summary>
        public void ConnectToServer()
        {
            try
            {
                try
                {
                    Ping        ping    = new Ping();
                    PingOptions options = new PingOptions();

                    Uri       uri   = DevManClient.Uri;
                    PingReply reply = ping.Send(uri.Host, 100);

                    if (reply.Status == IPStatus.Success)
                    {
                        DevManClient.Connect();
                    }
                }
                catch { }
            }
            catch (Exception ex)
            {
                ErrorHandler.WriteToLog(this, new ErrorArgs(ex.Message, ErrorType.NotFatal));
            }
        }
Пример #13
0
        /// <summary>
        /// проверяем текущее состояние параметров
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {
                //listViewParameters.BeginUpdate();
                foreach (ListViewItem item in listViewParameters.Items)
                {
                    if (item.Tag != null)
                    {
                        Parameter parameter = item.Tag as Parameter;
                        if (parameter != null)
                        {
                            if (parameter.IsValidValue)
                            {
                                if (parameter.IsControlAlarm)
                                {
                                    if (parameter.CalculatedValue >= parameter.Alarm)
                                    {
                                        if (item.BackColor != Color.Salmon)
                                        {
                                            item.BackColor = Color.Salmon;
                                        }

                                        if (parameter.IsControlMaximum &&
                                            parameter.CalculatedValue >= parameter.Range.Max)
                                        {
                                            if (item.SubItems[2].Text != "Аварийное/Максимальное")
                                            {
                                                item.SubItems[2].Text = "Аварийное/Максимальное";
                                            }
                                        }
                                        else
                                        if (item.SubItems[2].Text != "Аварийное")
                                        {
                                            item.SubItems[2].Text = "Аварийное";
                                        }

                                        continue;
                                    }
                                }

                                if (parameter.IsControlMaximum)
                                {
                                    if (parameter.CalculatedValue >= parameter.Range.Max)
                                    {
                                        if (item.BackColor != Color.DarkOrange || item.SubItems[2].Text != "Максимальное")
                                        {
                                            item.BackColor        = Color.DarkOrange;
                                            item.SubItems[2].Text = "Максимальное";
                                        }

                                        continue;
                                    }
                                }

                                if (parameter.IsControlMinimum)
                                {
                                    if (parameter.CalculatedValue <= parameter.Range.Min)
                                    {
                                        if (item.BackColor != Color.Orchid || item.SubItems[2].Text != "Минимальное")
                                        {
                                            item.BackColor        = Color.Orchid;
                                            item.SubItems[2].Text = "Минимальное";
                                        }

                                        continue;
                                    }
                                }

                                if (item.SubItems[2].Text != "Включен")
                                {
                                    item.SubItems[2].Text = "Включен";
                                    item.BackColor        = listViewParameters.BackColor;
                                }
                            }
                            else
                            {
                                if (item.BackColor != Color.Salmon || item.SubItems[2].Text != "Отключен")
                                {
                                    item.BackColor        = Color.Goldenrod;
                                    item.SubItems[2].Text = "Отключен";
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorHandler.WriteToLog(this, new ErrorArgs(ex.Message, ErrorType.Unknown));
            }
            finally
            {
                //listViewParameters.EndUpdate();
            }
        }
Пример #14
0
        /// <summary>
        /// Передать технологически параметры серверу данных
        /// </summary>
        protected void UpdateTechnologyParameters()
        {
            try
            {
                TParameter[] t_prms = SgtApplication.CreateInstance().Technology.Parameters;
                if (t_prms != null)
                {
                    foreach (TParameter parameter in t_prms)
                    {
                        if (parameter != null && parameter.IsSimple == false)
                        {
                            int dev_number = NumberTechOnDev(parameter.SNumber);
                            if (dev_number != -1)
                            {
                                DevManClient.UpdateParameter(dev_number, parameter.Value);
                            }
                        }
                        else
                        if (parameter != null && parameter.IsSimple == true)
                        {
                            switch (parameter.UnigueClassName)
                            {
                            case "P0014":

                                try
                                {
                                    P0014 par = parameter as P0014;
                                    if (par != null && par.Source == P0014Source.Own)
                                    {
                                        int dev_number = NumberTechOnDev(par.SNumber);
                                        if (dev_number != -1)
                                        {
                                            DevManClient.UpdateParameter(dev_number, parameter.Value);
                                        }
                                    }
                                }
                                catch { }
                                break;

                            case "P14_1":

                                try
                                {
                                    P14_1 par = parameter as P14_1;
                                    if (par != null && par.Source == P0014Source.Own)
                                    {
                                        int dev_number = NumberTechOnDev(par.SNumber);
                                        if (dev_number != -1)
                                        {
                                            DevManClient.UpdateParameter(dev_number, parameter.Value);
                                        }
                                    }
                                }
                                catch { }
                                break;

                            default:
                                break;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorHandler.WriteToLog(this, new ErrorArgs(ex.Message, ErrorType.NotFatal));
            }
        }
Пример #15
0
        /// <summary>
        /// Необходимо передать данные для отрисовки графическому компоненту
        /// </summary>
        /// <param name="sender">Источник события</param>
        /// <param name="e">Параметры события</param>
        private void manager_OnDataNeed_3(object sender, EventArgs e)
        {
            try
            {
                if (NShow)
                {
                    if (_app != null && Interlocked.Read(ref initialized) == 1)
                    {
                        if (Show_gr3)
                        {
                            Graphic gr_1 = GPanel_3.Graphic_1.Tag as Graphic;
                            Graphic gr_2 = GPanel_3.Graphic_2.Tag as Graphic;
                            Graphic gr_3 = GPanel_3.Graphic_3.Tag as Graphic;
                            Graphic gr_4 = GPanel_3.Graphic_4.Tag as Graphic;
                            Graphic gr_5 = GPanel_3.Graphic_5.Tag as Graphic;

                            if (gr_1 != null)
                            {
                                gr_1.Clear();
                            }
                            if (gr_2 != null)
                            {
                                gr_2.Clear();
                            }
                            if (gr_3 != null)
                            {
                                gr_3.Clear();
                            }
                            if (gr_4 != null)
                            {
                                gr_4.Clear();
                            }
                            if (gr_5 != null)
                            {
                                gr_5.Clear();
                            }

                            Parameter p1, p2, p3, p4, p5;
                            int       np1 = -1, np2 = -1, np3 = -1, np4 = -1, np5 = -1;

                            p1 = GPanel_3.Graphic_1.Parameter;
                            p2 = GPanel_3.Graphic_2.Parameter;
                            p3 = GPanel_3.Graphic_3.Parameter;
                            p4 = GPanel_3.Graphic_4.Parameter;
                            p5 = GPanel_3.Graphic_5.Parameter;

                            if (p1 != null && p1.Channel != null)
                            {
                                np1 = p1.Channel.Number;
                            }
                            if (p2 != null && p2.Channel != null)
                            {
                                np2 = p2.Channel.Number;
                            }

                            if (p3 != null && p3.Channel != null)
                            {
                                np3 = p3.Channel.Number;
                            }
                            if (p4 != null && p4.Channel != null)
                            {
                                np4 = p4.Channel.Number;
                            }

                            if (p5 != null && p5.Channel != null)
                            {
                                np5 = p5.Channel.Number;
                            }

                            Slice[] slices = _app.Commutator.GetDataFromBuffer(GPanel_3.GManager.StartTime, GPanel_3.GManager.FinishTime,
                                                                               np1, np2, np3, np4, np5);

                            if (slices != null)
                            {
                                DateTime _minT = _app.Commutator.MinTimeParameter();
                                foreach (Slice slice in slices)
                                {
                                    if (slice.slice != null)
                                    {
                                        if (gr_1 != null)
                                        {
                                            gr_1.Insert(slice._date, slice[0]);
                                            gr_1.Tmin = _minT;
                                        }

                                        if (gr_2 != null)
                                        {
                                            gr_2.Insert(slice._date, slice[1]);
                                            gr_2.Tmin = _minT;
                                        }

                                        if (gr_3 != null)
                                        {
                                            gr_3.Insert(slice._date, slice[2]);
                                            gr_3.Tmin = _minT;
                                        }

                                        if (gr_4 != null)
                                        {
                                            gr_4.Insert(slice._date, slice[3]);
                                            gr_4.Tmin = _minT;
                                        }

                                        if (gr_5 != null)
                                        {
                                            gr_5.Insert(slice._date, slice[4]);
                                            gr_5.Tmin = _minT;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorHandler.WriteToLog(this, new ErrorArgs(ex.Message, ErrorType.NotFatal));
            }
        }
Пример #16
0
        /// <summary>
        /// Необходимо передать данные для отрисовки графическому компоненту
        /// </summary>
        /// <param name="sender">Источник события</param>
        /// <param name="e">Параметры события</param>
        private void manager_OnDataNeed(object sender, EventArgs e)
        {
            try
            {
                if (NShow)
                {
                    if (_app != null && Interlocked.Read(ref initialized) == 1)
                    {
                        Slice[] slices = _app.Commutator.GetDataFromBuffer(manager.StartTime, manager.FinishTime);
                        if (slices != null)
                        {
                            Graphic gr_1 = graphic_1.Tag as Graphic;
                            Graphic gr_2 = graphic_2.Tag as Graphic;
                            Graphic gr_3 = graphic_3.Tag as Graphic;
                            Graphic gr_4 = graphic_4.Tag as Graphic;
                            Graphic gr_5 = graphic_5.Tag as Graphic;

                            gr_1.Clear();
                            gr_2.Clear();
                            gr_3.Clear();
                            gr_4.Clear();
                            gr_5.Clear();

                            foreach (Slice slice in slices)
                            {
                                if (slice.slice != null)
                                {
                                    int sliceLen = slice.slice.Length;

                                    if (gr_1 != null)
                                    {
                                        Parameter pr_1 = graphic_1.Parameter; //_app.GetParameter(graphic_1.Identifier);
                                        if (pr_1 != null)
                                        {
                                            if (pr_1.Channel != null)
                                            {
                                                if (pr_1.Channel.Number > -1 && pr_1.Channel.Number < sliceLen)
                                                {
                                                    gr_1.Insert(slice._date, slice[pr_1.Channel.Number]);
                                                }
                                            }
                                        }
                                    }

                                    if (gr_2 != null)
                                    {
                                        Parameter pr_2 = graphic_2.Parameter; //_app.GetParameter(graphic_2.Identifier);
                                        if (pr_2 != null)
                                        {
                                            if (pr_2.Channel != null)
                                            {
                                                if (pr_2.Channel.Number > -1 && pr_2.Channel.Number < sliceLen)
                                                {
                                                    gr_2.Insert(slice._date, slice[pr_2.Channel.Number]);
                                                }
                                            }
                                        }
                                    }

                                    if (gr_3 != null)
                                    {
                                        Parameter pr_3 = graphic_3.Parameter;// _app.GetParameter(graphic_3.Identifier);
                                        if (pr_3 != null)
                                        {
                                            if (pr_3.Channel != null)
                                            {
                                                if (pr_3.Channel.Number > -3 && pr_3.Channel.Number < sliceLen)
                                                {
                                                    gr_3.Insert(slice._date, slice[pr_3.Channel.Number]);
                                                }
                                            }
                                        }
                                    }

                                    if (gr_4 != null)
                                    {
                                        Parameter pr_4 = graphic_4.Parameter; //_app.GetParameter(graphic_4.Identifier);
                                        if (pr_4 != null)
                                        {
                                            if (pr_4.Channel != null)
                                            {
                                                if (pr_4.Channel.Number > -4 && pr_4.Channel.Number < sliceLen)
                                                {
                                                    gr_4.Insert(slice._date, slice[pr_4.Channel.Number]);
                                                }
                                            }
                                        }
                                    }

                                    if (gr_5 != null)
                                    {
                                        Parameter pr_5 = graphic_5.Parameter; //_app.GetParameter(graphic_5.Identifier);
                                        if (pr_5 != null)
                                        {
                                            if (pr_5.Channel != null)
                                            {
                                                if (pr_5.Channel.Number > -5 && pr_5.Channel.Number < sliceLen)
                                                {
                                                    gr_5.Insert(slice._date, slice[pr_5.Channel.Number]);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorHandler.WriteToLog(this, new ErrorArgs(ex.Message, ErrorType.NotFatal));
            }
        }
Пример #17
0
        /// <summary>
        /// Разбор команд, поступивших из АСУ и пультов управления буровой
        /// </summary>
        protected void ParseCommands(float[] slice)
        {
            // Разбор команд, поступивших с пульта управления

            try
            {
                SgtApplication _app = SgtApplication.CreateInstance();
                if (_app != null)
                {
                    Parameter drillerParam = _app.GetParameter(id_driller_console);
                    Parameter drweParam    = _app.GetParameter(id_driller_console_weight_column);

                    if (drillerParam != null && drillerParam.Channel != null)
                    {
                        driller_console = drillerParam.Channel.Number;
                    }
                    else
                    {
                        driller_console = -1;
                    }

                    if (drweParam != null && drweParam.Channel != null)
                    {
                        driller_console_weight_column = drweParam.Channel.Number;
                    }
                    else
                    {
                        driller_console_weight_column = -1;
                    }
                }

                if (driller_console_weight_column > -1 && driller_console_weight_column < slice.Length)
                {
                    // Разбор команд, поступивших с Пульта бурильщика Ореол
                    float _v = slice[driller_console_weight_column];
                    if (!float.IsNaN(_v))
                    {
                        int _cmd = ((int)Math.Round(_v) & 7);        // Вырезаем первых 3 бита!

                        if (_cmd == Маска_ПультаБурильщика_Нагрузка) // Реализация команды Нагрузка
                        {
                            P0200.ResetStartingPoint();
                        }
                        else
                        if (_cmd == Маска_ПультаБурильщика_Поток) // Реализация команды Поток
                        {
                            P0105.StartingPoint = float.NaN;
                        }
                        else
                        if (_cmd == Маска_ПультаБурильщика_Тальблок) // Реализация команды Тальблок
                        {
                            _app.DoTalblock(0);
                        }
                        else
                        if (_cmd == Маска_ПультаБурильщика_Подача) // Реализация команды Подача
                        {
                            P0207.ResetStartingPoint();
                        }
                        else
                        if (_cmd == Маска_АСУ_Объем) // Реализация команды Обьем
                        {
                            P0106.StartingPoint = float.NaN;
                        }
                    }
                }

                if (driller_console > -1 && driller_console < slice.Length)
                {
                    // Разбор команд, поступивших с Пульта Бурильщика АСУ
                    float _v = slice[driller_console];
                    if (!float.IsNaN(_v))
                    {
                        int _cmd = (int)Math.Round(_v);

                        if ((_cmd & Маска_АСУ_Нагрузка) != 0) // Реализация команды Нагрузка
                        {
                            P0200.ResetStartingPoint();
                        }
                        else
                        if ((_cmd & Маска_АСУ_Поток) != 0) // Реализация команды Поток
                        {
                            P0105.StartingPoint = float.NaN;
                        }
                        else
                        if ((_cmd & Маска_АСУ_Тальблок) != 0) // Реализация команды Тальблок
                        {
                            _app.DoTalblock(0);
                        }
                        else
                        if ((_cmd & Маска_АСУ_Подача) != 0) // Реализация команды Подача
                        {
                            P0207.ResetStartingPoint();
                        }
                        else
                        if ((_cmd & Маска_АСУ_Объем) != 0) // Реализация команды Обьем
                        {
                            P0106.StartingPoint = float.NaN;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorHandler.WriteToLog(this, new ErrorArgs(ex.Message, ErrorType.NotFatal));
            }
        }