Journal influence
Bookmark
Next issue
Abstract:
Аннотация:
Authors: () - , () - , () - , () - | |
Page views: 11468 |
Print version Full issue in PDF (1.25Mb) |
Система программного обеспечения (СПО) «Динамика» является интегрированной диалоговой средой (ДС) входного языка 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. Генерация текста системной программы 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