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

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

Откройте подсистему верхнего уровня 'Подсистема' путем двойного щелчка по нему. Вы заметите, что это имеет набор блоков включая блок 'ExternallyDefinedBlock'. Пользователь хотел бы заменить это на внешне заданный блок в IDE PLC в сгенерированном коде. В этой модели 'ExternallyDefinedBlock' блок MATLAB®. Это могло быть любым другим блоком Simulink® или подсистемой также. Входной порт 'In1' является входом шины типа данных 'InBus'. Пользователь хотел бы предоставить определение 'InBus' внешне в IDE PLC. Точно так же пользователь хотел бы предоставить определение глобального настраиваемого параметра 'K1' блока Gain внешне.

Для этого щелкните правой кнопкой мыши на подсистеме верхнего уровня по 'Подсистеме' и выберите 'PLC Code-> Options...', чтобы поднять диалоговое окно 'Configuration Parameters'. В диалоговом окне выберите панель 'Symbols' под 'Генерацией кода PLC'. Вы будете видеть следующие символы в поле 'Externally Defined Symbols':

  ExternallyDefinedBlock InBus K1

Определение этих символов здесь соответственно не использовало бы функциональный блок, тип данных шины и глобальную переменную с теми же именами в сгенерированном структурированном тексте.

Теперь можно сгенерировать код Структурированного текста PLC для этой подсистемы путем щелчка правой кнопкой по подсистеме, блокируют и выбирают PLC Code-> Generate Code for Subsystem Alternatively, можно использовать следующую команду generatedFiles = plcgeneratecode ('plcdemo_external_symbols/Subsystem');

После генерации кода окно Diagnostic Viewer отображено с гиперссылками на файлы сгенерированного кода. Можно открыть сгенерированные файлы путем нажимания на ссылки.

В сгенерированном коде вы заметите, что существуют вызовы функционального блока 'ExternallyDefinedBlock', однако определение функционального блока было не использовано. Точно так же определение типа шины 'InBus1' и глобальная переменная 'K1' было также не использовано.