# Чтение данных из AIR-файла симулятора в приборе AEROLOG (технические детали)

Назад к содержанию

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

## Исходные данные AIR-файла

Поведение модели самолета в симуляторе и характеристики силовой установки заложены в двух файлах 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–файла в котором раньше содержалась вся информация о модели.

## Влияние на записи AIR-файла через параметры заданные в файле Aircraft.cfg

Теперь секция [fltsim.n] файла Aircraft.cfg содержит параметр sim определяющий имя AIR–файла динамики для модели (например, для Airbus A321 sim=Airbus_A321, т.е. динамика содержится в файле Airbus_A321.air). Секция [flight_tuning] позволяет напрямую влиять на динамику модели, что заменяет редактирование 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, даже незарегистрированной версии. Работоспособность прибора проверена с версии 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-файла

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-файла в приборе AEROLOG

Каждая запись в AIR-файле имеет определенный номер (token), размер в байтах, смещение от начала файла в байтах, и массив данных ограниченный числом 2048 (2 килобайта). Соответственно этому составляется структура AIR_RECORD описывающая одну запись в AIR-файле. Список таких структур AIR_RECORD_LIST и представляет собой содержимое AIR-файла.

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

В этом вызове функция читает записи из файла в список:

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

На ниже приведенном рисунке показан результат работы демонстрационной программы. Как видно программа прочитала файл. Нашла запись с номером 0x341, второй по счету в списке (нумерация с нуля), размер записи 116 байт, смещение от начала файла 160 (0хА0)байт. Массив данных содержит 7 элементов и представляет собой таблицу масштабирования эффективности руля высоты, где по оси X отложено отклонение руля высоты в радианах, а по оси Y – множитель на который умножается эффективность руля высоты.

Назад к содержанию