您可以使用Simulink®编码器为模糊逻辑控制器块生成代码™. 有关生成代码的详细信息,请参阅万博1manbetx使用Simulink®编码器生成代码™万博1manbetx(万博1manbetxSimulink编码器)。
虽然此示例为1型Sugeno模糊推理系统生成代码,但工作流也适用于Mamdani和2型模糊系统。
默认情况下,模糊逻辑控制器块使用双精度数据进行模拟和代码生成模糊类型
模型配置为使用双精度数据。有关配置模糊推理系统以生成代码的更多信息,请参阅模糊逻辑控制器.
mdl=“fuzzyPID”;开放式系统(mdl)
在Simulink中验证系统的性能是一种很好的做法。运行仿真。模型保存了输出响应,万博1manbetxU
,转到MATLAB®工作区。
sim卡(mdl)
要为模型生成代码,请使用rtwbuild
对于本例,抑制生成过程的命令窗口输出。
设置参数(mdl,“RTWVerbose”,“关”)rtwbuild(mdl)
###启动:fuzzyPID的生成过程###成功完成:fuzzyPID的生成过程
默认情况下,Simuli万博1manbetxnk编码器为通用实时目标生成C代码。要选择不同的目标文件和语言,请在“配置参数”对话框中修改系统目标文件和语言参数。
生成的代码存储在一个新的fuzzyPID_grt_rtw
当前工作文件夹中的文件夹。此文件夹的名称取决于选定的目标文件。
在Windows®系统上,默认情况下,名为fuzzyPID.exe
也将添加到当前工作文件夹。若要生成代码而不编译,请在“配置参数”对话框中选择仅生成代码参数,然后再生成代码。
运行可执行文件。
如果ispc状态=系统(mdl);其他的disp('此示例仅在Windows系统上运行可执行文件。');终止
该示例仅在Windows系统上运行可执行文件。
在可执行文件成功完成之后(状态=0
),软件将创建一个fuzzyPID.mat
包含模拟结果的数据文件。
您可以比较生成代码的输出响应,rtw_y
,使用Simulink模拟的输出,万博1manbetxY
,使用以下代码。
负载fuzzyPID.mat阴谋,“b-”,rtu-tout,rtu-y,“罗”)传奇(“万博1manbetxSimulink”,“可执行文件”,“位置”,‘东南’)
生成的代码的结果与Simulink模拟相匹配。万博1manbetx
您还可以仅为此模型中的控制器子系统生成代码rtwbuild
作用
rtwbuild([mdl“/模糊PID”])
###启动:Fuzzy0的生成过程###成功完成:Fuzzy0的生成过程
您可以根据应用程序需要部署生成的代码。例如,您可以配置可执行文件的属性并创建静态或动态库。有关详细信息,请参阅为实时系统构建过程工作流(万博1manbetxSimulink编码器)。
模糊逻辑控制器块还支持用于模拟和代码生成的单精度和定点数据。在这两种情况下,万博1manbetx与等效的双精度模糊系统相比,生成的模糊系统的精度降低。使用:
单精度数据可减少系统的内存占用。
如果目标平台仅支持定点算法,则为定点数据。万博1manbetx
要使用其中一种数据类型,请设置数据类型属性,并将模型中的其他组件配置为使用相同的数据类型。
这个fuzzyPID_single
已为单精度数据配置模型。请打开模型。
mdl2=“fuzzyPID_single”;开放式系统(mdl2)
在这个模型中数据类型模糊逻辑控制器块的参数设置为仅有一个的
. 模糊逻辑控制器块自动将输入信号转换为指定的数据类型。此外,模拟使用参数设置为代码生成
这个模拟使用选项不会影响代码生成过程。相反,设置此选项将使用生成的代码使用的相同代码路径模拟模糊系统。
生成此模型的代码。
设置参数(mdl2,“RTWVerbose”,“关”)rtwbuild(mdl2)
###启动:fuzzyPID_single的生成过程成功完成:fuzzyPID_single的生成过程
设定数据类型模糊逻辑控制器块的参数确保所有推理步骤使用指定的数据类型。但是,根据模型中其他块的配置,一些生成的代码仍然可以使用双精度数据。