Simulink® PLC Coder™ преобразует подсистемы в модули функций согласно следующим правилам:
Генерирует функциональный блок для атомарной подсистемы верхнего уровня, для которой вы генерируете код.
Генерирует блок функции для атомарной подсистемы, чей параметр Function packaging установлен в Reusable function
.
Inlines сгенерированный код из атомарных подсистем, чей параметр Function packaging установлен в Inline
, в функциональный блок, который соответствует подсистеме ближайшего предка. Этот ближайший предок не может быть встроен.
Для генерации кода из подсистемы, не имеющей входных или выходных параметров, необходимо задать параметр Function packaging блока равным Reusable function
.
В этих разделах используется код, сгенерированный CoDeSys версии 2.3.
Можно разделить сгенерированный код с помощью следующих параметров блоков 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 не поддерживает |
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
:
Откройте S1 диалоговое окно параметров блоков подсистемы.
Если флажок Treat as atomic unit еще не установлен, установите его.
Перейдите на вкладку Code Generation.
Установите Function packaging значение Reusable function
.
Установите Function name options значение User specified
.
В поле Function name укажите пользовательское имя. Для примера введите my_own_subsystem
.
Сохраните новые настройки.
Сгенерируйте код для родительской подсистемы.
Наблюдайте за переименованным функциональным блоком.
Код для 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
компоненты.