ISSN 0236-235X (P)
ISSN 2311-2735 (E)

Journal influence

Higher Attestation Commission (VAK) - К1 quartile
Russian Science Citation Index (RSCI)

Bookmark

Next issue

4
Publication date:
09 December 2024

The article was published in issue no. № 1, 1999
Abstract:
Аннотация:
Authors: () - , () - , () - , () -
Page views: 11468
Print version
Full issue in PDF (1.25Mb)

Font size:       Font:

Система программного обеспечения (СПО) «Динамика» является интегрированной диалоговой средой (ДС) входного языка MATFOR (MATrix FORmula) [I], предназначенной для создания прикладных программ в различных областях инженерной деятельности. В качестве парадигмы интерфейса в данной СПО используется система иерархических меню. Программное обеспечение СПО «Динамика» для решения проблемных задач поставляется в виде набора архивов, содержащих модели и расчетные процедуры предметной области. Предшественником СПО была одноименная система, реализованная в 1986-1990 гг. при участии авторов на ЕС ЭВМ [2,3] и предназначенная для моделирования, анализа и синтеза прецизионных систем управления движением (СУД) космических аппаратов (КА).

Входной язык MATFOR является процедурным языком высокого уровня, конструкции которого намеренно приближены к языку MATLAB [4,5], что позволяет после небольшой переработки использовать так называемые М-файлы, входящие в "инструментальные сундучки" этой системы. Конструкции языка MAFFOR дают возможность описывать системы нелинейных векторно-матричных непрерывно-дискретных систем обыкновенных дифференциальных и разностных уравнений, а также и нелинейных статических соотношений. Важным его отличием от языка MATLAB является автоматическое подключение методов интегрирования с предварительным объединением (агрегированием) всех дифференциальных уравнений моделей компонентов СУД КА в единую систему, а также автоматическая синхронизация всех периодов дискретности в моделируемой системе с шагом интегрирования. Применение режима компиляции, а не интерпретации, как в MATLAB, утверждений входного языка позволяет увеличить скорость выполнения задач, что важно при исследовании систем высокой размерности.

В настоящее время имеются две версии СПО «Динамика» на IBM PC, реализованные на язы- ке C++ с использованием средств TurboVision. Первая из них функционирует в среде любой MS-DOS, начиная от версии 3.30, размещаясь в основной оперативной памяти 640 Кбайт, а вторая рассчитана на работу в среде WINDOWS-95 в виде DOS-приложения и использует расширенную оперативную память; программное обес- печение оттранслировано в среде Borland C++ версии 4.5 с DOS-расширителем PowerPack. Разрабатывается также полная WINDOWS-версия системы.

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

Моделью будем считать описание какого-либо объекта или явления предметной области на языке MATFOR, например в виде набора соответствующих нелинейных дифференциальных уравнений и статических соотношений. В расширенной трактовке моделью можно назвать произвольный текст на входном языке, помещенный в отдельный раздел архива моделей. Модели могут быть двух типов: dynamic – содержащие в своем составе дифференциальные уравнения; function – не содержащие таких уравнений. Любая модель может содержать вызовы других моделей, но рекурсия недопустима.

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

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

·          тексты моделей;

·          паспорта моделей (описания данных сгруппированные по типам: входные, выходные, глобальные);

·          данные, в том числе исходные (начальные условия интегрирования, параметры моделей и др.) и данные о зарезервированных переменных для вывода в архив результатов и на экран в процессе выполнения задачи;

·          данные дискретных блоков моделей;

·          признаковая информация компонентов архива;

·          информация о состоянии архива и его компонентов.

Подпись:  Процесс создания модели проходит ряд этапов:

-     создание и редактирование MATFOR-текста модели;

-     запись текста и атрибутов модели в архив;

-     трансляция MATFOR-текста модели на язык С;

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

Трансляция MATFOR-текста модели также выполняется в несколько этапов – проходов транслятора:

·          лексический и синтаксический анализ,

·          семантический анализ,

·          генерация полученной программы.

На первом проходе синтаксический анализатор, получая от сканера лексемы, пытается воссоздать синтаксическую структуру программы и проверить ее корректность. Конструкция считается правильной, если исходные данные удовлетворяют формальным правилам языка, записанным в нормальной форме Бэкуса [6]. Синтаксический анализатор представляет собой набор подпрограмм, отвечающих за проверку отдельных синтаксических конструкций. Он сочетает в себе метод рекурсивного спуска и детерминированный логический автомат с конечным числом состояний. Такой подход позволяет провести анализ всех синтаксических конструкций и исключает возвраты, требующиеся при других методах восходящего разбора [7].

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

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

Структура задачи показана на рисунке. Задача для модели типа function включает только головную (MAIN) программу и оператор вызова модели.

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

Происходит генерация следующих С-текстов:

¨  головной программы;

¨  промежуточной программы ZZ_ZZ, вызывающей все указанные пользователем методы интегрирования;

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

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

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

*         генерация вызовов программы чтения и контроля данных;

*         генерация вызова программы ZZ_ZZ.

Подпись: //объявления глобальной структуры данных (corn_mon),
//программы контроля состояния (status) и
//программы вызова модели (*upd_method) 
void Name(void) 
{
long double ...		 //начальные присвоения 
for(...) { 			// начало цикла интегрирования 
status(); 			// контроль состояния 
(*upd method)(); // вызов модели
.  .  .  			//операторы метода
}
} 				// конец цикла интегрирования
}
Генерация текста системной программы ZZ_ZZ выполняется автоматически в следующей последовательности:

-    поиск данных о периодах дискретности модели Тi, i = 1, N и определение их числа N;

-    поиск данных о переменных состояния x1,j, j=1,n1 дифференциальных уравнений модели, разрешенных относительно первой производной, и определение их числа n1;

-    поиск данных о переменных состояния х2,j, j=l,n2 дифференциальных уравнений модели, разрешенных относительно второй производной, и определение их числа n2;

-    генерация операторов присваивания значений периодов дискретности в глобальную структуру данных;

-    генерация вызова программы определения наибольшего общего делителя (НОД) всех периодов дискретности Тi модели с корректировкой начального шага интегрирования h, если он превышает и/или не кратен НОД всех Ti;

-    генерация операторов присваивания значений переменных состояния массиву в глобальной структуре данных длиной n1+2n2 с использованием стандартного приема приведения уравнений модели к форме Коши z=f(t,z,p) с общим вектором z = {х1, х2, х2} ее состояния;

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

-    генерация операторов вызова подключенных методов интегрирования;

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

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

В СПО имеется ряд встроенных и автоматически вызываемых методов интегрирования, обоснованных теоретическими и практическими результатами вычислительной математики, том числе: явные методы Рунге-Кутты различной точности с постоянным и переменным шагом интегрирования; неявные предиктор-корректор методы Адамса; метод Эйлера, метод интегрирования дискретных систем и др. Имеющихся методов интегрирования достаточно для большинства инженерных приложений. Если же они не удовлетворяют пользователя, то он имеет возможность подключить собственный метод. С-программа, реализующая любой такой метод пользователя, имеет простую структуру:

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

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

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

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

Пользовательский интерфейс СПО «Динамика» поддерживает процесс создания моделей и расчетных процедур на всех этапах – от написания текста модели на входном языке до создания задачи (ехе-файла), ее выполнения и получения результата.

СПО «Динамика» промышленно внедрена и применяется в России в головных организациях по разработке, созданию и эксплуатации космических аппаратов информационного назначения (спутники наблюдения, навигации, связи, геодезии и др.), а также в учебном процессе ведущих аэрокосмических университетов России.

Список литературы

1. Matrosov V.M, Somov Ye.I, Butyrin S.A, et. al. Software System DYNAMICS - a Tool for Computer-Aided Modelling and Simulation of the spacecraft Fail-safe Control Systems // Russian-American Scientific Journal Actual Problems of Aviation and Aerospace Systems, 1997, №1(4), pp. 8-17.

2. Matrosov V.M., Rayevsky V.A., Titov G.P., Kozlov R.I., Somov Ye.I., Butyrin S.A., Symonov S.A. The software system DYNAMICS for CAD of control systems // Proc. of Inter. Workshop "Methods and Software for Automatic Control Systems", Irkutsk: ICC of the RAS, 1991, p. 63-64.

3. Матросов В.М., Козлов Р.И., Сомов Е.И., Бутырин С.А. и др. Методы и программное обеспечение для автоматизации проектирования систем управления ориентацией космических аппаратов // Динамика и управление космическими объектами / Под ред. В.М. Матросова, М.Ф. Решетнева. - Новосибирск: Наука, 1992. - С. 163-179.

4. Забродин С.П., Потемкин В.Г., Титков А.И., Интегрированная система инженерных и научных расчетов MATLAB: Справочное учебное пособие. -М.: МИФИ, 1994. -132 с.

5. 386-MATLAB User's Guide.- The Nathworks Inc., 1990. - 523 p.

6. Грис Д. Конструирование компиляторов для цифровых вычислительных машин. -М.: Мир, 1975. -544 с.

7. Лебедев Н.В. Введение в системы программирования. М.: Статистика, 1975. -312 с.


Permanent link:
http://swsys.ru/index.php?id=919&lang=en&page=article
Print version
Full issue in PDF (1.25Mb)
The article was published in issue no. № 1, 1999

Back to the list of articles