Поведение модели самолета в симуляторе и характеристики силовой установки заложены в двух файлах AIR–файле и конфигурационном файле Aircraft.cfg.
AIR–файл представляет собой бинарный файл, в котором перечислены таблицы данных аэродинамических свойств и характеристики силовой установки. Исторически этот файл был единственным источником информации о модели. Программирование вообще и тем более программирование графики для DOS на платформе IBM PC осуществлялось преимущественно на ассемблере. Поэтому AIR–файл создавался компиляцией ассемблерного файла данных. Однако, по-видимому, сами разработчики поняли, что столь сложное для редактирования и понимания хранение данных не правильно и перенесли часть информации в текстовый файл Aircraft.cfg. Часть переменных в этом файле полностью аналогичны переменным AIR–файл, а часть представляет собой множители, действующие на переменные AIR–файл.
На скрине из Flight Simulator 5.0 видно, что выбор летательного аппарата тождествен выбору AIR–файла в котором раньше содержалась вся информация о модели (раньше понятие SIM означало собственно модель летательного аппарата).
![]() |
В интернете есть сайт, на котором доступны для загрузки ранние версии симулятора для DOS. Вы видите окно выбора летательного аппарата в Microsoft ® Flight Simulator 5.0 (последней версии вышедшей для DOS). Исторически Майкрософт предлагает четыре типа модели динамики: для планера (Schweizer Sailplane), поршневого моноплана с носовой опорой (Cessna Skyline R182), поршневого биплана с хвостовой опорой (Sopwith Camel) и реактивного самолета (впоследствии появилась модель для турбореактивного самолета). Прототипом модели реактивного самолета является Лирджет-35А, которого впоследствии заменил Лирджет-45 ныне существующий в Microsoft ® Flight Simulator 2004 и Microsoft ® Flight Simulator X. Именно поэтому дефолтная модель Лирджет-45 выбрана в качестве основы для изучения сим-аэродинамики. Однако методы, описанные здесь, естественно могут быть применены к любой модели. Как видно выбор летательного аппарата тождествен выбору AIR–файла в котором раньше содержалась вся информация о модели. |
| Множитель в секции [flight_tuning] файла Aircraft.cfg | Производная на которую действует множитель | Расшифровка |
| cruise_lift_scalar | CL0 | Коэффициент подъемной силы при нулевом угле атаки |
| parasite_drag_scalar | Cd0 | Профильное сопротивление |
| induced_drag_scalar | Cdi | Индуктивное сопротивление |
| elevator_effectiveness | Cmde | Момент тангажа связанный с отклонением руля высоты |
| aileron_effectiveness | Clda | Момент крена связанный с отклонением элеронов |
| rudder_effectiveness | Cndr | Момент рысканья связанный с отклонением руля направления |
| pitch_stability | Cmq | Демпфирующий момент тангажа |
| roll_stability | Clp | Демпфирующий момент крена |
| yaw_stability | Cnr | Демпфирующий момент рысканья |
| elevator_trim_effectiveness | Cmdetr | Момент тангажа связанный с отклонением триммера руля высоты |
| aileron_trim_effectiveness | Cldatr | Момент тангажа связанный с отклонением триммера элеронов |
| rudder_trim_effectiveness | Cndrtr | Момент тангажа связанный с отклонением триммера руля направления |
Для полноценной работы прибора необходимо наличие библиотеки FSUIPC, даже незарегистрированной версии. Работоспособность прибора проверена с версии FSUIPC 3.88a для FS2004 и версии FSUIPC 4.52 для FSX.
Прибор AEROLOG может работать без FSUIPC, в том смысле, что часть переменных которые могут быть получены непосредственно от симулятора по-прежнему доступны для отображения на дисплее и записи в файл. Однако одной из главных задач прибора является вычисление и отображения основных аэродинамических характеристик самолета: коэффициентов подъемной силы и сопротивления, необходимых для построения поляры самолета. Эти величины в свою очередь могут быть получены из файла динамики - AIR-файла модели. AEROLOG должен знать, какая именно модель в данный момент загружена в симулятор и где расположен ее AIR-файл. Других источников информации об этом кроме FSUIPC неизвестно. Следовательно, если отсутствует FSUIPC, то необходимо "вручную" указать с каким самолетом работает прибор для этого и служит файл alinit.txt. Более того, даже при наличии FSUIPC в FSX, процесс инициализации FSUIPC отличается от такового в FS2004, в результате пользователи FSX обязаны иметь файл alinit.txt в корневой папке симулятора для успешной работы прибора и "вручную" вносить в него изменения при смене самолета на панели которого расположен прибор. В FS2004 подобных проблем не возникает.
Вывод: использование прибора без FSUIPC вполне возможно, но не имеет практического смысла.
AIR–файл представляет собой список записей каждая, из которых имеет свой номер – token. Символ token является шестнадцатеричным числом, которому соответствует определенное имя этого символа. Например: запись номер 0х404 или AIR_CL_ALPHA это таблица зависимости коэффициента подъемной силы от угла атаки фюзеляжа; запись номер 0х473 или AIR_CM_ALPHA это таблица зависимости момента тангажа от угла атаки фюзеляжа; запись номер 0х455 или AIR_CL_P это таблица слагаемых для демпфирующего момент крена в зависимости от числа Маха.
В исходном виде AIR-файл должен быть написан в любом текстовом редакторе на языке ассемблер. Затем он может быть изменен с помощью визуальных редакторов типа AirEd by William Roth, Aircraft Airfile Manager (AAM) by Karl-Heinz Klotz, AirWrench by GWBeckwith.
Файл на языке ассемблера компилируется в бинарный модуль с помощью утилиты Asm2Air.exe доступной в свободно распространяемом пакете Lockheed Martin Prepar3D 1.3 SDK.
Каждая запись ассемблера начинается с макроса TOKEN_BEGIN, который записывает в AIR–файл шестнадцатеричный номер записи, затем размер записи в байтах, затем адрес начала блока данных. Заканчивается запись макросом TOKEN_END, который записывает в AIR–файл адрес конца блока данных.
Например, если token это AIR_CL_ALPHA (0х404), то:
А вот как это используется при написании ассемблерного файла.
Каждая запись в AIR-файле имеет определенный номер (token), размер в байтах, смещение от начала файла в байтах, и массив данных ограниченный числом 2048 (2 килобайта). Соответственно этому составляется структура AIR_RECORD описывающая одну запись в AIR-файле. Список таких структур AIR_RECORD_LIST и представляет собой содержимое AIR-файла.
Затем создается функция читающая содержимое AIR-файла, т.е. заполняющая список записей. При вызове этой функции ей передается в качестве параметра указатель на «голову» списка.
В этом вызове функция читает записи из файла в список:
Разработчикам будет интересно ознакомится с техническими деталями вычисления аэродинамических коэффициентов в приборе.
На ниже приведенном рисунке показан результат работы демонстрационной программы. Как видно программа прочитала файл. Нашла запись с номером 0x341, второй по счету в списке (нумерация с нуля), размер записи 116 байт, смещение от начала файла 160 (0хА0)байт. Массив данных содержит 7 элементов и представляет собой таблицу масштабирования эффективности руля высоты, где по оси X отложено отклонение руля высоты в радианах, а по оси Y – множитель на который умножается эффективность руля высоты.