Можно сгенерировать структурированный текст для блока Fuzzy Logic Controller с помощью Coder™ Simulink ® PLC. Для получения дополнительной информации о генерации структурированного текста смотрите Генерацию кода (Simulink PLC Coder).
Хотя этот пример генерирует структурированный текст для системы нечеткого вывода Sugeno 1 типа 1, рабочий процесс также применяется к нечетким системам Mamdani и type-2.
По умолчанию блок Fuzzy Logic Controller использует данные двойной точности для симуляции и генерации кода. The fuzzyPID
модель сконфигурирована так, чтобы использовать данные двойной точности. Можно также использовать данные с одной точностью или с фиксированной точкой. Для получения дополнительной информации о настройке системы нечеткого вывода для генерации кода, смотрите Fuzzy Logic Controller.
mdl = 'fuzzyPID';
open_system(mdl)
Рекомендуется проверить эффективность системы в Simulink перед генерацией кода. Запустите симуляцию.
sim(mdl)
open_system([mdl '/Output'])
Закройте выходной график.
close_system([mdl '/Output'])
Чтобы сгенерировать структурированный текст для модели, используйте plcgeneratecode
(Simulink PLC Coder) функция, которая генерирует код для атомарной подсистемы в модели. Чтобы сгенерировать код для ПИД-контроллера Fuzzy, сконфигурируйте подсистему как атомарную подсистему, выбрав параметр Threat as atomic unit для подсистемы.
subsys = [mdl '/Fuzzy PID']; set_param(subsys,'TreatAsAtomicUnit','on')
При генерации кода только для блока Fuzzy Logic Controller поместите блок внутрь подсистемы и установите параметр Treat as atomic unit этой подсистемы.
Сгенерируйте структурированный текст для подсистемы нечеткого ПИД.
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