3166

Комплекс программ для обработки результатов натурных испытаний радиолокационной станции управления воздушным движением

Дипломная

Информатика, кибернетика и программирование

Введение Целью дипломного проекта является проектирование и применение комплекса программ для обработки результатов натурных испытаний радиолокационной станции управления воздушным движением (РЛС УВД) с целью определения следующих основных характ...

Русский

2012-10-25

844.5 KB

44 чел.

33


Введение

Целью дипломного проекта является проектирование и применение комплекса программ для обработки результатов натурных испытаний радиолокационной станции управления воздушным движением (РЛС УВД) с целью определения следующих основных характеристик:

  •  дальность обнаружения воздушных судов с различной эффективной отражающей поверхностью,
  •  дальность завязки трасс обнаруженных воздушных судов с различной эффективной отражающей поверхностью,
  •  количество ложных тревог,
  •  точность сопровождения трасс.

Для оценки указанных параметров необходимо в реальном масштабе времени иметь информацию, выдаваемую РЛС внешним потребителям по обнаруженным отметкам и сопровождаемым трассам. Такая информация представляет собой большие массивы, составляющие регистрируемые потоки информации от управляющей работой РЛС ЦВМ. Возникает проблема оперативного отбора параметров, необходимых для проверки конкретной информации. Ставится также задача обработки потоков с целью оценки заданных параметров системы.

Отличительные особенности испытуемой РЛС [9]:

  •  радиолокатор секторного обзора;
  •  наличие фазированной антенной решетки (ФАР) обеспечивает возможность практически мгновенного изменения углового направления в пределах перекрываемого сектора ответственности;
  •  автоматический выбор способа обработки сигналов в каждом угловом направлении;
  •  автоматическая завязка и сопровождение трасс обнаруженных объектов;
  •  возможность ручного бланкирования автосъёма координат в пораженных помехой зонах.

Алгоритм программного управления обзором является достаточно сложным и использует входные данные алгоритма регулярного обзора пространства (РО) вертикальными строками и алгоритма сопровождения завязанных трасс с просмотром пространства малыми секторами (МС) типа «розочка».

Работа состоит из 6 глав и 4 приложений. Каждую главу завершают соответствующие выводы. В тексте даны ссылки на приведенный список использованной литературы.

Первая глава содержит описание функционирования РЛС, состава аппаратуры и вида входной информации.

Вторая глава описывает методику проведения испытаний РЛС.

Третья глава и четвертая главы описывают состав и работу программного пакета, а также действия оператора при работе с программным пакетом.

Пятая глава содержит экономическое обоснование разработки программного пакета; шестая глава содержит описание мер электробезопасности на рабочем месте программиста.

В приложения включены листинги программ probability_of_detection.pl, probability_of_airway.pl, protocol_processing.pl и spurious_marks_quantity.pl на языке Perl.

В заключении приведен анализ проделанной работы, приведены достоинства и недостатки разработанного пакета программного обеспечения.

Имеющийся на предприятии прототип программного пакета не обеспечивал требуемую степень автоматизации расчетов, программные модули не были объединены в единую оболочку, отсутствовало руководство пользователя.


1. Общие сведения

1.1. Постановка задачи

Для обработки результатов натурных испытаний радиолокационной станции управления воздушным движением (РЛС УВД) необходимо разработать и применить специальный пакет программного обеспечения.

При настройке, отладке и проведении испытаний РЛС регистрируется информация, выдаваемая в аппаратуру передачи данных (АПД). Информация подразделяется на формуляры, которые в свою очередь подразделяются на типы. Регистрация информации производится в режиме подслушивания в реальном времени с регистрацией информации на магнитном регистраторе (МР). Каждому формуляру присваивается параметр текущего времени с дискретностью 0,001 с. Информация о результатах испытаний, прошедшая предварительную обработку, поступает в виде текстовых файлов заданного формата, в которых указано текущее время, номера соответствующих параметров и их значения.

По результатам облётов РЛС УВД самолётами различных типов (Ан72 и пр.), в соответствии с методиками проведения статистической обработки результатов экспериментов строятся кривые зависимостей вероятности правильного обнаружения и вероятности завязки трасс как функции наклонной дальности. По этим кривым определяются:

  •  дальности обнаружения воздушных объектов с вероятностью правильного обнаружения РОБН = 0,5;
  •  дальности завязки и сопровождения трассы с вероятностью РЗТ = 0,7;
  •  количество ложных отметок (ЛО) в единицу времени;
  •  оценка величин среднеквадратических ошибок (СКО) прямоугольных координат трасс воздушных объектов, при этом в качестве эталона используется трасса, аппроксимированная по методу наименьших квадратов в связи с тем, что отсутствует аппаратура внешнетраекторных измерений (ВТИ).

1.2. Патентный поиск

Патентный поиск проводился в библиотеке алгоритмов и программ, в результате этого поиска подобных программных пакетов, отвечающих целям и задачам данного дипломного проекта, обнаружено не было. На основании результатов патентного поиска разрабатываемый программный пакет можно считать обладающим новизной. Имеющийся в организации прототип программного пакета  не обеспечивал автоматизацию должным образом.

1.3. Принципы функционирования РЛС УВД

1.3.1. Назначение

РЛС секторного обзора (РЛС УВД) предназначена для использования в составе унифицированных радиолокационных постов УВД для обнаружения и опознавания воздушных объектов в любой помеховой обстановке, завязки трасс, их сопровождения автономно или по целеуказанию от центрального диспетчерского пункта (ДП).

1.3.2. Состав аппаратуры

В радиолокационную станцию секторного обзора РЛС УВД входит следующая аппаратура:

1. Антенный пост, в который входят следующие системы и устройства:

  •  антенно–волноводная система;
  •  фазированная антенная решетка;
  •  система управления лучом (СУЛ) ФАР;
  •  наземный радиозапросчик (приемопередатчик, ФАР НРЗ и СУЛ НРЗ);
  •  передающее устройство (ПУ);
  •  входные устройства приемной системы;
  •  системы жидкостного, воздушного охлаждения (СЖО, СВО), система жидкостного термостатирования (СЖТ), система избыточного давления (СИД).
  1.  Аппаратный отсек, в который входят следующие системы и устройства:
  •  приёмная система (ПС);
  •  система синхронизации
  •  система отображения информации (СОИ);
  •  рабочие места (пульты) операторов (ПО);
  •  вычислительная система, управляющая работой РЛС (ВС);
  •  аппаратура передачи данных (АПД) — система телекодовой связи типа СТС 2;
  •  система навигации, топопривязки и ориентирования (АНТО);
  •  аппаратура НРЗ.

Упрощенная функциональная схема аппаратуры РЛС приведена на рис. 1.1.


Рис. 1.1. Упрощенная функциональная схема аппаратуры РЛС.


Вычислительная система РЛС состоит из двух вычислительных машин — ЦВМ «А», ЦВМ «Б» и аппаратуры каналов связи с абонентами.

ЦВМ «Б» обеспечивает управление радиотехническими системами (РТС) в реальном времени с темпом частоты повторения РЛС. От ЦВМ «Б» на РТС передаются:

  •  значения направляющих косинусов для управления положением диаграммы ФАР;
  •  информация управления, необходимая для формирования зондирующего импульса;
  •  информация управления режимами обработки сигнала в цифровом приемнике;
  •  информация управления отображением первичной РЛИ на экранах системы отображения информации (СОИ).

Информация с выхода ПС в виде кодов наклонной дальности обнаруженных отметок поступает для последующей обработки в ЦВМ «А». Для определения положения обнаруженных отметок в пространстве необходимы также угловые координаты;

  •  положение диаграммы направленности ФАР относительно её нормали;
    •  углы курса, крена, тангажа самой РЛС;
    •  положение ФАР относительно корпуса РЛС.

Данные о положении диаграммы направленности относительно нормали ФАР «прокачиваются» в ЦВМ «А» в составе формуляра ПС.

Данные о положении РЛС вырабатываются аппаратурой АНТО, а положение ФАР (нормали ФАР) относительно РЛС определяется аппаратурой ПВК.

ЦВМ «А» по полученным данным производит межугловую обработку и пересчитывает поступающие координаты обнаруженных отметок:

  •  в сферическую систему координат относительно РЛС;
    •  в географическую систему координат.

ЦВМ «А» обеспечивает также завязку трас отметок и управление РЛС в процессе их сопровождения. Завязка и сопровождение трасс осуществляется в географической прямоугольной системе координат.

Оператору РЛС на экране СОИ отображается первичная РЛИ, метки автосъёма, рассчитанные ЦВМ «А» по результатам межугловой обработки, информация о сопровождаемых трассах в виде векторов трасс и отметки государственного опознавания.

Оператор РЛС на основе отображаемой информации имеет следующие возможности управления:

  •  зоной обзора пространства;
  •  режимом обработки в цифровом приемнике;
  •  процессом опознавания государственной принадлежности;
  •  имеет возможность накладывать бланки автосъёма координат отметок в зонах, пораженных интенсивными помехами.

Для этого оператор использует соответствующие органы управления на пульте оператора (ПО).

Распоряжения управления РЛС поступают в ЦВМ «А» также и от ДП по АПД. Информация об обнаруженных отметках и сопровождаемых трассах передается на ДП по той же АПД.

Выходная информация РЛС, передаваемая от ЦВМ «А» по седьмому каналу через АПД на диспетчерский пункт, содержит:

  •  сообщения о точке стояния РЛС;
  •  сообщения об обнаруженных отметках в сферической системе координат;
  •  сообщения о сопровождаемых трассах в прямоугольной географической системе координат;
  •  сообщения, содержащие информацию о режимах работы и характеристиках обзора;
  •  сообщения о сбросе трасс;
  •  сообщения о начале отработки ЦУ по сектору и др.

На основе поступающих распоряжений ЦВМ «А» передает информацию, необходимую для управления процессом обзора пространства и процессом обнаружения в ЦВМ «Б» по каналу межмашинного обмена (УМО).

В РЛС предусмотрена возможность подключения регистрирующей аппаратуры для подслушивания информации всех каналов обмена между ВС и её абонентами.

Аппаратура записи внутристанционной информации (АЗ ВСИ) используется при проведении наладочных работ и всех видов испытаний.

1.4. Регистрация информации

На рис. 1.2 показана схема регистрации, транспортировки и обработки регистрируемой информации. Аппаратура записи внутристанционной информации (АЗ ВСИ) обеспечивает накопление регистрируемой информации в буферных блоках памяти и построение формуляров заданного формата, и их выдачу на магнитный регистратор (МР) через устройство сопряжения. Формуляр регистрации на МР показан в табл. 1.1. Информация доставляется к месту обработки на МЛ. В дальнейшем производится её первичная обработка на ПЭВМ. В процессе первичной обработки создаются текстовые файлы стандартного формата «*.txt» в соответствии с типом формуляра. Далее производится обработка и анализ полученных текстовых файлов на рабочей ПЭВМ.

Таблица 1.1
Общий вид формуляров

11р

Начало кадра

10р

Конец кадра

Начало слова

8 р 

1

0

1

Первое полуслово

Тип формуляра

0

0

0

Второе полуслово

Количество слов

0

0

1

Зарегистрированная информация

0

1

0

1.5. Описание используемой информации ВСИ

Для решения задач, указанных в пункте 1.1 достаточно использовать информацию, передаваемую из ЦВМ «А» по каналу 7 в АПД:

  •  сообщения об обнаруженных отметках в сферической системе координат;
  •  сообщения, содержащие информацию о режимах работы и характеристиках обзора;
  •  сообщения о сопровождаемых трассах в прямоугольной географической системе координат.

После первичной обработки ВСИ эта информация содержится в формулярах «7a.txt», «7b.txt», «7h.txt» соответственно. Вид формуляров 7А, 7B и 7H представлен соответственно на рис. 1.3–1.5.

Рис. 1.3. Вид формуляра 7A.

Рис. 1.4. Вид формуляра 7B.

Рис. 1.5. Вид формуляра 7H.

Описание соответствия номеров используемых параметров их названиям:

1. Протокол 7A:

  •  параметр ТСЕВ — текущее время, момент обнаружения отметки, сек.;
  •  параметр 46 —  — азимут, град.;
  •  параметр 47 —  — угол места, град.;
  •  параметр 49 — D — дальность, км.;

2. Протокол 7B:

  •  параметр ТСЕВ — текущее время, начала/конца просмотра сектора, сек.;
  •  параметр 73 НС — азимут левой границы сектора, град.;
  •  параметр 74 КС — азимут правой границы сектора, град.;

3. Протокол 7H:

  •  параметр ТСЕВ — текущее время, сек.;
  •  параметр 27 — Vx — проекция вектора скорости на ось X, м/c;
  •  параметр 28 — — географическая координата X, м/с;
  •  параметр 29 — Vy — проекция вектора скорости на ось Y, м/c;
  •  параметр 30 — — географическая координата Y, м/с;
  •  параметр 31 — Vh — проекция вектора скорости на ось H, м/c;
  •  параметр 32 — — географическая координата H, м/с;


2. Методика проведения испытаний

2.1. Условия проведения испытаний

При проведении испытаний РЛС УВД работает при положении нормали ФАР . Размер сектора регулярного обзора .

В процессе облетов самолет совершает полет на высоте > 12 км радиальным курсом на РЛС и от РЛС с дальним разворотом на , ближним разворотом не ближе 180 км и по параметру. При полете самолета по параметру удаления от РЛС должно составлять 350–400 км. Развороты производятся на азимутах  по отношению к нормали ФАР АП.

Информация регистрируется на ВСИ, подключенной к РЛС УВД. Регистрация выходной информации производится после включения передающего устройства.

При проведении эксперимента действия расчёта определяются инструкцией по эксплуатации [9].

Оценка ведется для полета самолета на приближение, удаление и по параметру раздельно. Значения координат и скоростей выдаются с РЛС УВД с темпом 1 Гц. Значения координат и скоростей, измеренные РЛС УВД, сравниваются с эталонными.

2.2. Оценка дальности обнаружения и рубежей завязки трасс РЛС УВД

Оценка дальности обнаружения крупноразмерных барражирующих самолетов с ЭПР σ≥20 м2 при вероятности обнаружения P ≥ 0,5 и при вероятности завязки трассы самолета P≥0,7.

Оценка дальности обнаружения и рубежей завязки трасс производится раздельно для полетов самолета на приближение, удаление и при полете по параметру. С целью увеличения количества попыток завязки трассы воздушного объекта в процессе одного эксперимента допускается следующая методика проведения испытаний:

После каждой завязки трассы и начала ее сопровождения (появление отметки трассы с её номером на экране ИО–1) трасса сбрасывается через 50 – 60 секунд сопровождения путём бланкирования области пространства, через которое проходит  трасса. После сброса трассы с сопровождения (исчезновения отметки трассы на экране ИО–1) бланк снимается, производится завязка трассы и т.д.

Обработка материалов ВСИ производится по 10 км участкам дальности. Результаты объединяются и усредняются по отдельным полетам.

Вероятность обнаружения ВО вычисляется по формуле , где  — количество обнаружений ВО за время ее пролета в оцениваемом 10км участке дальности;  — количество обзоров сектора за время пролета ВО в оцениваемом 10–км участке дальности.

Вероятность завязки трассы ВО вычисляется по формуле , для каждого 10–км участка дальности, где  — количество удачных попыток завязки трассы ВО при L попытках завязки на оцениваемом 10–км участке полета ВО.;  — общее количество попыток завязки трассы ВО на оцениваемом 10–км участке полета цели.

По результатам обработки информации составляется протокол, содержащий вероятностные оценки полученных значений дальности обнаружения ВО и дальности завязки трассы при заданных вероятностях (Добн, Дз.тр).

2.3. Определение количества ложных отметок

Целью испытаний является оценка количества ложных отметок.

Среднее число появления ложных отметок :

, где

 — время наблюдения в j-ом эксперименте;

 — число ложных отметок, зафиксированных в j-ом эксперименте.

По результатам обработки полученной информации составляется протокол, содержащий значение  по данной работе.

По результатам обработки информации с ВСИ фиксируется:

  •  Время обзора сектора РО;
  •  Количество ложных отметок за обзор ;
  •  Время наблюдения ;
  •  Параметры ложных отметок: , , .

2.4. Оценка точности координатной информации на выходе РЛС УВД

Оценка точности координатной информации на выходе РЛС УВД при сопровождении ВО. Оцениваются величины систематических и случайных ошибок определения координат X, Y, H и скоростей , ,  сопровождаемых ВО.

Оценка величин систематических и случайных ошибок координат и скоростей производятся раздельно для полета самолета на приближение, удаление и при полете по параметру. По результатам каждого испытания ВСИ представляет распечатку выходной информации РЛС в установленной форме.

По результатам обработки информации по каждой работе составляется протокол, содержащий значения величин систематических и случайных ошибок определения координат и скоростей сопровождаемого ВО.

Систематическая ошибка по координате X равна:

, где

N — количество отсчетов,

 — координата X, полученная от РЛС УВД,

 — эталонная координата X.

Среднеквадратическое отклонение по координате X  равно:

, где

Ошибки по координатам Y, H и скоростям , ,  определяются аналогично.

По измеренным значениям координат X, Y, H и скоростей , ,  методом наименьших квадратов строятся эталонные трассы .

2.5. Метод наименьших квадратов

Суть метода наименьших квадратов заключается в аппроксимации линии по набору точек таким образом, чтобы среднеквадратические отклонения аппроксимируемых точек от линии были минимальны. Для этого необходимо решить следующее уравнение:

,     (2.1)

где a и b — неизвестные коэффициенты.

Где «x» — параметр-время, а «y» — изменяемый параметр, который может принимать значения путевых координат и скоростей.

Для нахождения коэффициентов необходимо найти минимум целевой функции . Минимум целевой функции (2.1) достигается в значениях:

По аппроксимированной прямой находим СКО по формуле

,

где y — параметр.


3. Описание программного пакета

3.1. Общий подход к решению

Для решения поставленной задачи необходимо применение средств вычислительной техники и математических методов для освобождения человека частично или полностью от непосредственного участия в процессе получения, преобразования и передачи информации. Использование компьютера даёт возможность автоматизировать этот процесс, что приводит к повышению производительности труда, улучшению качества исполнения работ и освобождению человека от рутинной работы.

Поставленную задачу можно разбить на отдельные подзадачи, по которым можно провести автоматизацию, предоставляя человеку роль эксперта. Каждую подзадачу целесообразно свести к отдельному программному модулю, а связь между модулями оформить в виде системных соглашений.

Используя данный метод, была выбрана концепция программирования «сверху вниз» [2]. Сначала необходимо определить общую схему решения задачи, а затем разбить ее на отдельные подзадачи. Последовательно детализируя выбранный уровень, углубляемся на более низкий, пока не решим задачу в целом. Таким образом, на этапе проектирования мы сможем максимально упростить процесс написания и тестирования каждого модуля, а на этапе применения обеспечить минимальные требования к техническим средствам и интуитивное понимание оператором всех действий программы.

3.2. Требования к аппаратным средствам и программному обеспечению

Для корректной работы программы требуются следующая минимальная конфигурация персонального компьютера:

  •  тип процессора не ниже Pentium;
  •  видеоадаптер SVGA с видеопамятью не менее 4 Мбайт;
  •  оперативная память не менее 64 Мбайт;
  •  манипулятор типа мышь.

На ПЭВМ должна быть установлена операционная система не ниже Windows’98, пакет прикладных программ Microsoft Office 2000 или более новый, язык высокого уровня Perl версии 5.6.1 или новее.

3.3. Обоснование выбора языка программирования

Языки программирования нельзя сравнивать между собой вне связи с решаемыми задачами. Ведь каждый язык изначально проектировался для максимально эффективного решения какого-то своего класса задач. Язык Фортран (Fortran FORmula TRANslator — транслятор формул) — для численных вычислений, язык Лисп (Lisp LISt Processing – обработка списков) — для решения задач искусственного интеллекта, Пролог (Prolog PRO LOGic) — для программирования в терминах логики и т.д.

Я остановил свой выбор на языке Perl, так как он изначально проектировался для обработки текстовых файлов и создания отчетов [11–13]. Аббревиатура Perl расшифровывается как Practical Extraction and Reporting Language (язык извлечения и составления отчетов).

Perl сочетает в себе функции компилятора и интерпретатора. Перед выполнением программы (иногда их называют «скриптами») её текст интерпретируется в байт-код, который затем выполняется.

Достоинствами языка Perl являются:

  •  богатые встроенные возможности работы с текстовыми данными;
  •  автоматическое преобразование типов;
  •  удобная работа с файлами;
  •  наличие ассоциативных массивов (т.н. «хэшей»);
  •  кроссплатформенность;
  •  продуманная структура синтаксиса, исключающая большинство случайных ошибок.

3.4. Организация программ

На рис. 3.1 приведена схема состава программного обеспечения и используемые файлы. Двойные стрелки означают потоки данных, одинарные — потоки управления (запуск расчетных программ с передачей параметров через ключи командной строки).


                                                                                                                                              

 — поток данных

 — поток управления

Рис. 3.1. Блок–схема программного пакета.



4. Описание функционирования программ

4.1. Программа probability_of_detection

Программа выполняет расчет вероятности обнаружения. Программа написана на языке высокого уровня (ЯВУ) Perl. В программе выполняется описанная ниже последовательность операторов. В массив 7H читаем файл-протокол 7H.txt, содержащий трассовые отметки, вычисляя одновременно дальность в километрах из X, Y, H по формуле .

Читаем файл-протокол 7A.txt, содержащий отметки обнаружения из секторов регулярного обзора и секторов сопровождения, при этом отметки, полученные в секторах сопровождения, исключаются, и в массив 7A попадает информация только об отметках из регулярного обзора. Для каждой отметки из массива 7A просматриваем массив 7H и ищем в нем отметки трассы вблизи рассматриваемой отметки из 7A. Если найдена хотя бы одна отметка из массива 7H, то рассматриваемая отметка из 7A.txt заносится в массив 7A или игнорируется в противном случае. В результате обработки в массиве 7A содержатся только такие отметки из регулярного обзора, с которыми соотносятся уже сопровождаемые трассы.

В массив 7B читаем файл-протокол 7B.txt, в котором содержится информация о произведенных регулярных обзорах пространства. В результате в массиве 7B фиксируются моменты начала очередного цикла регулярного обзора.

Обработка информации производится по десятикилометровым участкам на дальностях от 200 до 400 км.

Для каждого десятикилометрового участка выделяются соответствующие ему отметки из массива 7A во временный подмассив. Если такие отметки отсутствуют, то в результирующий массив заносится запись о необнаружении на данном десятикилометровом участке.

Если найдена хотя бы одна точка, то рассчитываем вероятность обнаружения по следующей методике:

  •  полученный набор точек делится на части, используя порог в 50 сек.;
  •  для каждого участка определяется количество регулярных обзоров пространства, произведенных от первой точки участка, до последней;
  •  аналогичные действия производятся для всех выделенных частей в данном десятикилометровом участке;
  •  вероятность обнаружения на рассматриваемом десятикилометровом участке определяется как отношение суммы обнаруженных отметок регулярного обзора (количество элементов временного подмассива) к количеству регулярных обзоров пространства [8];
  •  полученная вероятность обнаружения заносится в результирующий массив.

Ключи командной строки:

  •  --7A, --7B, --7H — путь к входным текстовым файлам с соответствующими протоколами;
  •  --output-file — путь к файлу с отчетом;
  •  --limit-from, --limit-to — ограничение по дальности. Необязательные параметры;
  •  --step — шаг по дальности;
  •  --verbose, -v — выводить отладочную информацию Необязательный параметр.

4.2. Программа probability_of_airway

Программа выполняет расчет вероятности завязки трассы. Программа написана на ЯВУ Perl.

Производится чтение файлов 7A.txt и 7H.txt в соответствующие именам протоколов массивы, данные из 7A.txt попадают в два различных массива — отметки РО в массив 7A, а повторные обращения — в массив 7Aroz. При размещении данных в массив 7H производится вычисление дальности в километрах из X, Y, H по формуле .

Обработка производится по массиву 7A.

Для каждой отметки производим следующие проверки:

  •  в прямоугольнике (; ) нет ни одной отметки из массива 7H — убеждаемся, что текущая отметка РО принадлежит вновь завязываемой трассе, а не уже сопровождаемой;
  •  по дальности от D до D + 0,3 км и по времени от ТСЕВ до ТСЕВ + 3 с должна существовать хотя бы одна отметка из массива 7Aroz.

Если выполнены описанные выше условия, то производится попытка завязки новой трассы. Успех или неудача завязки определяется по следующему условию:

  •  в прямоугольнике по дальности D = 1,0 км и по времени от ТСЕВ + 3 с до ТСЕВ + 5 с должна быть хотя бы одна отметка из массива 7H.

Если описанное выше условие выполнено, то счетчик удачных попыток (s) увеличивается на единицу, в противном случае увеличиваем на единицу счетчик неудачных попыток (f) завязки трассы.

Вероятность завязки трассы вычисляется следующим образом [8]:

  •   — служебное значение, показывающее, что попыток завязки трасс на обрабатываемом участке не зарегистрировано;
  •   — если на обрабатываемом участке дальности зарегистрирована хотя бы одна попытка завязки трассы.

Ключи командной строки:

  •  --7A, --7H — путь к входным текстовым файлам с соответствующими протоколами;
  •  --output-file — путь к файлу с отчетом;
  •  --limit-from, --limit-to — ограничение по дальности. Необязательные параметры;
  •  --verbose, -v — выводить отладочную информацию Необязательный параметр.

4.3. Программа spurious_marks_quantity

Программа выполняет расчет среднего числа ложных отметок в единицу времени. Программа написана на ЯВУ Perl.

Производится чтение файлов 7A.txt, 7B.txt, 7H.txt в соответствующие именам протоколов массивы, причем в массив 7A попадают только те отметки из 7A.txt, вблизи которых нет ни одной отметки из протокола 7H.txt. То есть массив 7А содержит вновь обнаруженные (не сопровождаемые) отметки регулярного обзора.

Среднее число ложных отметок в единицу времени рассчитывается как отношение количества отметок в массиве 7A к интервалу времени, в течение которого производились измерения .

Ключи командной строки:

  •  --7A, --7B, --7H — путь к входным текстовым файлам с соответствующими протоколами;
  •  --output-file — путь к файлу с отчетом;
  •  --limit-from, --limit-to — ограничение по дальности. Необязательные параметры;
  •  --verbose, -v — выводить отладочную информацию. Необязательный параметр;

4.4. Программа protocol_processing

Программа реализует преобразование текстовых файлов 7A.txt и 7H.txt в формат Comma Separated Values (CSV), а так же  опциональную фильтрацию файла 7H.txt. Подразумевается, что в качестве десятичного разделителя в текстовых файлах используется точка.

Ключи командной строки:

  •  --input-file — путь к входному файлу в формате *.txt;
  •  --output-file — путь к выходному файлу в формате *.csv;
  •  --decimal-separator — десятичный разделитель в выходном файле;
  •  --file-format — задает тип входного файла. Список разрешенных значений: 7A, 7H;
  •  --filter-100 — помещать в выходной файл только те отметки из 7A.txt, для которых параметр NСЕК = 100. Необязательный параметр, учитывается только при обработке протокола 7A;
  •  --limit-from, --limit-to — ограничения по дальности. Необязательные параметры;
  •  --filterX1, --filterY1 — координаты первой точки фильтра. Необязательные параметры;
  •  --filterX2, --filterY2 — координаты второй точки фильтра. Необязательные параметры;
  •  --filter-d — «дельта» по дальности фильтра Необязательный параметр.

4.5. Программная оболочка SKO

Оболочка предназначена для автоматизации расчета среднеквадратических ошибок (СКО) прямоугольных координат трасс самолетов.

Запуск оболочки осуществляется открытием файла SKO.xls в программе Microsoft Excel. После запуска оболочка предлагает выбрать файл 7H.txt, подлежащий обработке (рис. 4.1).

Рис. 4.1. Диалог выбора файла для обработки

После нажатия на кнопку «Загрузить» указанный файл загружается в память ПЭВМ и выводится для предпросмотра пользователю (рис. 4.2). При загрузке файла имеется возможность произвести грубую фильтрацию по дальности.

Рис. 4.2. Предварительный просмотр загруженного файла.

Так как метод наименьших квадратов работает только на прямолинейных участках, то в оболочке предусмотрена процедура выделения таких участков с наложением фильтра на данные.

После нажатия на кнопку «Задать фильтр» пользователю выдается сообщение о начале установки фильтра с указаниями по выбору точек (рис. 4.3).

Рис. 4.3. Диалоговое окно «Начало установки фильтра».

После этого пользователь мышью указывает на диаграмме с данными две точки — начала и конца фильтра. После выбора каждой точки запрашивается подтверждение с указанием координат выбранной точки (рис. 4.4).

Рис. 4.4. Диалоговое окно «Подтверждение выбора точки для фильтра».

После окончания установки координат обеих точек фильтра пользователю выводится информационное сообщение, подтверждающее окончание установки фильтра (рис. 4.5).

Рис. 4.5. Диалоговое окно «Установка фильтра окончена».

Далее границы фильтра накладываются на данные предпросмотра (рис. 4.6) и пользователь имеет возможность изменить ширину фильтра по дальности выделенного участка данных кнопками “+” и ““ грубо (с шагом 1 км.) и кнопками “+” и ““ точно (с шагом 0,1 км.).

Рис. 4.6. Отображение фильтруемого участка на данных.

Если фильтр был наложен ошибочно, то имеется возможность переустановить его перед применением последовательным нажатием кнопок «Сбросить фильтр» и «Задать фильтр». Фильтрация данных производится нажатием кнопки «Применить фильтр», при этом из координат наложенного фильтра формируется командная строка и запускается программа protocol_filtering, написанная на ЯВУ Perl. Передача данных от программы protocol_filtering оболочке SKO производится посредством временного файла, путь к которому указывается в конфигурации оболочки (модуль Constants). После фильтрации временный файл открывается оболочкой SKO и выводится на просмотр пользователю (рис. 4.7). Имеется возможность неоднократно наложить фильтр повторно с большей точностью, т.к. отфильтрованные данные выводятся в увеличенном масштабе.

Рис. 4.7. Отфильтрованный участок данных после применения фильтра.

Расчет среднеквадратических ошибок производится при нажатии на кнопку «Расчет СКО», причем расчет производится по отображаемым на графике предпросмотра данным (рис. 4.7). Иными словами, заданный, но не примененный фильтр при расчете не учитывается. После окончания расчета результаты выводятся в отдельном диалоговом окне (рис. 4.8).

Рис. 4.8. Диалоговое окно с результатами расчета СКО.

Из данного диалогового окна рассчитанные значения могут быть скопированы путем нажатия стандартной комбинации клавиш Ctrl+C в системный буфер обмена Windows и использованы для вставки в другую программу, например, в Microsoft Word.

Завершение работы программы происходит после нажатия кнопки «Выход».

4.6. Программная оболочка Pro

Программа Pro предназначена для проведения следующих расчетов:

  •  вероятности обнаружения;
  •  вероятность завязки и сопровождения трассы;
  •  количество ложных отметок в единицу времени.

Запуск оболочки осуществляется открытием файла Pro.xls в программе Microsoft Excel. После запуска выводится форма выбора файла для предпросмотра (рис. 4.9).

Рис. 4.9. Форма выбора файла для предпросмотра.

После выбора файла 7A.txt он загружается для предварительного просмотра оператору (рис. 4.10).

Рис. 4.10. Предварительный просмотр файла 7A.txt.

Режим расчета выбирается нажатием на кнопку «Расчеты», после чего оператору предлагается выбрать тип расчета, параметры расчета и файлы 7A.txt, 7B.txt и 7H.txt, в зависимости от расчета (рис. 4.11, 4.12).

Рис. 4.11. Выбор типа и параметров расчета.

Рис. 4.12. Расчет «Вероятность обнаружения».

После нажатия на кнопку «Расчет» в зависимости от выбранного типа расчета формируется командная строка и запускается одна из следующих программ: probability_of_airway, probability_of_detection и spurious_marks_quantity. После завершения расчета результат помещается на лист “cache” (рис. 4.16) и выводится для наглядности в отдельном окне (рис. 4.13–15). С листа “cache” данные могут быть скопированы через системный буфер обмена в другую программу, например, в Microsoft Word.

Рис. 4.13. Результат расчета «Вероятность обнаружения».

Рис. 4.14. Результат расчета «Вероятность завязки трассы».

Рис. 4.15. Результат расчета «Среднее количество отметок в единицу времени».

Рис. 4.16. Результаты выполнения расчетных программ на листе “cache”.

Завершение работы программы происходит после нажатия кнопки «Выход».


5. Экономическая часть

5.1. Бизнес-план

5.1.1. Проектируемый продукт

Проектируемый продукт представляет комплекс программ, предназначенных для обработки результатов измерений на ЭВМ. Пользователями данного продукта могут являться как непосредственно специалисты-предметники, так и программисты.

5.1.2. Конкуренция

Разрабатываемый программный продукт является не тиражируемой ОКР и работа финансируется из госбюджета. Всеми правами на данный ПП обладает заказчик, которому передаются все результаты опытной разработки. Учитывая специфику данного ОКР, оценка конкурентоспособности к нему не применима.

5.1.3. Политика определения цен на проектируемый продукт

Цена на изделие определяется на основе калькуляции затрат на изготовление, важности разработки. При дальнейшей поддержке продукта возможен выпуск более дешевых модулей.

5.1.4. Организация послепродажного обслуживания

В планах присутствует дальнейшая разработка данного проекта. Это делает возможным поддержку послепродажного обслуживания. В качестве возможных элементов рассматриваются возможные выпуски модифицированных модулей, дополняющих основной или выпуск новых версий.

5.1.5. План производства

Разработка находится в начальной стадии процесса производства, включающего в себя следующие этапы:

  •  постановка задачи;
  •  утверждение технического задания;
  •  разработка технических предложений;
  •  разработка алгоритмов, схем, модулей;
  •  тестирование, отладка;
  •  создание и сдача технической документации.

5.1.6. Динамика издержек на перспективу (затраты)

Дальнейшее совершенствование продукции будет происходить по ходу его использования и на базовых модулях, что экономит расходы. Также возможно улучшение методов моделирования.

5.1.7. Организационный план

В процессе проектирования будут задействованы начальник отдела, специалист по знаниям, инженер-программист.

5.1.8. Юридический план

Для защиты авторских прав и несанкционированного доступа используется законодательство РФ от 9 июля 1993 г. №5351-1 «ЗАКОН ОБ АВТОРСКОМ ПРАВЕ И СМЕЖНЫХ ПРАВАХ».

5.1.9. Оценка риска и страхование

Рискованность созданного продукта определяется заказчиком. В зависимости от оценки риска делаются выводы о страховании продукта.

5.2. Калькуляция темы. Стандартная схема расчета

Стандартная схема расчета калькуляции темы осуществляется по калькуляционным статьям расходов. Затраты на различные расходные материалы представлены в табл. 5.1.

Таблица 5.1
Затраты на расходные материалы

Наименование материала

Расход (шт)

Цена (руб/шт)

Сумма (руб)

1

Канцтовары

250

2

Упаковка бумаги для принтера (формат А4, 500 лист)

1

160

160

3

Тонер и фотокатридж для принтера

1

1800

1800

4

CD-R (700 Mb)

10

16

160

5

CD-RW (700 Mb)

1

40

40

Итого:

2410

Основная заработная плата непосредственных исполнителей работ по этапам выполнения работ приведена в табл. 5.2.

Трудовая неделя в моём случае состоит из 5 рабочих дней. Таким образом мы можем принять, что месячный оклад определен для каждого отдельного исполнителя из расчета оплаты 23 рабочих дней.

Следовательно, затраты по основной зарплате на k-ю должность исполнителей для конкретного этапа работ  равны:

(1) , где

 — общие затраты времени на работу всех исполнителей i-ой должности на данном этапе работ;

 — месячный оклад k-ой должности.


Таблица 5.2
Основная заработная плата по этапам

Наименование этапа

Непосредственные исполнители работ

Затраты времени (дни)

Месячный оклад 

(руб)

Затраты по основной зарплате (руб)

Должности исполнителей

Количество человек

Одного работника

Общие

1

Подготовительный

Начальник отдела

1

7

7

9 000

2739

Специалист по знаниям

1

14

14

8 000

4870

2

Основной

Инженер-программист

1

75

75

6 500

21196

3

Сдача темы

Начальник отдела

1

7

7

9 000

2739

Итого:

31544

Таблица 5.3
Накладные расходы

Наименование вида расходов

Норматив в процентах от основной зарплаты

1

Эксплуатационные расходы на содержание производственных помещений (в том числе на электроэнергию, отопление, водоснабжение, услуги связи, ремонт помещений и т.д.)

65

2

Затраты на содержание службы охраны

32

3

Затраты на содержание административно-управленческого персонала

9

4

Затраты на содержание общетехнических служб (служба стандартов, научно- техническая библиотека, компьютерный стенд для отладки технологий)

15

5

Амортизационные отчисления

4

6

Затраты на мероприятия по охране труда, пожарной безопасности и производственной санитарии

7

7

Налоги и сборы в бюджет (налоги на автодороги, имущество, на содержание жилищного фонда, сбор на нужды образовательных учреждений)

3

Итого:

135


Таким образом мы получили, что размер основной заработной платы составляет  [руб]. Дополнительная заработная плата непосредственных исполнителей работ  составляет 22 % от основной заработной платы. Следовательно, мы получаем:

[руб] (2)

Фонд оплаты труда  представляет собой сумму основной и дополнительной заработных плат:

[руб] (3)

Отчисления в фонд социального страхования составляют 35.6% от . Поэтому мы имеем:

[руб] (4)

Накладные расходы  подробно приведены в табл. 5.3 и составляют в сумме 135 % от величины основной заработной платы , следовательно:

[руб] (5)

Прочие расходы  в нашем случае состоят из расходов на машинное время. Стоимость одного часа машинного времени составляет 27 [руб]. Общее количество часов машинного времени определим из следующих соображений. Для каждого из непосредственных исполнителей работ установлен 8-ми часовой рабочий день. Все работы исполнители выполняют за компьютером. Общие временные затраты на выполнение работ составляют 103 дня. Таким образом мы получаем:

[руб] (6)

Таким образом мы провели калькуляцию темы и получили результат, приведенный в табл. 5.4.

Таблица 5.4
Калькуляция темы

Наименование статьи расходов

Затраты (руб)

1

Расходные материалы

2410

2

Основная заработная плата

31544

3

Дополнительная заработная плата

6940

4

Отчисления в фонд социального страхования

13700

5

Накладные расходы

42584

6

Прочие расходы

22248

Итого:

119426

Из приведенной таблицы видно, что по стандартной схеме расчета калькуляции темы полная себестоимость программного продукта  равна 119 426 [руб].

Необходимо отметить, что при стандартной схеме расчета полной себестоимости путем калькулирования расходов не учитывается специфика труда инженеров-программистов. Она учитывается если применить метод оценки по нормативным коэффициентам.

5.3. Метод оценки по нормативным коэффициентам.
Определение полной себестоимости программного продукта

Основной причиной применения данного метода расчета затрат на создание программного продукта является необходимость учета специфики труда инженера-программиста, который отличается от труда в материальном производстве. Основой для расчетов с помощью этого метода является объем исходного кода программы. Затраты рассматриваются как функция объема с использованием совокупности нормативных коэффициентов. Достоинство данного метода состоит в том, что он позволяет получить достаточно точные оценки затрат.

Для прогнозирования общего объема исходного кода программного продукта применяют метод, основанный на анализе всех алгоритмов и программ, входящих в его состав. Уравнение длины программы имеет вид:

, где    (5.1)

 — длина исходного кода программы в операторах (объем программы);

 — число простых операторов в программе;

 — число операндов в программе.

Для программного продукта, рассматриваемого в данном дипломном проекте, указанные коэффициенты определены приблизительно методом прямого подсчета по исходным кодам всех программ, входящих в состав программного продукта, и равны  и . Таким образом на основании формулы (5.1) получаем следующий объем исходного кода программного продукта:

   (5.2)

Стоимость одного оператора определяется по следующей формуле:

, где      (5.3)

 — средняя стоимость одного дня работы инженера-программиста;

 — минимальная производительность труда при разработке программного продукта.

В нашем случае минимальную производительность труда можно принять равной двенадцати написанным, отлаженным и задокументированным операторам в день, т. Е. .

Среднюю стоимость одного дня работы инженера-программиста мы можем определить следующим образом:

[руб], где    (5.4)

 — месячный оклад инженера-программиста, [руб];

 — установленное среднее число рабочих дней в месяце.

Следовательно, на основе формулы (5.3) мы можем рассчитать стоимость одного оператора программы:

[руб]     (5.5)

Номинальная оценка разрабатываемого программного продукта как функция объема определяется произведением стоимости одного оператора и длины исходного кода программы в операторах:

    (5.6)

Тогда, на основе формулы (5.6) и ранее полученных данных, мы получаем следующую номинальную оценку программного продукта:

[руб]   (5.7)

Для вычисления полной себестоимости разработки программного продукта используется следующая формула:

, где    (5.8)

 — коэффициент, учитывающий влияние языка программирования;

 — коэффициент, учитывающий требования к качеству программного продукта;

 — коэффициент, учитывающий сложность программного продукта;

 — коэффициент, учитывающий производительность труда инженера-программиста.

Коэффициент сложности программного продукта определяется в зависимости от коэффициента сложности алгоритмов, использованных при его создании, степени их новизны и вида используемой информации.

Алгоритмы можно условно разделить на три группы:

  •  алгоритмы оптимизации и моделирования ();
  •  алгоритмы учета, отчетности, статистики и поиска ();
  •  алгоритмы, реализующие стандартные методы ().

Коэффициент, учитывающий производительность труда инженера-программиста, показывает, во сколько раз может быть снижена трудоемкость разработки программного продукта при повышении производительности труда разработчика. Производительность труда инженера-программиста оценивается количеством отлаженных операторов, приходящихся на единицу времени.

Производительность инженера-программиста в процессе создания программного продукта зависит от многих факторов, таких как сложность задачи, ее новизна, обеспеченность разработчика техническими средствами, а также от организации и условий труда. Поскольку большинство факторов, влияющих на производительность труда инженеров-программистов, не поддается строгой количественной оценке, на практике она определяется либо экспертным путем, либо вычисляется после завершения работы на основании двух показателей – объема проведенных работ в операторах и фактически затраченного времени на выполнение этого объема работ.

Кроме того, на производительность труда инженеров-программистов влияет их квалификация, а также размер разрабатываемого программного продукта.

Квалификация разработчика программного продукта определяется:

  •  в зависимости от стажа работы в области программирования (до двух лет работы – ; 2 – 3 года – ; 3 – 5 лет – ; до 7 лет – ; свыше 7 лет – );
  •  в зависимости от заработной платы. Некоторые предприятия оценивают квалификацию разработчика в зависимости от зарплаты. В этом случае зарплата выступает в роли рычага повышения производительности труда. Следует учитывать, что зарплата инженера-программиста и производительность труда не всегда находятся в прямой зависимости.

Размер разрабатываемого программного продукта оказывает существенное влияние на производительность труда инженера-программиста. Наиболее низкая производительность труда отмечается при разработке больших программных комплексов. По оценкам экспертов увеличение размера разрабатываемой программы в 10 раз вызывает снижение производительности труда разработчика приблизительно в 1.5 раза.

Используя приведенные выше соображения, для программного продукта, рассматриваемого в данном дипломном проекте, получаем:

  •   (снижение трудоемкости за счет использования языков высокого уровня);
  •   (задача сопровождения не ставится, следовательно, требования к качеству продукции не учитываются);
  •   (использование алгоритмов учета, отчетности, статистики, поиска);
  •   (учет стажа в программировании – 4 года).

На основе формулы (5.8) и полученных данных мы можем рассчитать значение полной себестоимости разработки программного продукта:

[руб] (5.9)

5.4. Расчёт цены программного продукта

Разрабатываемый программный продукт создаётся на основе технического задания на дипломное проектирование и является не тиражируемым. Работа финансируется из госбюджета. Поэтому в расчёт цены программного продукта не включаем НДС. Так как не тиражируемые разработки, финансируемые из госбюджета, не облагаются налогом.

Цена программного продукта определяется по формуле:

, где

 — цена программного продукта

 — себестоимость программного продукта

 — норма прибыли

Прибыль представляет собой 90,08 % от ФОТ

Рассчитаем цену для  , посчитанной для стандартной схемы расчета и посчитанной методом оценки по нормативным коэффициентам.

  •  Стандартная схема
    [руб]
    [руб]
    [руб]
  •  Метод оценки по нормативным коэффициентам
    [руб]
    [руб]
    [руб].

Цена, рассчитанная в пункте 5.3 по методу нормативных коэффициентов, является более правильной, так как в нём учитывается труд программиста.

5.5. Технико-экономическое обоснование целесообразности разработки

Понятие эффективности вычислительных средств (технических или программных средств) является комплексным и характеризуется целым рядом параметров, описывающих эффективность как вычислительных средств в целом, так и программных средств конкретно. Если говорить применимо к программным продуктам, то они представляют собой особый товар, имеющий ряд характерных черт и особенностей, в числе которых – специфика труда по созданию программного продукта, определение цены на него, обоснование затрат на разработку и т.п. Совокупные затраты на разработку программного продукта и дальнейшую их эксплуатацию значительны, поэтому требуется тщательный анализ качества, эффективности создания и использования программных средств.

Объективно положение осложнено неопределенностью и сложностью изменения характеристик анализируемых объектов — программных средств. Широкий спектр содержательных показателей, которые с различных сторон характеризуют эти объекты, и невысокая достоверность оценки их значений способствует возрастанию дисперсии при попытке описать создаваемые или используемые программные средства их обобщенной характеристикой.

Во многих случаях эффективность сложной новой техники и технологий в процессе проектирования приходится прогнозировать в условиях неопределенности целей, различных факторов и характеристик. Обычно недостаточно известны перспективы внедрения и эксплуатации объектов разработки новых изделий. Трудно формализуемыми являются размеры и структура систем, взаимодействие основных подсистем, цели и критерии оценки эффективности их функционирования и т.д.

Значительные неопределенности содержатся также в технико-экономических характеристиках технологий, а так же средств автоматизации проектирования и изготовления изделий.

В результате экономический анализ и прогнозы характеризуются значительным разбросом рассчитываемых показателей. Значительные трудности развития экономики программных средств обусловлены недостаточной регламентированностью, сложностью и в ряде случаев неопределенностью технологических процессов разработки, производства и применения программ для ЭВМ. При разработке программных средств сложно переплетаются содержание, этапы и распределение работ, возможен ряд возвратов на более ранние технологические этапы в процессе создания компонент программных средств, этапы имеют размытые границы начала и завершения. в данной экономической части дипломного проекта необходимо затронуть вопрос об экономической эффективности баз данных

Базы данных, представленные в форме программных средств, могут иметь разные способы реализации. Они находятся в прямой зависимости от сложности и стоимости поддержки данных. в настоящее время базы данных содержат большие объемы информации, на основе которых работает большое количество прикладных программ.

Роль и значение баз данных разделяются на два направления: по отношению к прикладным программам и по отношению собственно к данным.

По отношению к прикладным программам роль баз данных в основном проявляется в том, что они:

  •  представляют систематизированную основу для обработки данных
  •  является интерфейсом для прикладных программ и т.д.
  •  По отношению к данным базы данных являются средством:
  •  обеспечения интеграции данных
  •  снижение стоимости хранения данных и повышения эффективности процесса сборки данных
  •  обеспечение преемственного накопления данных

Базы данных, используемые в рассматриваемом дипломном проекте, можно классифицировать как органическую совокупность функциональных баз данных и информационно-поисковых систем — производственные базы данных. Самые важные отличительные черты производственных баз данных — экономия человеческих ресурсов и времени.

В качестве показателя экономического эффекта применяем:

, где

- прибыль

- затраты

рассчитываем по формуле:

, где

kколичество лет, в течении которых будет эксплуатироваться данная система.

 

[руб]

Примем k равным 3, т.е. программный продукт будет использоваться в течении 3-х лет.

Тогда:

[руб]

[руб]

[руб]

5.6. Выводы по экономической части

Затраты на создание ПП (по методу нормативных коэффициентов) составили [руб]

Себестоимость ПП (расчёт стандартным способом): 119 426[руб].

Цена ПП:  [руб]

Учитывая специфику ПП, оценка конкурентоспособности к нему не применима. Разработка данного ПП целесообразна.


6. Охрана труда

6.1. Введение

Электрические установки, к которым относится практически все оборудование ЭВМ, представляют для человека большую потенциальную опасность, так как в процессе эксплуатации или проведения профилактических работ человек может коснуться частей, находящихся под напряжением. Реакция человека на электрический ток возникает лишь при протекании последнего через тело человека.

Рассматриваемая электроустановка (ЭВМ) находится в производственном помещении без повышенной опасности и запитывается от электросети напряжением 200 в с глухозаземленной нейтралью. В таких сетях защита персонала от поражения электрическим током осуществляется применением защитного зануления.

6.2. Проектирование зануления

Занулением называется преднамеренное электрическое соединение с нулевым защитным проводником металлических нетоковедущих частей, которые могут оказаться под напряжением [3].

Защитный эффект зануления заключается в уменьшении длительности замыкания на корпус, а следовательно, в сокращении времени воздействия электрического тока на человека. Это достигается соединением металлических корпусов электроустановки с нулевым проводом питающего трансформатора. Такое соединение превращает любое замыкание на корпус в короткое замыкание, при котором срабатывает максимальная токовая защита, отключая поврежденную электроустановку от сети. В моем случае такой защитой является автоматический выключатель.

Для питания электрооборудования от распределительного щита используется провод марки АПР, прокладываемый в стальной трубе. Выбираем сечение алюминиевого провода = 2,5 мм2. Диаметр водогазопроводной трубы для прокладки проводов — = 19,1 мм. Потребитель подключен к третьему участку питающей магистрали. Первый участок магистрали выполнен четырехжильным кабелем марки АВРЕ с алюминиевыми жилами сечением 370 125 мм2 в полихлорвиниловой оболочке, длина участка 0,19 км. Участок защищен автоматом типа А3134 с комбинированным расцепителем на номинальный ток . Второй участок магистрали выполнен кабелем АВРГ 335 110 мм2, длина участка 0,075 км, участок защищен автоматическим выключателем А3124 с тепловым расцепителем на номинальный ток . Магистраль питается от масляного трансформатора типа ТМ1000 с первичным напряжением 10 кВ и вторичным 400/230 В, со схемой соединения обмоток «звезда-звезда». Магистраль зануления на первых двух участках выполнена четвертой жилой питающего кабеля, на третьем участке — стальной трубой. Длина третьего участка составляет 0,017 км.

На щите подстанции, от которой питается рассматриваемая магистраль, установлены измерительные трансформаторы тока.

Рис. 6.1: Схема питания прибора
ТП — трансформаторная подстанция;
РП — распределительный пункт;
СП — силовой пункт.

Устройство представляет из себя пользовательскую ЭВМ.

Таблица 6.1
Номинальные токи

Наименование

Ток, А

Кол-во, шт.

Итого, А

Системный блок ATX MidiTower

1,5

1

1,5

Монитор Iiyama Vision Master Pro 411 19”

1,0

1

1,0

Принтер Epson LX-300

0,3

1

0,3

Итого:

2,8

6.2.1. Выбор аппарата защиты и сопротивления

Применим для защиты автоматический выключатель АП-50 с электромагнитным расцепителем по току 6,4 А.

, где

IНП — номинальный  ток, потребляемый вычислительным комплексом,
 — номинальный ток аппарата защиты.

Сооружение повторного заземления не является необходимым, так как ни один из рассматриваемых участков не превышает длины 200 м.

6.2.2. Расчетная проверка заземления

Выберем уставку тока аппарата защиты , ближайшую к значению  т.е. 6,4 А. Ток однофазного короткого замыкания, обеспечиваемый схемой зануления, определяется по формуле

, где
ZТ — расчетное сопротивление трансформатора;
ZП — суммарное полное сопротивление фазного провода и нулевого защитного проводника.

Расчетное сопротивление трансформатора имеет значение [4]:

.

Полное сопротивление петли «фазный провод — магистраль зануления»

Определяется по формуле , где ; .

Определяем активное сопротивление фазного провода для каждого участка и суммарное по формуле

, где

 — удельное сопротивление материала, ;

l — длина участка, км;

S — сечение провода, мм2.;

, ,

,

Определяем расчетное активное сопротивление фазных проводов с учетом температурной поправки, считая нагрев проводов на всех участках равным T=55C.

, где

 — поправочный коэффициент;
 — температурный коэффициент сопротивления.

Для алюминия = 0,004 град-1, Кt=1 + 0,004(55-20) = 1,14;

rФ=0,3661,14=0,42 Ом.

Определяем активное сопротивление нулевого защитного проводника:

; .

Для водогазопроводной трубы из стали диаметром 19,1 мм и длиной 1 км сопротивление равно  [6].

Сопротивление нулевого защитного провода для третьего участка:

.

Определяем расчетное активное сопротивление магистрали зануления с учетом температурной поправки.

, .

Для стали ,

,

.

Определение внешних индуктивных сопротивлений, обусловленных взаимоиндукцией фазного провода и магистрали зануления

, , где  и  — внешние индуктивные сопротивления, обусловленные взаимоиндукцией фазного провода и магистрали зануления;  и  — внешнее индуктивное сопротивление самоиндукции;

, где

d — расстояние между фазным и нулевым проводом, которое для первых двух участков можно определить из геометрического расположения проводов (см. рис. 6.2, 6.3). [1]

Рис. 6.2. Разрез кабеля, используемого на первом и втором участках.

Тогда:

, где

 — наружный диаметр кабеля;

 — диаметр фазного провода;

 — диаметр нулевого защитного провода;

 — толщина оболочки;

 — толщина изоляции фазного провода;

 — толщина изоляции нулевого защитного провода;

Рассчитаем  для первых двух участков, используя данные из [1] и табл. 6.2, 6.3:

,

Таблица 6.2
Диаметр жил кабеля марки АВР

Сечение S, мм2

Диаметр жилы , мм

10

3,5

25

5,6

35

6,7

70

9,4

Таблица 6.3
Толщина резиновой изоляции жил кабеля марки АВР

Сечение, мм2

Толщина резиновой изоляции, мм

10

1,2

25

1,4

35

1,4

70

1,6

Рис. 6.3. Разрез кабеля и трубы, используемых на третьем участке.

Для третьего участка (см. рис. 6.3):

, где

 — диаметр трубы, [мм];

— диаметр фазного провода, [мм]

 — сечение фазного провода, [мм2];

 — толщина изоляции провода, [мм];

 — толщина трубы, [мм].

Тогда:

Для участка 1 d=11 мм; для участка 2 — d=11,8 мм; для участка 3 — d=8,09 мм;

Внешние индуктивные сопротивления самоиндукции определяются по формуле , где  — погонное индуктивное сопротивление самоиндукции [Ом/м]. [5]

;

; ;

;

;

;  

;

Суммарное внешнее индуктивное сопротивление состоит:

;

.

Определим внутреннее индуктивное сопротивление

;

;

;

; .

Находим полное сопротивление фазного провода и магистрали зануления:

,

.

Рассчитываем ток однофазного короткого замыкания:

.

Сравниваем расчетные параметры с допустимыми:

.

Кроме того должно выполняться следующее условие:

.

Таким образом, оба условия эффективности защиты занулением соблюдаются.

6.2.3. Проверка допустимости напряжений прикосновения и времени срабатывания защитного аппарата

Падение напряжения на участке нулевого провода составит

.

Полное напряжение прикосновения:

Так как отсутствует повторное зануление, то .

Такое напряжение допускает время срабатывания защиты, равное 0,3 с. [10] Как видно из характеристик автоматического выключателя АП-50, его время срабатывания 0,03 сек. [5]. Из чего можно сделать вывод, что данный выключатель обеспечивает необходимое время срабатывания.

6.3. Выбор устройства защитного отключения

В процессе эксплуатации электроустановок нередко возникают ситуации, когда в результате несоблюдения правил техники безопасности или невнимательности, персонал попадает под напряжение. Такая опасность может возникнуть, в частности, при прикосновении человека непосредственно к токоведущей части электроустановки, находящейся под напряжением в рабочем (неаварийном) режиме. В этом случае защитное зануление не обеспечивает безопасности работающего, поскольку они действуют в аварийных режимах работы электроустановок. Для защиты персонала ЭВМ применим защитное отключение — быстродействующую защиту, обеспечивающую автоматическое отключение электроустановки при возникновении в ней опасности поражения человека электрическим током. В настоящее время применение устройств защитного отключения (УЗО) является наиболее эффективным электрозащитным средством. [7]

УЗО — это быстродействующий автоматический выключатель, реагирующий на дифференциальный ток (ток утечки), в проводниках, подводящих электроэнергию к защищаемой электроустановке. Основными элементами УЗО являются прибор защитного отключения и исполнительное устройство (автоматический выключатель). Прибор защитного отключения — это совокупность отдельных элементов, которые воспринимают входной сигнал, реагируют на его изменение и при  заданном значении сигнала воздействуют на выключатель. Исполнительное устройство — автоматический выключатель, обеспечивающий отключение соответствующего участка электроустановки (электрической сети) при получении сигнала от прибора защитного отключения.

6.3.1. Принципиальная схема УЗО


Рис. 6.4. Структура УЗО

1 – дифференциальный трансформатор тока;
2 – пусковой орган (пороговый элемент);
3 – исполнительный механизм;
4 – цепь тестирования.

6.3.2. Принцип работы УЗО

Важнейшим функциональным блоком УЗО является дифференциальный трансформатор тока 1 (см. рис. 6.4). В абсолютном большинстве УЗО, производимых и эксплуатируемых в настоящее время во всем мире, в качестве датчика дифференциального тока используется именно трансформатор тока. В литературе по вопросам конструирования и применения УЗО этот трансформатор иногда называют трансформатором тока нулевой последовательности — ТТНП, хотя понятие «нулевая последовательность» применимо только к трехфазным цепям и используется при расчетах несимметричных режимов многофазных цепей.

Пусковой орган (пороговый элемент) 2 выполняется, как правило, на чувствительных магнитоэлектрических реле прямого действия или электронных компонентах. Исполнительный механизм 3 включает в себя силовую контактную группу с механизмом привода.

В нормальном режиме, при отсутствии дифференциального тока — тока утечки, в силовой цепи по проводникам, проходящим сквозь окно магнитопровода трансформатора тока 1 протекает рабочий ток нагрузки. Проводники, проходящие сквозь окно магнитопровода, образуют встречно включенные первичные обмотки дифференциального трансформатора тока. Если обозначить ток, протекающий по направлению к нагрузке, как I1, а от нагрузки как I2, то можно записать равенство:

Равные токи во встречно включенных обмотках наводят в магнитном сердечнике трансформатора тока равные, но векторно встречно направленные магнитные потоки Ф1 и Ф2. Результирующий магнитный поток равен нулю, ток во вторичной обмотке дифференциального трансформатора также равен нулю.

Пусковой орган 2 находится в этом случае в состоянии покоя.

При прикосновении человека к открытым токопроводящим частям или к корпусу электроприемника, на который произошел пробой изоляции, по фазному проводнику через УЗО кроме тока нагрузки I1 протекает дополнительный ток — ток утечки (ID), являющийся для трансформатора тока дифференциальным (разностным)

Неравенство токов в первичных обмотках (I1 + ID в фазном проводнике) и (I2, равный I1, в нейтральном проводнике) вызывает неравенство магнитных потоков и, как следствие, возникновение во вторичной обмотке трансформированного дифференциального тока. Если этот ток превышает значение уставки порогового элемента пускового органа 2, последний срабатывает и воздействует на исполнительный механизм 3.

Исполнительный механизм, обычно состоящий из пружинного привода, спускового механизма и группы силовых контактов, размыкает электрическую цепь. В результате защищаемая УЗО электроустановка обесточивается.

Для осуществления периодического контроля исправности (работоспособности) УЗО предусмотрена цепь тестирования 4. При нажатии кнопки «Тест» искусственно создается отключающий дифференциальный ток. Срабатывание УЗО означает, что оно в целом исправно.

6.3.3. Выбор модификации УЗО

Для защиты оператора ЭВМ выберем электромеханическое УЗО модификации К(Ф)-1111 с двумя полюсами, которое включается в сеть после автоматического выключателя АП-50.

Характеристики К(Ф)-1111: .


Заключение

Разработанный пакет программного обеспечения позволил ускорить рутинные процедуры обработки результатов испытаний РЛС УВД. Пакет был протестирован на реальных данных, полученных в результате натурных испытаний.

В результате дипломного проектирования для обработки специфической информации создано и применено программное обеспечение, полностью удовлетворяющее предъявленным требованиям. Оно позволяет автоматизировать процесс обработки большого массива данных, повысить производительность и качество работы.

Программный продукт реализован на языке высокого уровня Perl с использованием широко распространенного офисного пакета программ Microsoft Office и выполняет следующие основные функции:

  •  Предварительный просмотр зарегистрированной информации в графическом виде пользователем;
  •  Обработка исходных файлов и подготовка информации, пригодной для хранения и последующего использования;
  •  Статистическая обработка результатов;
  •  Построение графиков в процессе статистической обработки;

Разработанные программные модули объединены в оболочки и содержат встроенную помощь. Обеспечена возможность совместимости с программами построения таблиц, графиков и диаграмм Microsoft Excel на уровне форматов файлов. При хранении преобразованной информации используется широко распространенный формат хранения файлов (CSV), переносимый между различными программными платформами.

По результатам проведенного проектирования в экономической части проекта проведена оценка конкурентоспособности, составлены бизнес–план разработки и калькуляция темы. Осуществлен расчет затрат на разработку программного продукта, которые составили 119 426 руб. Разработка данного программного пакета была признана экономически целесообразной.

В части охраны труда и экологии был проведен расчет электробезопасности на рабочем месте программиста.

Оформление дипломного проекта проведено автором в соответствии с требованиями ГОСТ.

Программный продукт внедрен и используется при обработке результатов испытаний, после внедрения производительность труда повысилась в 350 раз.


Литература

  1.  Белоусов Н.И., Саакян А.Е., Яковлева А.И. Электрические кабели, провода и шнуры: Справочник / Под ред. Н.И. Белоусова. 5-е изд. М.: Энергоатомиздат, 1987.
  2.  Вирт Н. Алгоритмы + структуры данных = программы: Пер. с англ. — М.: Мир, 1985. — 406 с.: ил.
  3.  ГОСТ 12.1.009  76. Электробезопасность. Термины и определения. Введ. 01.01.77
  4.  Идельчик В.И.. Электрические системы и сети. М., Энергоатомиздат, 1989.
  5.  Методические указания по выполнению раздела «Охрана труда и окружающей среды» в дипломных проектах. Вопросы электробезопасности. М., МИРЭА, 1987 г.
  6.  Мотуско Ф.Я. Защитные устройства в электроустановках. — М.: Энергия, 1973. — 200 с.
  7.  НМЦ ПЭУ МЭИ. — Рекомендации по проектированию, монтажу и эксплуатации электроустановок зданий при применении устройств защитного отключения. — М. Изд-во МЭИ, 2000.
  8.  Пугачев В.С. Введение в теорию вероятностей. — М.: Наука, 1968. — 368 с.
  9.  РЛС УВД. Техническое описание. Часть I. Общие сведения, функциональная схема.
  10.  Розанов В.С. Безопасность жизнедеятельности. Электробезопасность. М., МИРЭА, 1999 г.
  11.  Randal L. Schwartz, Tom Phoenix. Learning Perl. — O'Reilly & Associates, Inc., 2001. — 330 с.
  12.  Randal L. Schwartz,  Erik Olson, Tom Christiansen. Learning Perl on Win32 Systems. — O'Reilly & Associates, Inc., 1997. — 304 с.
  13.  Tom Christiansen, Nathan Torkington. Perl Cookbook.— O'Reilly & Associates, Inc., 1998. — 791 с.

Библиография

Из [9] были взяты принципы работы РЛС УВД и действия оператора, из [8] — формулы для расчета вероятностей. При разработке программ использовался язык Perl, описанный в [11–12]. При разработке мер защиты программиста были использованы сведения о предельных значения токов из [10] и параметрах УЗО из [7].


Приложение 1.
Исходный код программы
probability_of_airway

#!/usr/bin/perl

# +------------------------------------+

# | Подсчет вероятности завязки трассы |

# +------------------------------------+

use strict;

use warnings;

use Getopt::Long;

use Cwd;

# Объявление глобальных переменных

use vars qw(

$file_7h

$file_7a

$limit_from

$limit_to

$output_file

@p7A

@p7Aroz

@p7H

$p7h_t_delta

$p7h_d_delta

$p7a_t_delta

$p7a_d_delta

$p7h_mark_t_delta_min

$p7h_mark_t_delta_max

$p7h_mark_d_delta

$be_verbose

%TIME_CACHE

);

# Сопоставляем переданные параметры переменным

GetOptions(

'7H=s' => \$file_7h,

'7A=s' => \$file_7a,

'limit-from=s' => \$limit_from,

'limit-to=s' => \$limit_to,

'verbose|v' => \$be_verbose,

'output-file=s' => \$output_file,

);

$limit_from = 200 unless defined $limit_from; # Значение по умолчанию

# для нижнего  порога по дальности, км.

$limit_to = 400 unless defined $limit_to;  # Значение по умолчанию

# для верхнего порога по дальности, км.

$p7h_t_delta = 2;  # Дельта по времени при выборе отметок РО

# из 7A, сек.

$p7h_d_delta = 0.200; # Дельта по дальности при выборе отметок РО

# из 7A, км.

$p7a_t_delta = 3;  # Дельта по времени, на кот. может находиться

# розочка от отметки РО, сек.

$p7a_d_delta = 0.3;  # Дельта по дальности, на кот. может

# находиться розочка от отметки РО, км.

$p7h_mark_t_delta_min = 3; # Минимальное время между появлением отметки РО от # вновь обнаруженной трассы до появления первой отметки из 7H

# о завязке трассы от данной отметки РО, сек.

$p7h_mark_t_delta_max = 5; # Максимальное время между появлением отметки РО от # вновь обнаруженной трассы до появления первой отметки из 7H о

# завязке трассы от данной отметки РО, сек.

$p7h_mark_d_delta = 1.0; # Дельта по дальности между отметкой РО и первой

# трассовой отметкой (завязка трассы по данной отметке РО), км.

die "Please, specify output file via --output-file parameter" if (!defined  $output_file);

die "Please, specify input files: 7A, 7H" if (!defined $file_7a or !defined  $file_7h);

# Чтение протокола 7H в массив @7H

open(P_7H, "< $file_7h") or die "Can't open 7H: $!";

my $line;

P7H: while (defined($line = <P_7H>)) {

chomp $line;    # Удаление символа последней строки из   текущей строки

$line =~ s/^\s*//; $line =~ s/\s*$//; # Удаляем лидирующие и     завершающие пробелы

next P7H unless $line =~ /^\d/; # Пропускаем возможный заголовок в        # файле -

     # первый символ должен быть цифрой (время
     # ВСИ)

my %h = ();    # Хэш - текущая запись из протокола

$line =~ s/,/./g;

my @r = split(/\s+/,$line);

 

#                 ТСЕВ      ( X ^ 2   +   Y ^ 2   +   H ^ 2  )/1000

# Деление на 1000 связано с метровым измерением координат

@h{ qw(t d) } = ($r[0], sqrt($r[8]**2 + $r[10]**2 + $r[12]**2)/1_000);

next P7H if ($h{d} < $limit_from or $h{d} > $limit_to);

push @p7H, \%h  # Сохраняем в глобальном массиве ссылку
    # на созданный хэш

}

@p7H = sort {$a->{t} <=> $b->{t}} @p7H; # Сортируем по времени явно

close(P_7H) or die $!;

# Чтение протокола 7A в массив @7A

open(P_7A, "< $file_7a") or die "Can't open 7A: $!";

P7A: while (<P_7A>) {

chomp;   # Удаление символа последней строки
    # из текущей строки

s/^\s*//; s/\s*$//; # Убиваем лидирующие и завершающие пробелы

next P7A unless /^\d/; # Пропускаем возможный заголовок в файле -

   # первый символ должен быть цифрой (время ВСИ)

my %h = ();  # Хэш - текущая запись из протокола

my @r = split;

next P7A if (defined $limit_from and defined $limit_to and ($r[10] < $limit_from or $r[10] > $limit_to));

 

@h{ qw(t d) } = @r[0,10];

# Сохраняем в глобальном массиве ссылку на созданный хэш

if ($r[2] == 100) { push @p7A, \%h } # Это отметка регулярного обзора

else   { push @p7Aroz, \%h } # Это "розочка"

}

@p7A = sort {$a->{t} <=> $b->{t}} @p7A; # Сортируем @p7A    по времени явно

@p7Aroz = sort {$a->{t} <=> $b->{t}} @p7Aroz; # Сортируем @p7Aroz

        # по времени явно

close(P_7A) or die $!;

my $success = 0; # Количество   удачных завязок трасс

my $failure = 0; # Количество неудачных завязок трасс

foreach my $ro (@p7A) {

# Проверка отсутствия трассовых отметок поблизости от текущей отметки

# регулярного обзора - удостоверяемся, что мы начинаем заново завязывать

# трассу, а не сопровождаем уже имеющуюся

my $counter = 0;

my $has_valid_7h_mark = 0; # Признак наличия для данной отметки РО

     # отметки из 7H (трасса завязана удачно)

foreach my $tr (@p7H) {

 # Проверка на наличие отметок из 7H для текущей отметки РО

 # (удачная завязка трассы)

 $has_valid_7h_mark = 1 if (

  $tr->{t} > $ro->{t} + $p7h_mark_t_delta_min and

  $tr->{t} < $ro->{t} + $p7h_mark_t_delta_max and

  $tr->{d} > $ro->{d} - $p7h_mark_d_delta and

  $tr->{d} < $ro->{d} + $p7h_mark_d_delta

 );

 # Проверка на то, что рассматриваемая отметка РО

 # не является отметкой от уже сопровождаемой трассы  

 next if ($tr->{t} < $ro->{t} - $p7h_t_delta or

  $tr->{t} > $ro->{t} + $p7h_t_delta);

 next if ($tr->{d} < $ro->{d} - $p7h_d_delta or

  $tr->{d} > $ro->{d} + $p7h_d_delta);

 

 $counter++; # Текущая отметка РО относится к

   # уже сопровождаемой трассе

 last; # Выход из цикла, потому что такие отметки РО нам

  # не подходят - уже одну обнаружили

}

next if $counter != 0; # Пропускаем текущую отметку РО –

    # мы сопровождаем уже завязанную трассу

 

# Проверяем, чтобы после текущей отметки РО о первоначальном обнаружении

# была хотя бы одна "розочка"

$counter = 0;

foreach my $roz (@p7Aroz) {

 next if ($roz->{t} < $ro->{t} or

  $roz->{t} > $ro->{t} + $p7a_t_delta);

 next if ($roz->{d} < $ro->{d} - $p7a_d_delta or

  $roz->{d} > $ro->{d} + $p7a_d_delta);

 

 $counter++;

 last;

}

next if $counter == 0; # Пропускаем текущую отметку РО –

  # около нее не обнаружено ни одной "розочки"

 

debug("  RO: (". $ro->{t} ." , ". $ro->{d} .") is_success? ".

 $has_valid_7h_mark);

 

# Увеличиваем счетчик успешных или неуспешных завязок трасс

$has_valid_7h_mark ? $success++ : $failure++;

}

debug("SUCCESS: $success, FAILURE: $failure");

my $p = $success + $failure == 0 ? -1 : $success / ($success + $failure);

# Формирование отчета с результатом:

my @t = localtime();

open(RESULT, "> $output_file") or die "Can't open output file for write: $!";

print RESULT "P_ASTART;$p\n";

print RESULT "SUCCESS_QUANTITY;$success\n";

print RESULT "FAILURE_QUANTITY;$failure\n";

print RESULT "DATE;\"", $t[5]+1900, ".", $t[4]+1, ".$t[3] $t[2]:$t[1]:$t[0]\"\n";

print RESULT "DIR;\"", cwd(), "\"\n";

print RESULT "7A;\"", $file_7a, "\"\n";

print RESULT "7H;\"", $file_7h, "\"\n";

print RESULT "OUTPUT-FILE;\"", $output_file, "\"\n";

print RESULT "LIMIT_FROM;$limit_from\n";

print RESULT "LIMIT_TO;$limit_to\n";

close(RESULT) or die "Can't close resulting file: $!";

sub debug { print "$_[0]\n" if $be_verbose }


Приложение 2.
Исходный код программы
probability_of_detection

#!/usr/bin/perl

# +--------------------------------+

# | Расчет вероятности обнаружения |

# +--------------------------------+

use strict;

use warnings;

use Getopt::Long;

use Data::Dumper;

use Cwd;

use vars qw(

$output_file

$file_7h

$file_7a

$file_7b

$step

$limit_from

$limit_to

@p7A

@p7B

@p7H

$p7h_t_delta

$p7h_d_delta

$p7a_t_delta

$be_verbose

%TIME_CACHE

@RESULT

);

# Сопоставляем переданные параметры переменным

GetOptions(

'7H=s' => \$file_7h,

'7A=s' => \$file_7a,

'7B=s' => \$file_7b,

'output-file=s' => \$output_file,

'step=s' => \$step,

'limit-from=s' => \$limit_from,

'limit-to=s' => \$limit_to,

'verbose|v' => \$be_verbose,

);

$limit_from = 200 unless $limit_from; # Нижнее ограничение по дальности
      # по умолчанию

$limit_to = 400 unless $limit_to; # Верхнее ограничение по дальности

     # по умолчанию

$step  = 10 unless $step;  # Шаг по умолчанию по дальности

$p7h_t_delta = 2;    # Дельта по времени при выборе отметок

      # РО из 7A (сек.)

$p7h_d_delta = 0.150;   # Дельта по дальности при выборе

      # отметок РО из 7A (км.)

$p7a_t_delta = 50;    # Дельта (сек.), ограничивающая

      # различение двух участков в 7A

die "Please, specify output file via --output-file parameter" unless defined $output_file;

die "Please, specify input files: 7A, 7B, 7H" if ($file_7a eq '' or $file_7b eq '' or $file_7h eq '');

# Чтение протокола 7H в массив @7H

open(P_7H, "< $file_7h") or die "Can't open 7H: $!";

my $line;

P7H: while (defined($line = <P_7H>)) {

chomp $line; # Удаление символа последней строки из текущей строки

$line =~ s/^\s*//; $line =~ s/\s*$//; # Убиваем лидирующие и

       # завершающие пробелы

next P7H unless $line =~ /^\d/; # Пропускаем возможный заголовок

# в файле -

   # первый символ должен быть цифрой (время ВСИ)

my %h = ();  # Хэш - текущая запись из протокола

$line =~ s/,/./g;

my @r = split(/\s+/,$line);

@h{ qw(t d) } = ($r[0], sqrt($r[8]**2 + $r[10]**2 + $r[12]**2)/1_000);

push @p7H, \%h  # Сохраняем в глобальном массиве ссылку

    # на созданный хэш

}

@p7H = sort {$a->{t} <=> $b->{t}} @p7H; # Сортируем по времени явно

close(P_7H) or die $!;

# Чтение протокола 7A в массив @7A

open(P_7A, "< $file_7a") or die "Can't open 7A: $!";

debug("READ 7A");

my $curr_index = 0; # Optimization

P7A: while (<P_7A>) {

chomp;   # Удаление символа последней строки

    # из текущей строки

s/^\s*//; s/\s*$//; # Убиваем лидирующие и завершающие пробелы

next P7A unless /^\d/; # Пропускаем возможный заголовок в файле -

   # первый символ должен быть цифрой (время ВСИ)

my %h = ();  # Хэш - текущая запись из протокола

my @r = split;

next P7A unless $r[2] == 100; # Пропускаем все "розочки"

# Проверяем, чтобы около текущей записи была хотя бы одна отметка из 7H

my $counter = 0; # количество обнаруженных отметок 7H вблизи

   # текущей отметки из 7A

for (my $i = $curr_index; $i < scalar(@p7H); $i++) {

 my $p7h = $p7H[$i];

 next if ($p7h->{t} < $r[0] - $p7h_t_delta or

  $p7h->{t} > $r[0] + $p7h_t_delta);

 next if ($p7h->{d} < $r[10] - $p7h_d_delta or

  $p7h->{d} > $r[10] + $p7h_d_delta);  

 $counter++;

   

 # Нам достаточно знать только тот факт,

 # что есть хотя бы одна отметка.

 # Количество отметок нам не важно, поэтому останавливаемся,

 # как только найдем подходящую отметку из 7H

 $curr_index = $i + 1;

 last;

}

next P7A if $counter == 0; # Нужны только те отметки РО из 7A,

   # вблизи которых есть хотя бы одна отметка из 7H

 

@h{ qw(t d) } = @r[0,10];

push @p7A, \%h # Сохраняем в глобальном массиве ссылку на созданный хэш

}

@p7A = sort {$a->{t} <=> $b->{t}} @p7A; # Сортируем по времени явно

close(P_7A) or die $!;

# Чтение протокола 7B в массив @7B

open(P_7B, "< $file_7b") or die "Can't open 7B: $!";

P7B: while (<P_7B>) {

chomp; # Удаление символа последней строки из текущей строки

s/^\s*//; s/\s*$//; # Убиваем лидирующие и завершающие пробелы

next P7B unless /^\d/; # Пропускаем возможный заголовок в файле -

    # первый символ должен быть цифрой (время ВСИ)

push @p7B, (split)[0] # Сохраняем в глобальном массиве ссылку

    # на созданный хэш

}

@p7B = sort {$a <=> $b} @p7B; # Сортируем по времени явно

close(P_7B) or die $!;

my ($from, $to); # Дальность обрабатываемого участка ( min =< D < max)

$from = $limit_from;

$to = $limit_from + $step;

CYCLE: while ($from < $limit_to) {

debug("Processing $from - $to");

# Выделяем и сортируем по времени требуемые точки по дальности из 7A

my @stepping = sort { $a->{t} <=> $b->{t} } grep { $_->{d} >= $from and

 $_->{d} < $to } @p7A;

 

if (@stepping > 0) {

 # Найдена хотя бы одна точка на данном участке

 debug("  founded ". scalar(@stepping) ." points");

 # Теперь необходимо выделить связанные участки, в которых точки РО

 # отстоят друг от друга не больше, чем $7a_t_delta секунд

 my @parts = (); # Массив с выделенными участками

 my $a_ref = []; # Ссылка на массив, куда складываем точки

    # из очередного участка

 push @parts, $a_ref;

 

 my $last_time =  $stepping[0]->{t}; # Последнее время

 foreach my $point (@stepping) {

  if ($point->{t} > $last_time + $p7a_t_delta) {

   # Рассматриваемая точка не попадает в текущий участок

   $a_ref = []; # Выделяем память под массив

      # для нового участка

   push @parts, $a_ref; # добавляем ссылку на массив

       # в список выделенных участков

  }

  

  push @$a_ref, $point; # добавляем в текущий участок

      # рассматриваемую точку

  $last_time = $point->{t};

 }

 debug("    detected [". scalar(@parts) ."] parts");

 

 my $ro_num = 0; # количество регулярных обзоров для всех участков

 foreach my $part (@parts) {

  # Определяем для текущей части количество регулярных обзоров

  my ($in_part, $counter, $prev, $t_min, $t_max, $last_line);

  $t_min = $$part[0]->{t}; # Время первой отметки из 7A

       # на данном участке

  $t_max = $$part[-1]->{t};  # Время последней отметки из 7A

       # на данном участке

  debug("     part: [$t_min] - [$t_max]");

  my $i = 1;

  foreach my $deb (@{ $part }) {

   debug("      $i. t=". $deb->{t} .", d=". $deb->{d});

  } continue { $i++ }

  

  $counter = 0; # Количество РО в рассматриваемом участке

  $in_part = 0; # Признак "захода" в зону участка в 7B

  $prev = 0; # Предыдущее время

  $last_line = $p7B[-1];

  debug("      determinings RO's:");

  foreach my $l (@p7B) {

   next if (! $in_part and $l < $t_min);

   if ($prev < $t_min and $l > $t_min) {

    $in_part = 1; # Входим в участок

   }

   if ($prev < $t_max and $l > $t_max) {

    # Обнаружили первый РО вне участка, выходим

    debug("      last RO detected");

    $counter++;

    last;

   }

   $counter++; # Учитываем текущий РО

   $counter++ if $l == $last_line;

   debug("       RO: $l");

  } continue { $prev = $l }

  debug("      founded [$counter] RO's");

  $ro_num += $counter;

 }

 my $n = 0;

 $n += scalar(@{ $_ }) foreach (@parts); # Общее количество

   # отметок во всех участках

 push @RESULT, {

  from => $from,

  to => $to,

  result => ($n / $ro_num),

 };

}

else {

 # Точек на данном участке нет

 push @RESULT, {

  from => $from,

  to => $to,

  result => -1,

 };

}

$from = $to;

$to = $from + $step;

}

# Формирование отчета с результатом:

my @t = localtime();

open(RESULT, "> $output_file") or die "Can't open output file for write: $!";

print RESULT "DATE;\"", $t[5]+1900, ".", $t[4]+1, ".$t[3] $t[2]:$t[1]:$t[0]\"\n";

print RESULT "DIR;\"", cwd(), "\"\n";

print RESULT "7A;\"", $file_7a, "\"\n";

print RESULT "7B;\"", $file_7b, "\"\n";

print RESULT "7H;\"", $file_7h, "\"\n";

print RESULT "OUTPUT-FILE;\"", $output_file, "\"\n";

print RESULT "LIMIT_FROM;$limit_from\n";

print RESULT "LIMIT_TO;$limit_to\n";

print RESULT "STEP;$step\n";

print RESULT "RESULTS_QUANTITY;", scalar(@RESULT), "\n"; # Количество результатов

print RESULT join("\n", map { $_->{from} ."-". $_->{to} .";". $_->{result} } @RESULT);

close(RESULT) or die "Can't close resulting file: $!";

sub debug { print "$_[0]\n" if $be_verbose }


Приложение 3.
Исходный код программы
spurious_marks_quantity

#!/usr/bin/perl

# +--------------------------------------------------------------+

# | Подсчет среднего количества ложных отметок в единицу времени |

# +--------------------------------------------------------------+

use strict;

use warnings;

use Getopt::Long;

use Cwd;

use vars qw(

$output_file

$file_7h

$file_7a

$file_7b

$limit_from

$limit_to

@p7A

@p7B

@p7H

$p7h_t_delta

$p7h_d_delta

$p7a_t_delta

$be_verbose

%TIME_CACHE

);

# Сопоставляем переданные параметры переменным

GetOptions(

'7H=s' => \$file_7h,

'7A=s' => \$file_7a,

'7B=s' => \$file_7b,

'output-file=s' => \$output_file,

'limit-from=s' => \$limit_from,

'limit-to=s' => \$limit_to,

'verbose|v' => \$be_verbose,

);

$p7h_t_delta = 3;  # Дельта по времени при выборе отметок РО

    # из 7A (сек.)

$p7h_d_delta = 0.150; # Дельта по дальности при выборе отметок РО

    # из 7A (км.)

$p7a_t_delta = 50;  # Дельта (сек.), ограничивающая различение

    # двух участков в 7A

die "Please, specify output file via --output-file parameter" unless defined $output_file;

die "Please, specify input files: 7A, 7B, 7H" if ($file_7a eq '' or $file_7b eq '' or $file_7h eq '');

# Чтение протокола 7H в массив @7H

open(P_7H, "< $file_7h") or die "Can't open 7H: $!";

my $line;

P7H: while (defined($line = <P_7H>)) {

chomp $line; # Удаление символа последней строки из текущей строки

$line =~ s/^\s*//; $line =~ s/\s*$//; # Удаляем лидирующие и

       # завершающие пробелы

next P7H unless $line =~ /^\d/;  # Пропускаем возможный заголовок

   # в файле -

   # первый символ должен быть цифрой (время ВСИ)

my %h = ();  # Хэш - текущая запись из протокола

$line =~ s/,/./g;

my @r = split(/\s+/,$line);

 

#                 ТСЕВ      ( X ^ 2   +   Y ^ 2   +   H ^ 2  )/1000

# Деление на 1000 связано с метровым измерением координат

@h{ qw(t d) } = ($r[0], sqrt($r[8]**2 + $r[10]**2 + $r[12]**2)/1_000);

 

push @p7H, \%h # Сохраняем в глобальном массиве ссылку

   # на созданный хэш

}

@p7H = sort {$a->{t} <=> $b->{t}} @p7H; # Сортируем по времени явно

close(P_7H) or die $!;

# Чтение протокола 7A в массив @7A

open(P_7A, "< $file_7a") or die "Can't open 7A: $!";

debug("READ 7A");

P7A: while (<P_7A>) {

chomp;  # Удаление символа последней строки из текущей строки

s/^\s*//; s/\s*$//; # Убиваем лидирующие и завершающие пробелы

next P7A unless /^\d/; # Пропускаем возможный заголовок в файле -

   # первый символ должен быть цифрой (время ВСИ)

my %h = ();  # Хэш - текущая запись из протокола

my @r = split;

next P7A unless $r[2] == 100; # Пропускаем все "розочки"

next P7A if (defined $limit_from and defined $limit_to and ($r[10] < $limit_from or $r[10] >= $limit_to));

# Проверяем, чтобы около текущей записи была хотя бы одна отметка из 7H

my $counter = 0; # количество обнаруженных отметок 7H вблизи

   # текущей отметки из 7A

foreach my $p7h (@p7H) {

 next if ($p7h->{t} < $r[0] - $p7h_t_delta or

  $p7h->{t} > $r[0] + $p7h_t_delta);

 next if ($p7h->{d} < $r[10] - $p7h_d_delta or

  $p7h->{d} > $r[10] + $p7h_d_delta);  

 $counter++;

}

 

# Нужны только те отметки РО из 7A,

# вблизи которых нет ни одной отметки из 7H

next P7A if $counter != 0;

 

@h{ qw(t d) } = @r[0,10];

push @p7A, \%h # Сохраняем в глобальном массиве ссылку на созданный хэш

}

@p7A = sort {$a->{t} <=> $b->{t}} @p7A; # Сортируем по времени явно

close(P_7A) or die $!;

# Чтение протокола 7B в массив @7B

open(P_7B, "< $file_7b") or die "Can't open 7B: $!";

P7B: while (<P_7B>) {

chomp; # Удаление символа последней строки из текущей строки

s/^\s*//; s/\s*$//; # Убиваем лидирующие и завершающие пробелы

next P7B unless /^\d/; # Пропускаем возможный заголовок в файле -

   # первый символ должен быть цифрой (время ВСИ)

push @p7B, (split)[0]

}

@p7B = sort {$a <=> $b} @p7B; # Сортируем по времени явно

close(P_7B) or die $!;

# Формирование отчета с результатом:

my @t = localtime();

open(RESULT, "> $output_file") or die "Can't open output file for write: $!";

print RESULT "SP_MARKS_QUANTITY;", scalar(@p7A) / ($p7B[-1] - $p7B[0]), "\n";

print RESULT "DATE;\"", $t[5]+1900, ".", $t[4]+1, ".$t[3] $t[2]:$t[1]:$t[0]\"\n";

print RESULT "DIR;\"", cwd(), "\"\n";

print RESULT "7A;\"", $file_7a, "\"\n";

print RESULT "7B;\"", $file_7b, "\"\n";

print RESULT "7H;\"", $file_7h, "\"\n";

print RESULT "OUTPUT-FILE;\"", $output_file, "\"\n";

print RESULT "LIMIT_FROM;", (defined $limit_from ? $limit_from : '-') ."\n";

print RESULT "LIMIT_TO;", (defined $limit_to ? $limit_to : '-') ."\n";

close(RESULT) or die "Can't close resulting file: $!";

sub debug { print "$_[0]\n" if $be_verbose }


Приложение 4.
Исходный
 код программы protocol_processing

#!/usr/bin/perl

# ---------------------------------------------------

# Обработка формуляров: преобразование в формат CSV

# ---------------------------------------------------

use strict;

use warnings;

use Getopt::Long;

my $input_file = '';

my $output_file = '';

my $decimal_separator = '';

my $file_format = '';

my $limit_from = '';

my $limit_to = '';

my $filter_100; # признак - если defined, то в 7A оставляем только РО, розочки пропускаются

my ($x1, $y1, $x2, $y2, $delta);

GetOptions(

'input-file|i=s' => \$input_file,

'output-file|o=s' => \$output_file,

'decimal-separator=s' => \$decimal_separator,

'file-format=s' => \$file_format,

'filter-100' => \$filter_100,

'limit-from=s' => \$limit_from,

'limit-to=s' => \$limit_to,

'filterX1=s' => \$x1,

'filterY1=s' => \$y1,

'filterX2=s' => \$x2,

'filterY2=s' => \$y2,

'filter-d=s' => \$delta,

);

die "Input file not specified" unless $input_file;

#die "Input file isn't a file" unless(-e $input_file and -f $input_file);

die "Output file not specified" unless $output_file;

#unlink $output_file if (-e $output_file); # Выходной файл не должен существовать, стираем его

$x1 =~ s/,/./ if defined $x1;

$y1 =~ s/,/./ if defined $y1;

$x2 =~ s/,/./ if defined $x2;

$y2 =~ s/,/./ if defined $y2;

$delta =~ s/,/./ if defined $delta;

if (defined $x1 and defined $x2 and $x1 > $x2) {

($x1, $y1, $x2, $y2) = ($x2, $y2, $x1, $y1);

}

open(INPUT,  "< $input_file") or die "Can't open input file for read: $!";

open(OUTPUT, "> $output_file") or die "Can't open output file for writing: $!";

# Обрабатываем файл по строкам

# (<INPUT> выдает массив строк, рассматривая файл INPUT как текстовый)

# обрабатываемая в данный момент строка находится в переменной $_

RECORD: foreach (<INPUT>) {

s/^\s*//; # убиваем лидирующие пробелы в строке

s/\s*$//; # и завершающие нам тоже нафиг не нужны

 

chomp; # удаление символа \n в конце строки, если он там есть

my @fields = split; # Читать "perldoc -f split" до просветления

 

if ($file_format eq '7A') {

 # Пропускаем только записи с сотым параметром

 next RECORD if (defined $filter_100 and $fields[2] != 100);

 my $D = $fields[10]; # Дальность

 next RECORD if (

  $limit_from ne '' and

  $limit_to ne '' and

  ( $D < $limit_from or $D > $limit_to )

 );

}

elsif (

 $file_format eq '7H' and

 (

 $limit_from =~ /^\d+$/ and

 $limit_to =~ /^\d+$/ and

 $limit_from < $limit_to

 )

 or

 (

  defined $x1 and

  defined $y1 and

  defined $x2 and

  defined $y2 and

  defined $delta

 )

) {

 # calculation range (sqrt(X^2 + Y^2 + H^2)/1000)

 my $D = sqrt($fields[8]**2 + $fields[10]**2 + $fields[12]**2)/1000;

 if ($limit_from ne '') {

  next RECORD if ($D < $limit_from or $D > $limit_to)

 }

 if (defined $x1) {

  next RECORD if ($fields[0] < $x1 or $fields[0] > $x2);

  my $x3 = $fields[0];

  my $y3 = (($x3 - $x1)*$y2 + ($x2 - $x3)*$y1)/($x2 - $x1);

  next RECORD if ($D < $y3 - $delta or $D > $y3 + $delta);

 }

}

$_ = join(';',@fields). "\n";

s/\./$decimal_separator/g if $decimal_separator and $decimal_separator ne '.';

 

print OUTPUT $_;

}

close INPUT  or die "Can't close input file: $!";

close OUTPUT or die "Can't close output file: $!"


 

А также другие работы, которые могут Вас заинтересовать

61270. Музичні образи в літературних творах. Оповідання 1.64 MB
  Мета уроку: Навчальна: зосередити увагу учнів на великій життєствердній силі музичного мистецтва в сюжеті оповідання Старий кухар К. Паустовського Старий кухар.
61273. Картофельные зразы с грибами 139.28 KB
  А если попробовать приготовить из них например Зразы Зразы Безопасность труда Себестоимость Проблема потребность Технология приготовления Эстетичность Инвентарь и посуда...
61276. Участие граждан в политической жизни 22.12 KB
  Гражданам принадлежит право решать кто именно будет представлять их интересы в процессе законотворческой деятельности. Основные принципы избирательного права в РФ: всеобщее избирательное право это означает...