Структурированный текст для блока контроллера нечеткой логики можно создать с помощью Coder™ Simulink ® PLC. Дополнительные сведения о создании структурированного текста см. в разделе Создание кода (Simulink PLC Coder).
Хотя этот пример создает структурированный текст для системы нечеткого вывода Sugeno типа 1, рабочий процесс также применяется к системам нечеткого вывода Mamdani и типа 2.
По умолчанию блок контроллера нечеткой логики использует данные двойной точности для моделирования и генерации кода. fuzzyPID модель сконфигурирована для использования данных двойной точности. Можно также использовать данные с одной точностью или с фиксированной точкой. Дополнительные сведения о настройке системы нечеткого вывода для генерации кода см. в разделе Контроллер нечеткой логики.
mdl = 'fuzzyPID';
open_system(mdl)

Перед созданием кода рекомендуется проверить производительность системы в Simulink. Запустите моделирование.
sim(mdl)
open_system([mdl '/Output'])

Закрыть график вывода.
close_system([mdl '/Output'])
Чтобы создать структурированный текст для модели, используйте plcgeneratecode (Simulink PLC Coder) функция, которая генерирует код для атомной подсистемы в модели. Чтобы создать код для контроллера Fuzzy PID, настройте подсистему как атомарную подсистему, выбрав параметр Treat as atomic unit для подсистемы.
subsys = [mdl '/Fuzzy PID']; set_param(subsys,'TreatAsAtomicUnit','on')
При создании кода только для блока контроллера нечеткой логики поместите блок в подсистему и установите параметр Treat в качестве атомарного блока этой подсистемы.
Создание структурированного текста для подсистемы нечеткого PID.
plcgeneratecode(subsys);
### Generating PLC code for 'fuzzyPID/Fuzzy PID'.
### Using <a href="matlab:configset.showParameterGroup('fuzzyPID', { 'PLC Code Generation' } )">model settings</a> from 'fuzzyPID' for PLC code generation parameters.
### Begin code generation for IDE <a href="matlab:configset.showParameterGroup('fuzzyPID', { 'PLC Code Generation' } )">codesys23</a>.
### Emit PLC code to file.
### Creating PLC code generation report <a href="matlab:web('/tmp/BR2021ad_1584584_202060/publish_examples0/tpb78d34a0/ex15678560/plcsrc/html/fuzzyPID/fuzzyPID_codegen_rpt.html')">fuzzyPID_codegen_rpt.html</a>.
### PLC code generation successful for 'fuzzyPID/Fuzzy PID'.
### Generated files:
<a href="matlab: edit('plcsrc/fuzzyPID.exp')">plcsrc/fuzzyPID.exp</a>
По умолчанию сгенерированный код сохраняется в следующей папке.
plcsrc/fuzzy_PID.exp