Управляйте разделами кода для блока Subsystem

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

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

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

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

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

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

Управляйте разделами кода, используя параметры блока 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 является примером генерации кода с одним функциональным блоком. Атомарная подсистема, для которой вы генерируете код, не содержит других подсистем.

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

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

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

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