Симуляция регулирования температуры и генерация кода с помощью логики лестницы

Этот пример показывает, как смоделировать контроллер температуры в Simulink ® с помощью логики лестницы. В примере также показана генерация тестовых примеров с помощью Simulink Design Verifier™, генерация кода на C и лестничной клетке и генерация лестничного теста.

Файл plcdemo_ladder_househeat_data.m инициализирует данные в рабочем пространстве модели. Чтобы внести изменения, можно отредактировать рабочее пространство модели непосредственно или отредактировать файл и повторно загрузить рабочее пространство модели. Чтобы просмотреть рабочее пространство модели, выберите МОДЕЛИРОВАНИЕ > Model Explorer из редактора Simulink.

Шаг 1: Открытие модели

Откройте plcdemo_ladder_househeat при помощи:

> > plcdemo_ladder_househeat_complete

Шаг 2: Инициализация модели

Когда модель открывается, она загружает информацию о доме из файла plcdemo_ladder_househeat_data.m. Файл делает следующее:

  • Определяет геометрию дома (размер, количество окон)

  • Определяет тепловые свойства материалов дома

  • Вычисляет тепловое сопротивление дома

  • Обеспечивает характеристики нагревателя (температура горячего воздуха,... скорость потока жидкости)

  • Определяет стоимость электроэнергии (0,09 $/кВт)

  • Задает начальную комнатную температуру (20 ° по Цельсию = 68 °... Фаренгейт)

Примечание: Время определяется в единицах часов. Определенные величины, такие как скорость потока воздуха, выражаются в час (не в секунду).

Шаг 3: Понимание компонентов модели

Заданные точки

Set Point является постоянным блоком. Он задает температуру, которая должна поддерживаться в закрытом помещении. По умолчанию это 70 степени по Фаренгейту. Температуры приведены в Фаренгейте, но затем преобразуются в Цельсий для выполнения вычислений.

Область значений

Range является постоянным блоком. Это задает область значений значений заданных точек комнатной температуры, которые будут колебаться. По умолчанию это 5 степени по Фаренгейту. Следовательно, комнатная температура будет колебаться между$Set\_L$ и$Set\_H$ где

$$Set\_L = Set Point - Range$$

$$Set\_H = Set Point + Range$$

Температурный Контроллер

Temperature Controller является подсистемой, имеющей контейнер AOI Runner. Внутри этого контроллера температуры AOI Runner находится функциональный блок лестничной схемы. Дважды кликните этот блок и выберите Логическая стандартная программа, чтобы просмотреть логику лестницы для контроллера температуры.

Дом

House является подсистемой, которая моделирует динамику внешнего окружения, дома и нагревателя. Для получения дополнительной информации см. пример «Тепловая модель дома».

Логика лестницы

Откройте Temperature Controller > Ladder Diagram Function Block > Logic Routine чтобы просмотреть лестничную схему для контроллера температуры

Первый прогон вычисляет$Set\_L$$Set\_H$ значения и на основе Set Point и Range входы. The GEQ активирует TEMP_H катушка, если Room Temperature больше или равно SET_H. Аналогично, The LEQ активирует TEMPL_L катушка, если Room Temperature меньше или равно SET_L значение.

Самая нижняя ступень включает нагреватель, если TEMP_L выход активен и отключает прослушиватель, если TEMP_H выход активен.

Шаг 4: Запустите симуляцию

Нажмите Run кнопка для запуска симуляции. Откройте HMI и использовать следующие элементы управления:

  • Настройки контроллера температуры: Позволяет изменять Set Point и Range входные значения.

  • Температура окружающей среды: Позволяет изменять среднюю наружную температуру и область значений ее изменения.

  • Комнатная температура: Отображает состояние нагревателя, а также графики внутренней и внешней температуры.

Шаг 5: Сгенерируйте тесты Simulink Design Verifier

Предварительно обработайте модель Simulink для генерации теста SLDV, выполнив следующую команду в Командном окне MATLAB:

> > plcladderoption (gcs, 'SLDV', ' on ')

Откройте Temperature Controller Подсистема и щелкните правой нажатие кнопки по блоку AOI Runner с именем Temperature Controller. Выберите Design Verifier > Generate test case for subsystem.

Шаг 6: Сгенерируйте код C

Убедитесь, что ert.tlc выбран на вкладке Генерация кода (Code Generation) параметра Параметры Конфигурации. Предварительно обработайте модель simulink для генерации кода C/C + + путем выполнения следующей команды в Командном окне MATLAB:

> > plcladderoption (gcs, 'FastSim', ' on ');

Откройте Temperature Controller Подсистема и щелкните правой нажатие кнопки по блоку AOI Runner с именем Temperature Controller. Выберите C/C++ Code > Build This Subsystem.

Шаг 7: Лестничный код и генерация теста

Откройте лестницу бака управляйте моделью теста:

> > plcdemo_ladder_househeat_tb

Выберите Temperature Controller/ Temperature Controller Runner блок и щелчок правой кнопкой мыши PLC Coder->Generate Code для Подсистемы, чтобы сгенерировать код лестницы.

Чтобы сгенерировать testbench, выберите Generate testbench for subsystem опция в PLC Configuration Parameters Dialog и сгенерируйте код.