В данном разделе с помощью встроенного в программное обеспечение SimInTech генератора кода на языке Си будет разработан новый блок, который представляет собой ПИД-регулятор. ПИД-регулятор часто используется в системах автоматического управления для формирования управляющего сигнала с целью получения необходимых точности и качества переходного процесса. В SimInTech среди стандартных блоков ПИД регулятора нет, поэтому создание такого блока значительно упрощает проектирование АСУ ТП. Достигается существенный прирост скорости расчета, а также возможность по одному и тому же алгоритму рассчитывать несколько типовых объектов.
Откроется новое окно проекта «Схема модели общего вида».
На первый вход блока «Входной контакт» будет подаваться уставка для регулируемой величины, а на второй вход блока «Входной контакт» фактическое значение величины, взятое с соответствующего датчика.
Также следует отметить, что в рамках данной задачи реализуется векторный ПИД-регулятор, что дает возможность одновременной обработки нескольких сигналов на одном блоке.
Рисунок 1. Рабочая область проекта с размещенными блоками.
Рисунок 2. Рабочая область проекта с заданными именами для входных и выходных контактов
Рисунок 3. Окно «Свойства» верхнего блока «Входной контакт»
Рисунок 4. Окно «Свойства» блока «Выходной контакт»
Рисунок 5. Рабочая область проекта с добавленным блоком «Субмодель» с подписью «Входные параметры»
Войти в блок «Субмодель» с подписью «Входные параметры» двойным нажатие правой кнопкой мыши по блоку. Поскольку ПИД-регулятор имеет шесть свойств, описанных выше, то требуется добавить на схему 6 блоков «Входной контакт» из вкладки «Сигналы».
Рисунок 6. Окно «Свойства» блока «Входной контакт» внутри субмодели с подписью «Входные параметры»
Для блоков «Входной контакт» c установленным свойством «Имя контакта» равным «Property:P», «Property:I», «Property:D», «Property:Td» установить для свойства «Значение по умолчанию» формулу «10#1».
Для остальных блоков «Входной контакт» c установленным свойством «Имя контакта» равным «Property:I0», «Property:D0» установить для свойства «Значение по умолчанию» формулу «10#0»
Рисунок 7. Рабочая область субмодели с подписью «Входные параметры»
Рисунок 8. Рабочая область проекта с добавленным блоком «Сравнивающее устройство»
Рисунок 9. Схема ПИД-регулятора
Если задавать начальные условия для блоков «Интегратор» и «Инерционно-дифференцирующее звено» нет необходимости, то схема ПИД-регулятора остается прежней (Рисунок 9).
Рисунок 10. Рабочая область проекта с измененной схемой
Рисунок 11. Рабочая область субмодели с подписью «П» с пропорциональной составляющей регулятора
Пропорциональный элемент ПИД-регулятора создан. Выйти из субмодели с подписью «П». Теперь субмодель «П» имеет два порта «Вход» и «Выход».
Войти в блок «Субмодель» с подписью «И», который будет выполнять функцию интегрирующего звена. Динамика интегрирующего звена описывается следующим уравнением:
где xi(t) – вектор входных сигналов, yi(t) – вектор выходных сигналов, ki – вектор коэффициентов усиления.Рисунок 12. Рабочая область субмодели с подписью «И» c интегрирующей составляющей регулятора
Интегрирующий элемент ПИД-регулятора создан. Выйти из субмодели с подписью «И». Теперь субмодель «И» имеет два порта «Вход» и «Выход».
Осталось предусмотреть возможность задания начальных условий для интегрирующего звена. Начальные условия для интегратора задаются с помощью блока «Интегратор с изменяемыми н.у» путем установки следующего алгоритма: как только управляющий сигал становится больше 0.5, значение, накопленное интегратором, сбрасывается, и на выход подается величина новых начальных условий.
Рисунок 13. Рабочая область субмодели с подписью «Входные параметры» с добавленной схемой задания начальных условий интегратора
Поскольку векторный сигнал имеет 10 составляющих элементов, то необходимо установить размерность управляющего сигнала. Для этого необходимо в блоке «Размножитель» установить свойство «Коэффициенты размножения» равным «10#1», что соответствует вектору «[1,1,1,1,1,1,1,1,1,1]».
Рисунок 14. Рабочая область субмодели с подписью «И» с интегральной составляющей регулятора с возможностью задания н.у.
Интегрирующий элемент ПИД-регулятора с возможностью задания начальных условий создан. Выйти из субмодели с подписью «И».
Войти в блок «Субмодель» с подписью «Д», который будет выполнять функцию инерционно-дифференцирующее звена. Динамика инерционно-дифференцирующее звена описывается следующим уравнением:
где xi(t) – вектор входных сигналов, yi(t) – вектор выходных сигналов, ki – вектор коэффициентов усиления, Ti – вектор постоянных времени.Рисунок 15. Рабочая область субмодели с подписью «Д» с инерционно-дифференцирующей составляющей регулятора
Для блока «Производная» задать свойство «Начальные условия» равным «10#0», Для блока «Задержка на шаг интегрирования» задать свойство «Начальные условия» равным «10#0». Инерционно-дифференцирующей элемент ПИД-регулятора с возможностью задания начальных условий создан.
Рисунок 16. Рабочая область проекта со схемой-шаблоном ПИД-регулятора для генерации кода
После создания схемы-шаблона можно приступить к процессу генерации кода.
Для генерации кода существует набор подготовленных шаблонов, настроенных под различные компиляторы. В SimInTech реализовано несколько вариантов шаблонов генерации кода, предназначенных для разных аппаратных платформ и ОС. В их числе – генерация кода под Windows, Linux, QNX. С сайта http://www.simintech.ru можно скачать набор инструментов MinGW для создания исполняемых файлов и библиотек под Windows. В данном примере будет пользоваться именно этот набор инструментов.
Рисунок 17. Окно «Параметры расчета»
Далее настройка конфигурации кодогенератора. Для этого необходимо в главном окне SimInTech перейти в меню «Кодогенератор», в появившемся списке выбрать «Кодогенератор Си». Откроется окно «Кодогенератор Си», в котором необходимо перейти на вкладку «Настройки». В строке «Директория шаблона кода» нужно выбрать интересующий шаблон для кодогенерации. Как было сказано выше, это шаблон для создания DLL-файлов под Windows «MinGW», поэтому требуется выбрать «%codetemplates%MinGW_DLL\».
Рисунок 18. Окно «Кодогенератор Си» с измененными настройками конфигурации кодогенератора
Теперь требуется сохранить конфигурацию кодогенератора. Для этого необходимо в окне «Кодогенератор Си» перейти во вкладку «Загрузка» и нажать на кнопку «Сохранить конфигурацию». Откроется окно проводника операционной системы, где необходимо выбрать папку, в которой сохранен проект со схемой-шаблоном, установить имя файла «Конфигурация кодогенератора» и нажать на кнопку «Сохранить».
Рисунок 19. Окно «Кодогенератор Си» с добавленным проектом
Далее требуется пересобрать модули и конфигурацию. Для этого необходимо в окне «Кодогенератор Си» нажать на кнопку «Пересобрать модули и конфигурацию». Откроется окно сохранения всех проектов, в котором необходимо нажать на кнопку «Да». Начнется процесс сборки и генерации файлов. По завершению процесса в окне «Кодогенератор Си» отобразятся следующие уведомления.
В процессе генерации кода система в окне сообщений отобразятся следующие уведомления (Рисунок 20)
Рисунок 20. Окно уведомлений
Как видно из рисунка (Рисунок 20), система информирует, что максимально допустимое количество блоков для текущей версии лицензии не достигнуто, а также генерация DLL-файла прошла успешно. Убедится в этом возможно, зайдя в папку, где находится схема-шаблон. Там появился ряд новых файлов:
В прошлой главе был сгенерирован DLL-файл под операционную систему Windows, который содержит разработанную ранее модель векторного ПИД-регулятора. В этой главе будет показано, как загружать написанные на языке Си DLL-файлы в SimInTech.
Откроется новое окно проекта «Схема модели общего вида». Требуется сохранить созданный проект.
Рисунок 21. Рабочая область нового проекта с размещенным блоком «Внешняя DLL»
Рисунок 22. Окно «Свойства» блока «Внешняя DLL»
Рисунок 23. Изменено расположение портов
Рисунок 24. Окно «Редактирование текста» с измененным текстом
Рисунок 25. Рабочая область проекта с измененным графическим изображением блока
Рисунок 26. Окно «Редактирование блока» с добавленными новыми свойствами
Рисунок 27. Рабочая область проекта с добавленными первыми входными сигналами
Рисунок 28. Окно «Свойства» блока «Интегратор»
Рисунок 29. Рабочая область проекта со схемой проверки работы блока «ПИД»
Сохранить проект в директорию, где находится сгенерированный DLL-файл, под именем «Схема-загрузчик».
Рисунок 30. График регулируемых величин
Рисунок 31. Окно отладчика
В этой главе будет показан процесс создания новых библиотек и заполнения их блоками в SimInTech.
Первым делом для создания новой библиотеки нужно загрузить пустую библиотеку, на основе которой будем создавать свою собственную. Для этого необходимо нажать в главном окне SimInTech меню «Файл», в открывшемся списке выбрать «Загрузить библиотеку». Выбираем пустую библиотеку под названием «ClassLib».
Рисунок 32. Окно «Редактирование библиотеки» с выделенной кнопкой «Сохранить библиотеку в файл»
В открывшемся проводнике задать имя новой библиотеки «Regulators.csl». Все библиотеки SimInTech хранятся в директории …\SimInTech\bin и имеют расширение «csl».
Теперь нужно сделать созданную только что библиотеку активной. Для этого необходимо в главном окне SimInTech нажать на меню «Файл», в открывшемся списке выбрать «Загрузить библиотеку» в открывшемся окне проводника выбрать библиотеку «Regulators.csl».
Рисунок 33. Окно «Параметры» с выделенной кнопкой «добавить» и с добавленной новой библиотекой «Regulators.csl»
Рисунок 34. Окно «Свойства» блока «ПИД» с измененными свойствами
Рисунок 35. Окно «Свойства» блока ПИД-регулятор
Теперь требуется добавить блок «ПИД» в библиотеку «Regulators». Для этого необходимо выделить блок и нажать в главном окне SimInTech на меню «Файл», в открывшемся списке выбрать «Сохранить в библиотеку». В появившемся окне задать имя блока. Имя блока в библиотеке желательно задавать одинаковым с типом элемента (из свойств объекта). Нажать на кнопку «Ok».
Рисунок 36. Окно «Редактирование библиотеки» с добавленной страницей «Регуляторы»
Выделить запись «ПИД» и нажать по зеленой стрелке, указывающей налево. Блок переместиться в столбец «Записи страницы». Открыть вкладку «Свойства записей» и в строке «Группа» указать «МВТУ», определив, что библиотека будет отображаться только при разработке модели «Схема общего вида».
Осталось создать изображение бока для панели инструментов. Изображение должно представлять файл графического формата разрешением 32x32 пикселя. Добавить графическое изображение в колонку «Изображение кнопки в палитре» путем вставки из буфера обмена скопированного изображения, нажатием на кнопку «Из буфера», или путем выбора из окна проводника нужного изображениям нажатием на пустое поле под текстом «Изображение кнопки в палитре». Нажать на кнопку «Ок».
В главном окне SimInTech на панели инструментов появилась новая библиотека «Регуляторы», в которой находится блок «ПИД», теперь данный блок можно добавлять на схемы.
Рисунок 37. Панель инструментов