Сгенерируйте код для нечеткой системы Используя Simulink Coder

Можно сгенерировать код для блока Fuzzy Logic Controller с помощью Simulink® Coder™. Для получения дополнительной информации о генерации кода смотрите, Генерируют Код Используя Simulink® Coder™ (Simulink Coder).

Сгенерируйте код для нечеткой системы вывода

По умолчанию блок Fuzzy Logic Controller использует данные с двойной точностью для симуляции и генерации кода. Модель fuzzyPID сконфигурирована, чтобы использовать данные с двойной точностью. Для получения дополнительной информации о конфигурировании вашей нечеткой системы вывода для генерации кода смотрите Контроллер Нечеткой логики.

mdl = 'fuzzyPID';
open_system(mdl)

Это - хорошая практика, чтобы подтвердить производительность системы в Simulink. Запустите симуляцию. Модель сохраняет выходной ответ, u, к рабочей области MATLAB®.

sim(mdl)

Чтобы сгенерировать код для модели, используйте функцию rtwbuild. В данном примере подавите окно Command Window для процесса сборки.

set_param(mdl,'RTWVerbose','off')
rtwbuild(mdl)
### Starting build procedure for model: fuzzyPID
### Successful completion of build procedure for model: fuzzyPID

По умолчанию Simulink Coder генерирует код С для типичной цели в реальном времени. Чтобы выбрать различный конечный файл и язык, в диалоговом окне Configuration Parameters, изменяют Системный конечный файл и параметры Языка, соответственно.

Сгенерированный код хранится в новой папке fuzzyPID_grt_rtw в вашей текущей рабочей папке. Имя этой папки зависит от выбранного конечного файла.

В системе Windows®, по умолчанию, исполняемый файл под названием fuzzyPID.exe также добавляется к текущей рабочей папке. Чтобы сгенерировать код без компиляции, в диалоговом окне Параметров конфигурации, выбирают код Generate только параметр прежде, чем сгенерировать код.

Запустите исполняемый файл.

if ispc
    status = system(mdl);
else
    disp('The example only runs the executable on Windows system.');
end
The example only runs the executable on Windows system.

После того, как исполняемый файл завершается успешно (status = 0), программное обеспечение создает файл данных fuzzyPID.mat, который содержит результаты симуляции.

Можно сравнить выходной ответ от сгенерированного кода, rtw_y, с выводом от симуляции Simulink, y, с помощью следующего кода:

load fuzzyPID.mat
plot(tout,y,'b-',rt_tout,rt_y,'ro')
legend('Simulink','Executable','Location','Southeast')

Результат сгенерированного кода совпадает с симуляцией Simulink.

Можно также сгенерировать код для только подсистемы контроллера в этой модели. Для этого задайте подсистему при вызывании функции rtwbuild.

rtwbuild([mdl '/Fuzzy PID'])
### Starting build procedure for model: Fuzzy0
### Successful completion of build procedure for model: Fuzzy0

Можно развернуть сгенерированный код согласно потребностям приложения. Например, можно сконфигурировать свойства исполняемых файлов и создать статические или динамические библиотеки. Для получения дополнительной информации смотрите Рабочий процесс Процесса сборки для Систем реального времени (Simulink Coder).

Сгенерируйте код для других типов данных

Блок Fuzzy Logic Controller также поддерживает данные и фиксированной точки с одинарной точностью для симуляции и генерации кода. В обоих случаях ваша получившаяся нечеткая система уменьшила точность по сравнению с эквивалентной нечеткой системой с двойной точностью. Использование:

  • Данные с одинарной точностью, чтобы уменьшать объем потребляемой памяти вашей системы.

  • Данные фиксированной точки, если ваша целевая платформа только поддерживает вычисления с фиксированной точкой.

Чтобы использовать один из этих типов данных, установите свойство Типа данных блока и сконфигурируйте другие компоненты в модели, чтобы использовать совпадающий тип данных.

Модель fuzzyPID_single сконфигурирована для данных с одинарной точностью. Откройте модель.

mdl2 = 'fuzzyPID_single';
open_system(mdl2)

В этой модели параметр Типа данных блока Fuzzy Logic Controller устанавливается на single. Блок Fuzzy Logic Controller автоматически преобразовывает входные сигналы в заданный тип данных. Кроме того, Моделировать параметр использования устанавливается на Code Generation. Моделировать опция использования не влияет на процесс генерации кода. Вместо этого установка этой опции моделирует вашу нечеткую систему с помощью того же пути выполнения кода, используемого сгенерированным кодом.

Сгенерируйте код для этой модели.

set_param(mdl2,'RTWVerbose','off')
rtwbuild(mdl2)
### Starting build procedure for model: fuzzyPID_single
### Successful completion of build procedure for model: fuzzyPID_single

Установка параметра Типа данных блока Fuzzy Logic Controller гарантирует, что все шаги вывода используют заданный тип данных. Однако в зависимости от настройки других блоков в модели, часть сгенерированного кода может все еще использовать данные с двойной точностью.

Смотрите также

Похожие темы