Система ГАММА: расширение возможностей языка
разработки директив
А.Г. Александров,
в.н.с., д.ф.-м.н., проф.,
ИПУ РАН, alex7@ipu.rssi.ru, Москва
Л.С. Михайлова,
доц., к.т.н.,
ЭПИ МИСиС, lsmixx@rambler.ru, Электросталь
В
настоящее время в распоряжении специалистов в области автоматического управления
находится большое число программных средств, предназначенных для автоматизации
разработки систем автоматического управления (САУ). Здесь можно упомянуть как
зарубежные системы: IDPAC, CYNPAC, KEDDS, MATLAB [1], так и отечественные
ДИСПАС, МВТУ [2], ГАММА [3] и др.
Можно
выделить две категории пользователей этих программных средств: инженеры-разработчики
реальных систем автоматического управления, которые являются специалистами в
области управления конкретными объектами и обладают некоторыми знаниями в
области теории автоматического управления (ТАУ); исследователи – это ученые-специалисты в области ТАУ, которые
занимаются исследованием и разработкой новых
методов и процедур решения задач ТАУ.
Система
MATLAB является лидером среди средств разработки и исследования различных методов
теории автоматического управления. Это объясняется наличием большого числа
реализованных в системе элементарных функций и эффективным языком
программирования. Однако MATLAB в своем исходном виде вряд
ли может применяться как средство
решения комплексных инженерных задач рядовыми инженерами-разработчиками САУ,
т.к. пользователи этой категории не обладают достаточно глубокими знаниями в
области теории автоматического управления и в области программирования и,
следовательно, не в состоянии составить программу для решения сложной задачи.
Система
ГАММА изначально создавалась как система для инженеров-разработчиков САУ. Основная
идея, реализованная в системе, это предоставление пользователям категории
«инженер» средств для автоматического решения задач разработки САУ. Особенности
системы: наличие проектных процедур (директив) для решения задач синтеза САУ,
которые обеспечивают автоматическое решение задач пользователями категории
«инженер»; возможность синтеза на основе инженерных показателей качества (установившиеся
ошибки, время переходного процесса и т.д.); наличие средств для разработки
проектных процедур пользователями системы, относящимися к категории «исследователь».
К недостаткам системы, которые затрудняют реализацию новых алгоритмов, можно
отнести небольшое количество базовых математических функций для работы с
матрицами и полиномами, а также
ограниченные возможности языка программирования системы ГАММА.
Отличительной особенностью системы ГАММА является
разделение функций пользователей за счёт предоставления каждой категории
пользователей собственного интерфейса к ресурсам системы. Таким образом,
система ГАММА состоит из двух подсистем:
-
Среды инженера, которая
представляет собой совокупность проектных процедур для автоматического решения
задач синтеза САУ, идентификации и адаптивного управления инженерами-разработчиками.
-
Среды исследователя, которая содержит
средства для разработки программного обеспечения первого уровня: библиотеку
программных модулей и собственный язык программирования ГАММА, предназначенный
для разработки директив системы.
Среда инженера обеспечивает решение конкретных задач
проектирования САУ посредством реализованных в системе проектных процедур
(директив). Особенности директивы:
-
Директива представляет собой законченную самодокументирующуюся программу,
такую, что пользователь, не обладающий глубокими знаниями в теории
автоматического управления, может с её помощью решить достаточно сложную задачу
проектирования системы автоматического управления (САУ).
-
Интерфейсы всех директив унифицированы, что значительно упрощает работу
с системой. Ввод-вывод данных осуществляется на естественном языке (в виде
векторов, матриц, дифференциальных уравнений и т.д.).
-
Структурно директива состоит из трёх частей: интерфейса, который обеспечивает
ввод исходных данных в естественном виде; расчётной части; операций вывода
результатов работы в протокол решения задачи.
-
Директивы представляют собой программу на языке ГАММА. Расчётная часть
директивы состоит из операций вызова математических функций, входящих в ядро
системы и функций, написанных на языке ГАММА.
В системе имеется несколько групп директив:
-
Частотная идентификация (частотная идентификация, частотная идентификация
с самонастройкой амплитуд испытательного сигнала, частотная идентификация с
самонастройкой частот испытательного сигнала и др.)
-
Адаптивное управление (с использованием частотной идентификации)
-
Синтез регулятора заданного объекта (LQ-оптимальное управление, H-бесконечное
субоптимальное управление, управление по заданной точности и др.)
Пользователь
работает в системе следующим образом: выбирает из списка директиву и затем по
запросу системы вводит на естественном языке исходные данные (дифференциальные
уравнения объекта, границы возмущений, допуска на технические показатели и
т.д.) (рис.1а) После ввода исходных данных задача решается автоматически (без
участия пользователя). Результатом работы ГАММА являются дифференциальные либо
разностные уравнения регулятора (для задач синтеза и адаптации), идентифицированная
модель объекта (для задач идентификации), а также графики процессов управления
(рис.1б).
рис.1а) Форма для ввода исходных данных директивы; 1б) Результаты решения задачи
Среда исследователя предназначена для разработки директив.
Директивы в системе ГАММА-2РС состоят из отдельных программных модулей. Каждый
модуль реализует элементарную проектную операцию, т.е. решает элементарную с
точки зрения ТАУ задачу (например, анализ управляемости, решение уравнения
Риккати и т.п.). Модули могут разрабатываться на любых языках программирования
высокого уровня. Согласованная работа модулей достигается за счет соблюдения
формата обмена данными между модулями, принятого в системе.
Информации
о программных модулях хранится в
библиотеке модулей (рис.2). Библиотека модулей содержит порядка двухсот модулей
и разбита на группы в соответствии с функциональным назначением модулей:
Преобразование, Анализ, Синтез, Идентификация,
Адаптивное управление, Моделирование, Ввод-вывод, Вспомогательные.
Для
разработки директив системы используется собственный язык программирования
ГАММА, интерпретатор которого является частью системы ГАММА.
рис.2
Библиотека модулей
Развитие
системы ГАММА осуществляется в двух направлениях:
1.
Усовершенствование языка ГАММА, а
именно, добавление в язык новых конструкций, реализация процедур и функций,
изменение механизма вызова вычислительных модулей.
2.
Расширение набора базовых функций линейной алгебры: функций для работы с
векторами и матрицами.
Язык
ГАММА является проблемно-ориентированным языком, предназначенным для создания
директив системы ГАММА. В предыдущей версии
языка были реализованы только средства для вызова программных модулей,
операторы ввода-вывода данных и простейшие управляющие конструкции.
Для
разработки самих модулей до последнего времени использовались языки С и FORTRAN.
Хранение модулей в виде исполняемых файлов и обмен данными посредством файлов с
одной стороны обеспечивают большую гибкость и минимальные требования к
структуре самих модулей, с другой стороны – это крайне неэффективно с точки
зрения времени выполнения директивы.
Наиболее
эффективным и привычным для большинства пользователей является подход, при
котором вычислительные модули пишутся на языке, интерпретатор которого является
частью системы.
В
настоящее время разрабатывается интерпретатор новой версии языка ГАММА. В
языке реализуются следующие возможности:
-
создание типов данных, задаваемых пользователем;
-
статические и динамические массивы;
-
составной оператора;
-
условный оператор if then;
-
оператор выбора case of;
-
операторы цикла for \ while \ repeat;
-
исключения try except finally;
-
использование функций и процедур.
Проблемная
ориентация языка ГАММА обеспечивается за счет включения в состав языка функций
для работы векторами, матрицами, полиномами. В языке реализованы следующие
функции [4]:
-
Операции с матрицами: сложение, вычитание,
умножение, деление, вычисление определителя, вычисление обратной матрицы,
вычисление размерности и т.д.
-
Операции с полиномами: сложение, вычитание,
умножение, деление, вычисление значения от заданного аргумента.
-
Операции преобразования.
1.
Дьяконов
В.П., Круглов В. MATLAB. Анализ, идентификация и моделирование систем. Специальный
справочник. СПб.: Питер,
2.
Козлов
О.С., Кондаков Д.Е., Скворцов Л.М. и др. Программный комплекс "МВТУ"
- современное средство автоматизированного исследования и проектирования систем
управления// Труды II Международной конференции по проблемам управления. М.:
ИПУ им. В.А. Трапезникова РАН. 2003.
3. Михайлова Л.С. Двухуровневая система
автоматического синтеза алгоритмов автоматического управления ГАММА-2РС. Труды IV международной конференции «Системы
проектирования, технологической подготовки производства и управления этапами
жизненного цикла промышленного продукта CAD/CAM/PDM-2004», CD-ROM, Москва, ИПУ РАН, 2004.
4.
Александров
А.Г., Михайлова Л.С. Реализация базовых функций линейной алгебры в системе
ГАММА, Труды XXI Международной
научной конференции «Математические
методы в технике и технологиях».