/// <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)); } }