Система ГАММА: расширение возможностей языка разработки директив

А.Г. Александров,
в.н.с., д.ф.-м.н., проф.,
ИПУ РАН,
alex7@ipu.rssi.ru, Москва

Л.С. Михайлова,

доц., к.т.н.,

ЭПИ МИСиС, lsmixx@rambler.ru, Электросталь

1. Введение

В настоящее время в распоряжении специалистов в области автоматического управления находится большое число программных средств, предназначенных для автоматизации разработки систем автоматического управления (САУ). Здесь можно упомянуть как зарубежные системы: IDPAC, CYNPAC, KEDDS, MATLAB [1], так и отечественные ДИСПАС, МВТУ [2], ГАММА [3] и др.

Можно выделить две категории пользователей этих программных средств:  инженеры-разработчики реальных систем автоматического управления, которые являются специалистами в области управления конкретными объектами и обладают некоторыми знаниями в области теории автоматического управления (ТАУ); исследователи – это ученые-специалисты в области ТАУ, которые занимаются исследованием  и разработкой новых методов и процедур решения задач ТАУ.

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

Система ГАММА изначально создавалась как система для инженеров-разработчиков САУ. Основная идея, реализованная в системе, это предоставление пользователям категории «инженер» средств для автоматического решения задач разработки САУ. Особенности системы: наличие проектных процедур (директив) для решения задач синтеза САУ, которые обеспечивают автоматическое решение задач пользователями категории «инженер»; возможность синтеза на основе инженерных показателей качества (установившиеся ошибки, время переходного процесса и т.д.); наличие средств для разработки проектных процедур пользователями системы, относящимися к категории «исследователь». К недостаткам системы, которые затрудняют реализацию новых алгоритмов, можно отнести небольшое количество базовых математических функций для работы с матрицами и полиномами,  а также ограниченные возможности языка программирования системы ГАММА. 

2. Структура системы ГАММА

Отличительной особенностью системы ГАММА является разделение функций пользователей за счёт предоставления каждой категории пользователей собственного интерфейса к ресурсам системы. Таким образом, система  ГАММА состоит из двух подсистем:

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

-        Среды исследователя, которая содержит  средства для разработки программного обеспечения первого уровня: библиотеку программных модулей и собственный язык программирования ГАММА, предназначенный для разработки директив системы.

2.1 Среда инженера

Среда инженера обеспечивает решение конкретных задач проектирования САУ посредством реализованных в системе проектных процедур (директив). Особенности директивы:

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

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

-        Структурно директива состоит из трёх частей: интерфейса, который обеспечивает ввод исходных данных в естественном виде; расчётной части; операций вывода результатов работы в протокол решения задачи.

-        Директивы представляют собой программу на языке ГАММА. Расчётная часть директивы состоит из операций вызова математических функций, входящих в ядро системы и функций, написанных на языке ГАММА.

В системе имеется несколько групп директив:

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

-        Адаптивное управление (с использованием частотной идентификации)

-        Синтез регулятора заданного объекта (LQ-оптимальное управление, H-бесконечное субоптимальное управление, управление по заданной точности и др.)

Пользователь работает в системе следующим образом: выбирает из списка директиву и затем по запросу системы вводит на естественном языке исходные данные (дифференциальные уравнения объекта, границы возмущений, допуска на технические показатели и т.д.) (рис.1а) После ввода исходных данных задача решается автоматически (без участия пользователя). Результатом работы ГАММА являются дифференциальные либо разностные уравнения регулятора (для задач синтеза и адаптации), идентифицированная модель объекта (для задач идентификации), а также графики процессов управления (рис.1б).

                       

           рис.1а) Форма для ввода исходных данных директивы;                                      1б) Результаты решения задачи

2.2  Среда исследователя

Среда исследователя предназначена для разработки директив. Директивы в системе ГАММА-2РС состоят из отдельных программных модулей. Каждый модуль реализует элементарную проектную операцию, т.е. решает элементарную с точки зрения ТАУ задачу (например, анализ управляемости, решение уравнения Риккати и т.п.). Модули могут разрабатываться на любых языках программирования высокого уровня. Согласованная работа модулей достигается за счет соблюдения формата обмена данными между модулями, принятого в системе.

Информации о  программных модулях хранится в библиотеке модулей (рис.2). Библиотека модулей содержит порядка двухсот модулей и разбита на группы в соответствии с функциональным назначением модулей: Преобразование, Анализ, Синтез,  Идентификация, Адаптивное управление, Моделирование, Ввод-вывод, Вспомогательные.

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

рис.2 Библиотека модулей

3. Расширение возможностей языка разработки директив системы ГАММА

Развитие системы ГАММА осуществляется в двух направлениях:

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

2.      Расширение набора базовых функций линейной алгебры: функций для работы с векторами и матрицами.

Язык ГАММА является проблемно-ориентированным языком, предназначенным для создания директив системы ГАММА. В предыдущей версии  языка были реализованы только средства для вызова программных модулей, операторы ввода-вывода данных и простейшие управляющие конструкции.

Для разработки самих модулей до последнего времени использовались языки С и FORTRAN. Хранение модулей в виде исполняемых файлов и обмен данными посредством файлов с одной стороны обеспечивают большую гибкость и минимальные требования к структуре самих модулей, с другой стороны – это крайне неэффективно с точки зрения времени выполнения директивы.

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

В настоящее время разрабатывается интерпретатор новой версии языка ГАММА. В языке  реализуются следующие возможности:

-        создание типов данных, задаваемых пользователем;

-        статические и динамические массивы;

-        составной оператора;

-        условный оператор if then;

-        оператор выбора case of;

-        операторы цикла for \ while \ repeat;

-        исключения try except finally;

-        использование функций и процедур.

Проблемная ориентация языка ГАММА обеспечивается за счет включения в состав языка функций для работы векторами, матрицами, полиномами. В языке реализованы следующие функции [4]:

-        Операции с матрицами: сложение, вычитание, умножение, деление, вычисление определителя, вычисление обратной матрицы, вычисление размерности и т.д.

-        Операции с полиномами: сложение, вычитание, умножение, деление, вычисление значения от заданного аргумента.

-        Операции преобразования.

Литература

1.      Дьяконов В.П., Круглов В. MATLAB. Анализ, идентификация и моделирование систем. Специальный справочник. СПб.: Питер, 2002 г.

2.      Козлов О.С., Кондаков Д.Е., Скворцов Л.М. и др. Программный комплекс "МВТУ" - современное средство автоматизированного исследования и проектирования систем управления// Труды II Международной конференции по проблемам управления. М.: ИПУ им. В.А. Трапезникова РАН. 2003.

3.      Михайлова Л.С. Двухуровневая система автоматического синтеза алгоритмов автоматического управления ГАММА-2РС. Труды IV международной конференции «Системы проектирования, технологической подготовки производства и управления этапами жизненного цикла промышленного продукта CAD/CAM/PDM-2004», CD-ROM, Москва, ИПУ РАН, 2004.

4.      Александров А.Г., Михайлова Л.С. Реализация базовых функций линейной алгебры в системе ГАММА, Труды XXI Международной научной конференции «Математические методы в технике и технологиях».