Программирование встраиваемых систем |
SimInTech является мощным инструментом для разработки алгоритмов управления различной степени сложности. Одним из важных преимуществ является поддержка концепции сквозного проектирования алгоритмов. Реализация данной концепции в SimInTech предусматривает, что сначала на базе идей технолога создается функциональная блок-схема алгоритма из типовых блоков, содержащихся в библиотеке (причем блоки могут быть как базовыми, т.е. изначально содержащимися в библиотеке, так и пользовательскими, т.е. созданными пользователем на основе базовых блоков и специального блока «Субмодель»), затем схема может быть проверена и, при необходимости, отлажена при совместном моделировании с моделью объекта управления, а после автоматически преобразован при помощи встроенных инструментов в исходный код для целевой системы, который после компиляции может быть использован в программируемом контроллере. Получаемый исходный код при этом функционально идентичен с исходной блок-схемой алгоритма управления или регулирования.
Рисунок 1. Выбор кодогенератора
Для последующей работы мы будем использовать «Кодогенератор Си». Руководство пользователя по кодогенератору ST предоставляется по отдельному запросу. Основные принципы работы остаются такими же как и для кодогенератора на язык Си.
Рисунок 2. Окно кодогенератора
Рисунок 3. Закладки окна кодогенератора
В нем можно увидеть закладки, отвечающие за различные функции и настройки кодогенератора (Рисунок 3), а именно: Загрузка; Настройки; Отладчик; Дополнительно; Список конфигураций. Рассмотрим каждую из них.
Закладка «Загрузка»
Рисунок 4. Области закладки «Загрузки»
Таблица проектов содержит следующие столбцы:
Закладка «Настройки»
Закладка «Настройки» отвечает за настройки кодогенератора (Рисунок 5).
Рисунок 5. Закладка «Настройки»
В поле «Имя конфигурации загрузки» указывается имя файла конфигурации загрузки. Обратите внимание, что имя указывается без расширения .alt. По умолчанию имя конфигурации загрузки задано default.
В поле «Директория исходиков» прописывается путь сохранения сгенерированных программ. Рядом с полем расположена иконка, при нажатии на которую возникает окно, с помощью которого можнов выбирать путь сохранения можно с помощью стандартного инструментария Windows.
С помощью выпадающего списка «Директория шаблона кода» осуществляется выбор и настройка генерации программ в соответствии с типом целевой операционной системы, т.е. пользователь выбирает тот шаблон генерации кода, который соответствует целевой операционной системе и архитектуре. В соответствии с выбором пользователя инструментом «Кодогенератор» будет автоматически выбран шаблон, по которому будет генерироваться код, учитывающий особенности операционной системы, под которой он будет исполняться. Шаблоны генерации кода находятся в директории C:\SimInTech\bin\CodeTemplates.
Если в выпадающем списке нет необходимой пользователю системы, то он может самостоятельно, воспользовавшись иконкой выбора пути, указать путь к директории с необходимыми шаблонами.
Выпадающий список «Имя блока в коде» определяет правило формирования имён переменных в программном коде для блоков, из которых собрана расчетная схема.
Значение параметра | Примечание |
---|---|
Номер при сортировке |
В качестве базы для имени внутренних переменных в генерируемом коде Си используются сквозные номера, присвоенные SimInTech при сортировке блоков расчетной схемы; При дополнении или изменении расчетной схемы внутренним переменным будут присвоены новые номера в соответствии с новой сортировкой, происходящей при инициализации схемы и/или генерации кода. |
Ограниченный md5-хэш (6 символов) | В качестве базы для имени внутренней переменной используются первые 5 символов от md5-хэш функции полного имени блока. |
Транслитерированное имя | В качестве базы для имени внутренней переменной используется текстовое имя в формате <имя субмодели>_<имя блока>. |
Полный md5-хэш (32 символа) | В качестве базы для имени внутренней переменной используются первые 32 символа от md5-хэш функции полного имени блока. |
Ограниченный md5-хэш (12 символов) | В качестве базы для имени внутренней переменной используются первые 12 символов от md5-хэш функции полного имени блока. |
Выпадающий список «Стиль заголовка кода» определяет способ генерации заголовочного файла на языке программирования Си, с помощью которого происходит автоматическая привязка текстовых идентификаторов к нужным адресам в памяти. Существует несколько способов генерации, которые перечислены в таблице ниже.
Значение параметра | Примечание |
---|---|
С внутренними таблицами переменных (DLL) | В заголовочный файл, на основе которого генерируется динамически загружаемая библиотека или программа, встраиваются служебные таблицы с указанием имён переменных, соответствующим им адресом в памяти и типом данных (целый, вещественный и т.п.); |
С внешними таблицами переменных (EXE) | В обрабатываемый компилятором заголовочный файл не пишутся служебные таблицы с именами переменных. Служебные таблицы генерируются в бинарные файлы, структура которых подробно описана в руководстве системного программиста |
Автоопределение по ini-файлу в шаблоне кода |
Опция позволяет автоматически выбирать тип генерации заголовочного файла: с внутренними или внешними таблицами переменных в соответствии с выбранным шаблоном кода. При этом в директории шаблона кода должен присутствовать ini-файл, в котором в текстовом виде указывается идентификатор способа определения генерации заголовочного файла. |
Поле «Команда сборки модуля» содержит текст вызова скрипт-файла (командного файла, т.е. bat-файла), который производит автоматическую компиляцию расчетного модуля по сгенерированным кодогенератором исходным кодам.
Поле «Команда загрузки в целевую систему» содержит строку вызова скрипт-файла, который производит загрузку скомпилированных расчетных модулей (программ) и других необходимых файлов на целевую систему.
Поле «Префикс имён переменных» отвечает за символ, дописываемый в начало имени переменных Си кода.
Закладка «Отладчик»
Закладка отвечает за настройки отладчика и управление расчетным процессом в приборе (Рисунок 6). Рассмотрим подробнее выпадающие списки и поля, находящиеся на данной закладке.
Рисунок 6. Закладка «Отладчик»
Выпадающий список «Режим изменения параметров» отвечает за выбор режима синхронизации изменяемых пользователем свойств и содержит два способа:
В поле «Параметры соединения (хост:порт)» указывается адрес целевой системы и через двоеточие порт подключения (в случае, если порт не указан, то подключение производится к порту по умолчанию с номером 22375). При этом если активировать пункт «Автопересоединение», то при потере связи SimInTech с удаленным компьютером периодически будут осуществляться попытки автоматического подсоединения до установления связи.
В поле «Имя DLL удаленного доступа» прописывается имя динамически загружаемой библиотеки, реализующей алгоритм подключения и сетевого взаимодействия (получения, отправки данных) с сервером отладки GdbServer.
В поле «Имя объекта внутри DLL» прописывается имя модуля, которое обеспечивает связь программы на удаленном компьютере, с сервером отладки. Используется при необходимости создания поддержки собственного протокола передачи данных, отличающегося от заложенного в динамическую библиотеку avrordbg.dll.
Удаленное управление программой, находящейся на приборе, осуществляется при помощи кнопок, находящихся в области «Управление прибором».
Назначение данных кнопок следущее:
Закладка «Дополнительно»
Рисунок 7. Закладка «Дополнительно»
Рисунок 8. Закладка «Список конфигураций»
Закладка «Список конфигураций»
Закладка «Список конфигураций» отвечает за работу сразу с несколькими файлами конфигурации (alt-схемами). В случае, если пользователю необходимо сгенерировать и загрузить программы для нескольких целевых систем одновременно, то можно довольно просто это осуществить воспользовавшись данной закладкой.
Закладка «Список конфигураций» аналогично закладке «Загрузка» содержит три области: панель кнопок, область конфигураций и окно сообщений.
Панель кнопок содержит следующие кнопки:
Типы файлов SimInTech, с которыми работает инструмент кодогенератора
Работа с кодогенератором предполагает работу с файлами, имеющими следующие расширения:
Для получения навыков работы с кодогенератором проделаем следующее пошаговое упражнение, демонстрирующее основные этапы и действия, связанные с работой инструментом кодогенерации SimInTech.
Будем работать с расчетной схемой регулятора, которая находится в директории \SimInTech\Demo\Автоматика и математика\Типовые блоки алгоритмов АЭС\Штатный регулятор питания барабан-сепаратора (БС)\Штатный регулятор питания (ШРП) БС.
Для того, чтобы не «испортить» пример, находящийся в Demo, создадим в C:\SimInTech\Projects собственную директорию Регулятор, в которую скопируем содержимое директории из \SimInTech\Demo\Автоматика и математика\Типовые блоки алгоритмов АЭС\Штатный регулятор питания барабан-сепаратора (БС)\Штатный регулятор питания (ШРП) БС:Внешний вид директории ..\Регулятор после выполнения действий 1 и 2, представлен на рисунке ниже.
Рисунок 9. Содержимое директории Регулятор
Рисунок 10. Окно кодогенератора с загруженным файлом конфигурации
Таким образом, если для добавляемого файла оставить параметры, добавляемые по умолчанию, то в сгенерированной программе он будет вызываться 1 раз каждые 60 мс.
Рисунок 11. Файл конфигурации с добавленным проектом
Рисунок 12. Окно проекта с расчетной схемой
Рисунок 13. Параметры расчета схемы регулятора с выделенным свойством «Имя (имена) алгоритма»
Рисунок 14. Изменения на вкладке «Настройки»
Рисунок 15. Сообщение «Генерация исходников завершена успешно»
Рисунок 16. Каталог с файлами, получившимися после работы генератора кода
cd /home/NordWind/ ./GdbSever
Таким образом мы запустим GdbServer, используемый удалённо для запуска исполняемой среды, удаленной отладки и отображения результатов работы алгоритма на инструментальном компьютере.
Отметим следующее: при формировании файлов .so, .intvars, .extvars участвует имя алгоритма, заданное в параметрах расчета проекта (см. пункт 6), а при формировании файла .conf используется имя конфигурации загрузки, задаваемое на вкладке «Настройки» в кодогенераторе.
<IP-адрес устройства>:22375;timeout=10000, где IP-адрес устройства – это IP-адрес целевого компьютера, который можно узнать с помощью команды ipconfig, или аналогичной, набранной в командной строке.
Рисунок 17. Параметры расчета схемы регулятора с выделенным свойством «Имя (имена) алгоритма»
Рисунок 18. Активация режима «Удаленный» в главном меню
В SimInTech возможно производить отладку алгоритма на целевом компьютере, используя расчетную модель какого-либо оборудования, с которым должен работать данный контроллер. Например, если есть задача подготовки алгоритма управления какой-либо теплогидравлической системой с помощью контроллера, то решить ее в SimInTech можно следующим образом (схема решения упрощенно выглядит так):
Такой подход дает следующие преимущества: еще до натурных испытаний на объекте уже можно с высокой долей вероятности получить представление обо всех особенностях работы алгоритма, исправить алгоритмические ошибки, понять, как исполнение алгоритма влияет на технологическую схему (т.е. проходит ли включение/отключение различного оборудования гладко или образует всплески параметров, остаются ли технологические параметры в различных режимах в заданных границах или переходят их и т.п.), оценить степень этого влияния, проанализировать устойчивость регуляторов и т.д.
Рассмотрим пример совместной работы теплогидравлической модели и алгоритмов, загруженных в контроллер, созданный на основе проекта системы KBA. Данный проект находится в директории SimInTech\Demo\Интеграция со сторонним ПО\Теплогидравлика TPP\KBA - промконтур охлаждения ядерного реактора и представляет собой набор файлов с общей базой данных сигналов, работающих в пакете проектов kba.pak. Каждый файл отвечает за определенную область моделирования:
При загрузке и последующем расчете kba.pak проекты обмениваются данными через общую базу данных сигналов.
Для того, чтобы продемонстрировать совместную работу алгоритма управления на удаленном компьютере и локальной модели, нам необходимо выполнить ряд действий, которые изложены ниже.
Для каждого из вновь созданных файлов проектов так же необходимо прописать пути доступа к базе данных на вкладке «Настройка» в параметрах расчета схемы.