Разделы кода системы управления для блока Subsystem

Simulink® PLC Coder™ преобразовывает подсистемы в модули функционального блока согласно следующим правилам:

  • Генерирует функциональный блок для атомарной подсистемы верхнего уровня, для которой вы генерируете код.

  • Генерирует функциональный блок для атомарной подсистемы, параметр Function packaging которой устанавливается на Reusable function.

  • Встраивает сгенерированный код от атомарных подсистем, параметр Function packaging которых устанавливается на Inline в функциональный блок, который соответствует самой близкой подсистеме предка. Этот самый близкий предок не может быть встроен.

Для генерации кода от подсистемы без вводов или выводов необходимо установить параметр Function packaging блока к Reusable function.

Эти темы используют код, сгенерированный с Версией 2.3 CoDeSys.

Разделы кода системы управления Используя параметры блока Subsystem

Можно разделить сгенерированный код с помощью следующих параметров блока Subsystem на вкладке Code Generation. См. документацию блока Subsystem для деталей.

  • Function packaging

  • Function name options

Оставьте набор File name options значению по умолчанию, Auto.

Генерация отдельных разделов и встраивание кода подсистемы

Используйте параметр Function packaging, чтобы задать формат кода, чтобы сгенерировать для атомарной (невиртуальной) подсистемы. Программное обеспечение Simulink PLC Coder интерпретирует этот параметр в зависимости от установки, которую вы выбираете:

УстановкаИнтерпретация кодера
Auto

Использует оптимальный формат на основе типа и количества экземпляров подсистемы в модели.

Reusable function

Генерирует функцию с аргументами, которая позволяет повторное использование кода подсистемы, когда модель включает несколько экземпляров подсистемы.

Nonreusable function

Simulink PLC Coder не поддерживает упаковку Nonreusable function. Смотрите, Постоянные Ограничения.

Inline

Встраивает подсистему безусловно.

Например, в plcdemo_hierarchical_virtual_subsystem, вы можете:

  • Встройте код подсистемы S1 установкой Function packaging к Inline. Эта установка создает один функциональный блок для родительского элемента со встроенной подсистемой S1.

  • Создайте функциональный блок для подсистемы S2 установкой Function packaging к Reusable function или Auto. Эта установка создает два функциональных блока, один для родительского элемента, один для S2.

Изменять название подсистемы

Можно использовать параметр Function name options, чтобы изменить название подсистемы от той на этикетке блока. Когда Simulink PLC Coder генерирует программное обеспечение, он использует строку, которую вы задаете для этого параметра как имя подсистемы. Например, смотрите plcdemo_hierarchical_virtual_subsystem:

  1. Откройте диалоговое окно параметров блоков подсистемы S1.

  2. Если флажок Treat as atomic unit еще не устанавливается, выберите его.

  3. Кликните по вкладке Code Generation.

  4. Установите Function packaging на Reusable function.

  5. Установите Function name options на User specified.

  6. В поле Function name задайте пользовательское имя. Например, введите my_own_subsystem.

  7. Сохраните новые настройки.

  8. Сгенерируйте код для родительской подсистемы.

  9. Наблюдайте переименованный функциональный блок.

Один функциональный блок для атомарных подсистем

Код для plcdemo_simple_subsystem является примером генерации кода с одним функциональным блоком. Атомарная подсистема, для которой вы генерируете код, не содержит другие подсистемы.

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

Пример plcdemo_hierarchical_virtual_subsystem содержит атомарную подсистему, которая имеет две виртуальных подсистемы, S1 и S2, встроенный. Виртуальной подсистеме не выбрали параметр Treat as atomic unit. Когда вы генерируете код для иерархической подсистемы, код содержит только компонент FUNCTION_BLOCK HierarchicalSubsystem. Нет никаких дополнительных функциональных блоков для S1 и подсистем S2.

Несколько функциональных блоков для невиртуальных подсистем

Пример plcdemo_hierarchical_subsystem содержит атомарную подсистему, которая имеет две невиртуальных подсистемы, S1 и S2. Виртуальным подсистемам выбрали параметр Treat as atomic unit. Когда вы генерируете код для иерархической подсистемы, тот код содержит FUNCTION_BLOCK HierarchicalSubsystem, FUNCTION_BLOCK S1 и компоненты FUNCTION_BLOCK S2.