Программа управления самолётом в режиме автопилота

Содержание:

1 Техническое задание                                                                                                             2

Введение                                                                                                                              2

Основания для разработки                                                                                                 2

Назначения разработки                                                                                                      2

Требования к программному продукту                                                                            2

Требования к программной документации                                                                      2

Стадии и этапы разработки                                                                                               3

2 Выбор и обоснования языка программирования                                                       4

3 Выбор и обоснование операционной системы                                                          6

4 Инструкции пользователя                                                                                            7

5 Описание программы                                                                                                   8

Общие сведения                                                                                                                 8

Функциональное назначение                                                                                            8

Использованные технические средства                                                                         10

Вызов и загрузка                                                                                                               10

Входные данные                                                                                                               10

Выходные данные                                                                                                            10

6 Инструкции оператора                                                                                               11

Назначение программы                                                                                                    11

Условия выполнения программы                                                                                   11

7  Инструкция по подготовке входных данных                                                          12

8  Область применения программного продукта                                                        12

9  Методы тестирования и отладки программного продукта                                    13

10 Эффективность программного продукта                                                               16

11 График зависимости                                                                                                 16

12 Инженерное программирование                                                                             17

13 Заключение                                                                                                               18

14 Список использованной литературы                                                                      19

Техническое задание.

(Техническое задание оформлено и выполнено в соответствии с ГОСТ 19.201.-78ЕСПД)

Введение.

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

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

Основания для разработки.

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

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

Назначения разработки.

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

Требование к программе или программному изделию.

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

Требование к программной документации.

Вся документация написана в соответствии с ЕСПД.

Технико-экономические показатели.

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

Стадии и этапы разработки.

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

1. Определение требований и заданий.

2. Проектирование программы.

3. Написание программы (программирование)

4. Компоновка.

5. Тестирование.

6. При провале тестов возврат к этапу 3.

7. Документирование.

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

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

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

1. Читабельность языка, легкость чтения и понимание программ на нем.

а) Простота

б) Ортогональность

2. Ограниченное количество управляющих операторов.

а) Количество операторов безусловного перехода

б) Точки перехода никогда не должны находиться слишком далеко.

в) Количество операторов безусловного перехода должно быть ограничено.

3. Типы и структура данных должны быть хорошо описаны.

4. Анализ синтаксической структуры.

а) Формула идентификаторов.

б) Ограничение длины идентификаторов до очень маленьких размеров уменьшает читабельность.

в) Специальные слова.

г) Форма и значении

5. Легкость создания программ.

а) Простота и ортогональность

б) Поддержка абстракции

в) Выразительность

6. Надежность

а) Проверка типов.

б) Обработка исключений

в) Совмещение имен

г) Легкость чтения и использования.

Для данной программы был выбран язык «С++». «C++» - это усовершенствованный вариант «С», основные отличия от «С» заключаются это объектное ориентирование «С++», поддержка абстракции данных поддержка обработки ошибок с помощью исключений и возможности перегрузки операций. Также «С++» является одним из наиболее часто употребляемых объектно-ориентированных языков, по причине оптимального сочетания функциональности и быстродействия. «С++» появился как видоизменённый «С». В нём появились новые функции, упростился процесс разработки программных продуктов. Вот только некоторые из преимуществ «С++» над другими языками:

Программы на «С++» получаются компактными и быстро выполняемыми. Фактически язык «С++» обладает такими прекрасными возможностями управления, которые обычно присущи языкам Ассемблера. Программы на языке «С++» можно по желанию настраивать либо на максимальное быстродействие, либо на экономное использование доступной памяти. Языку «С++» присуща высокая степень переносимости. Это означает, что программы на языке «С++», написанные для одной операционной системы, могут выполняться в других системах с небольшими изменениями (или вообще без таковых). Если модификация программы необходима, то зачастую она может быть выполнена путем простой замены нескольких записей в заголовочном файле для основного модуля. Язык «С+» является мощным и гибким. Например, большая часть мощной и гибкой операционной системы UNIX написана на языках «С++» и «С» (предшественнике «С++»). Многие компиляторы и интерпретаторы для других языков программирования, таких как FORTRAN, APL, PASCAL, LOGO и BASIC, написаны на языке «С++». Язык «С++» сориентирован на удовлетворение потребностей программистов. Он предоставляет доступ к аппаратным средствам и позволяет оперировать отдельными битами оперативной памяти.

Выбор и обоснование операционной системы.

Операционная система будет управлять работой нашей программы, выполнять запросы программы, выделять ей ресурсы. Для данной программы мы выбрали операционную систему QNX. Это масштабируемая ОС «жесткого» реального времени. Применяется в наиболее критичных областях (Mission Critical Appliances). На базе QNX  строятся высоконадёжные решения для управления промышленным и медицинским оборудованием а также бортовыми системами. QNX содержит ряд следующих функций:

1. Совместимость (Compatibility). На ОС QNX внешний вид может различаться, т.к. внешний вид данной ОС зависит от установленной графической оболочки, QNX обеспечивает поддержку многих файловых систем, к примеру, таких как NTFS и FAT. Большинство приложений, написанных под WIN9x, WINNT, *NIX, а также некоторые программы под OS/2 и POSIX запускаются и функционируют без проблем, а если проблемы и появляются, то их можно устранить без проблем. При проектировании QNX учитывалась возможность работы системы в различных сетевых средах, поэтому в поставку входят средства для работы в *NIX и WINDOWS сетях.

2. Переносимость (Portability). Система работает на различных процессорах семейства х86 (для релиза RTP 6.1.0) а также с архитектурами MIPS, PowerPC, Hitachi CH4, INTEL StrongARM. Реализация поддержки процессоров других архитектур возможна т.к. QNX практически нетребовательна к системным ресурсам.

3. Масштабируемость (Scalability). В QNX реализована поддержка технологии SMP, Datacenter Server, COW (Cluster Of Workstations).

4. Система безопасности (Security) Система безопасности реализована на высоком уровне.

5. Надёжность и отказоустойчивость (Reliability and Robustness).

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

6. Локализация (Localization). Система предоставляет возможности для работы во многих странах мира на национальных языках, что достигается благодаря стандарту ISO Unicode

7. Расширяемость (Extensibility). Благодаря модульному построению системы становится возможно добавление новых модулей на различные архитектурные уровни ОС без перезагрузки самой ОС.

Инструкция пользователя.

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

управляющий самолётом, т. е. лётчик.

После запуска программы на дисплее появляется надпись «Введите данные».

Данные в программу можно будет вводить двумя способами.

1. Первый способ - полуавтоматический.

Пользователь вводит координаты точки назначения, а также (если требуется) необходимые «контрольные точки» (скажем при запрете полётов над городами), а компьютер сам выбирает оптимальные параметры: скорость полёта, высоту полёта и прочие.

2. Второй способ - данные вводятся вручную, т. е.

лётчик сам вводит курс, маршрут, скорость ветра,

нахождение в точке, высоту полёта.

После ввода данных, программа должна проверить все введённые данные (послать пользователю запрос на подтверждение введённых данных).

Затем следует нажать на кнопку ОК, данные сохраняются, обрабатываются и компьютер выводит на экран оптимальный маршрут. Данные также можно будет корректировать. Для этого нужно нажать на кнопку «Корректировка данных».

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

Описание программы.

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

Название разрабатываемой программы: «Программа управления самолётом в режиме автопилота». Данная программа написана на языке С ++.

2. Функциональное назначение.

Программа решает следующие задачи:

1. хранит в себе данные о полёте.

2. отслеживает и корректирует курс самолёта.

3. вычисляет оптимальный маршрут.

4. контролирует ход процесса полёта и управления самолётом.

Главное значение программы - облегчение работы пилота, получение полной отдачи от самолёта, а также для повышения безопасности жизни людей.

Алгоритм работы программы.

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

     

1) Начало работы программы

2) Проверка готовности системы

3) Сообщение об ошибке с указанием причины ошибки

4) Ввод данных

5) Проверка количества данных (достаточно или нет)

6) Вывод оптимального маршрута и, собственно полёт

7) Остановка работы программы

                               

3.Используемые технические средства.

Для работы программы необходимы:

-    Операционная система QNX

-          Процессор Intel Pentium III 650+ MHz

-          ОЗУ 256+ Mb

-          2+ Gb свободного места на жёстком диске

-          Видеоплата 8+ Mb

-          Клавиатура, манипулятор типа «Трэкбол»

-          Звуковая плата (возможно использование встроенного звукового процессора)

4.Вызов и загрузка.

Данная программа запускается при помощи ярлыка autofly (при наличии установленной графической оболочки) или при помощи команды autofly в консоли управления ОС. ВАЖНО! Доступ к компьютеру и к программе должны быть закрыты разными(!!!) паролями- в целях обеспечения безопасности.

5. Входные данные

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

6. Выходные данные

Выходные данные поступают в соответствии с запросом лётчика, выводятся на экран в режиме реального времени, устаревшие данные заносятся в память компьютера и в «Чёрный ящик», откуда их можно удалить только после полёта.

Инструкция оператора.

1. Назначение программы.

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

2« Условия выполнения программы,

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

-    Операционная система QNX

-          Процессор Intel Pentium III 750+ MHz

-          ОЗУ 512+ Mb

-          2+ Gb свободного места на жёстком диске

-          Видеоплата 8+ Mb

-          Клавиатура, манипулятор типа «Трэкбол»

-          Звуковая плата (возможно использование встроенного звукового процессора)- для падания звукового сигнала в случае какой-либо внештатной ситуации

                  

Инструкция по подготовке ввода входных данных.

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

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

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

Методы тестирования и отладки программ.

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

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

2)                   Тест проверки эффективности защиты от искажений исходных данных. Служит для выявления ошибок в программах проявляющихся при ложных или искаженных данных.

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

4)                   Тест оценки эффективности, защиты от сбоев аппаратуры и не выявленных ошибок программ. Служит для проверки качества средств программного контроля и аппаратного восстановления при различных искажениях функционирования.

5)                   Тест испытаний на соответствие комплекса программ техническому заданию. Служит для паспортизации созданного комплекса как завершенного программного продукта.

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

7)                   Тест проверки удобства установки и подготовки рабочей версии. Служит для выявления ошибок методов и средств настройки комплекса программ к конкретным условиям применения.

8)                   Тест проверки работы комплекса программ при конфигурации оборудования. Используется для обнаружения ошибок появляющихся при изменении состояния или характеристик компонентов вычислительной системы или внешних абонентов.

9)                   Тест проверки корректности документации. Предназначен для обнаружения ошибок соответствующего реального комплекса программ с его сопровождающей конструкторской и эксплуатационной документацией.

10)               Тест проверки удобства сопровождения и модификации программ. Должен обеспечивать выявление ошибок построения комплекса программ и его компонентов затрудняющих их изменения в процесс сопровождения.

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

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

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

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

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

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

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

18)               Тест проверки структура группы программ. Применяется для выявления ошибок реального структурного построения группы программ и его соответствия спецификации. Проверяется правильность вызовов программных модулей и возвратов управления при взаимодействии в группе программ.

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

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

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

22)              

23)               Тест проверки функционирования программы в критических ситуациях по условиям и логике решения задач.

24)              

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

Внесение дефектов и время их устранения на разных стадиях разработки ПО.

Эффективность программы.

    Э=(N/t)k*100%, где :    

N- Количество циклов

t-   Время

k-  Количество функций

Инженерное программирование.

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

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

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

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

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

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

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

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

e>