Beispiel #1
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));
            }
        }