生成代码和部署控制器实时目标
模型预测控制工具箱™软件提供了控制器设计的MATLAB代码生成功能®或仿真金宝app软件®。
代码生成的MATLAB
在MATLAB设计一个MPC控制器后,您就可以生成C代码使用MATLAB编码器™并将其部署为实时控制。
为计算最优MPC控制生成的代码移动一个隐式或显式线性MPC控制器:
从一个MPC控制器生成数据结构或显式MPC控制器使用
getCodeGenerationData
。来验证控制器产生期望的闭环结果,模拟使用
mpcmoveCodeGeneration
在的地方mpcmove
。生成的代码
mpcmoveCodeGeneration
使用codegen
(MATLAB编码器)。这一步要求MATLAB编码器软件。
例如,看到的生成代码来计算最优货币政策委员会在MATLAB。
你也可以生成代码使用默认的非线性MPC控制器fmincon
用SQP算法求解。来生成代码计算最优控制非线性MPC控制器的动作:
从非线性MPC控制器使用生成的数据结构
getCodeGenerationData
。来验证控制器产生期望的闭环结果,模拟使用
nlmpcmoveCodeGeneration
在的地方nlmpcmove
。生成的代码
nlmpcmoveCodeGeneration
使用codegen
(MATLAB编码器)。这一步要求MATLAB编码器软件。
代码生成的金宝app
在设计一个控制器仿真软件使用任何MPC模块,您可以生成代码并将其金宝app部署为实时控制。您可以部署所有目标控制器支持以下产品:下载188bet金宝搏金宝app
金宝app仿真软件编码器
嵌入式编码器®
金宝app仿真软件PLC编码器™
金宝app仿真软件实时™
您可以生成代码的模型预测控制工具箱Simulink块。金宝app
类型的控制器 | 块 |
---|---|
隐式MPC控制器 | |
明确的MPC控制器 | |
Gain-scheduled MPC控制器 | |
自适应MPC控制器 | |
为汽车应用MPC控制器 | |
非线性MPC控制器使用fmincon 用SQP |
生成代码的更多信息,请参阅使用仿真软件编码器模拟和代码生成金宝app和使用仿真软件模拟和结构化文本生成PLC编码器金宝app。
请注意
的MPC控制器,明确的MPC控制器,自适应MPC控制器,非线性MPC控制器块使用的实现MATLAB函数(金宝app模型)块。结构,右键单击,并选择面具>看下面具。然后,打开货币政策委员会子系统下面。
请注意
如果你的非线性MPC控制器使用可选参数,您还必须生成代码总线的创造者块连接到参数个数输入端口的非线性MPC控制器块。为此,地方非线性MPC控制器和总线的创造者街区内的一个子系统,子系统生成代码。
生成线性的CUDA代码MPC控制器
您可以生成CUDA®使用GPU编码器™代码MPC控制器。有关支持gpu的更多信息,请参阅金宝appGPU的金宝app支持版本(并行计算工具箱)。有关安装和设置的先决条件的更多信息产品,明白了安装必备产品下载188bet金宝搏(GPU编码器)和设置必备产品下载188bet金宝搏(GPU编码器)。
生成和使用GPU在MATLAB代码:
设计一个线性控制器使用
货币政策委员会
对象。为核心,生成结构状态,在线数据线性MPC控制器使用
getCodeGenerationData
函数。选择模拟闭环迭代使用
mpcmoveCodeGeneration
功能和在上一步中创建的数据结构。创建一个对象使用编码器的配置选项
coder.gpuConfig
功能和配置代码生成选项。生成的代码
mpcmoveCodeGeneration
函数使用codegen
功能和编码器的配置选项对象。这样做将生成一个新的函数使用代码运行在GPU上的。模拟控制器使用新生成的函数和数据结构。
例如在MATLAB使用GPU的代码,看看使用GPU计算MPC在MATLAB
您可以生成和使用GPU的代码MPC控制器,自适应MPC控制器,或明确的MPC控制器块。
从仿真软件模型生成GPU代码包含任何这些块,点击打开配置金宝app参数对话框模型设置。然后,在代码生成部分中,选择生成GPU的代码。
有关如何配置你的GPU的代码生成模型,明白了代码生成与GPU编码器从仿真软件模型金宝app(GPU编码器)。
在实时环境中采样率
控制器的采样率可以在实时环境系统的实现。例如,对于一个典型的小型分布式天线控制应用程序上运行金宝app实时仿真软件时间,样品可以只要1 - 10 ms线性非线性MPC MPC和100 - 1000 ms。确定样品的时间,第一次测试不那么咄咄逼人控制器的采样率产生可接受的性能目标。接下来,降低样本时间和监控控制器的执行时间。可以进一步降低样本时间只要优化安全地完成在每个采样周期在正常操作条件。减少样品的时间,你也可以考虑使用:
提示
较低的控制器样品时间不一定提供更好的性能。事实上,你想选择一个样品时间是足够小的给你良好的性能,但没有小。同样的预测时间,较小的样本时间导致较大的预测步骤,进而产生更大的内存占用和更复杂的优化问题。
QP问题建筑生成的C代码
在每个控制区间,隐式或自适应MPC控制器构造一个新的QP问题,它被定义为:
线性不等式约束
在哪里
x是解向量。
H海赛矩阵。
一个是一个矩阵的线性约束系数。
f和b是向量。
在生成的C代码,用于提供以下矩阵H,一个,f,b。根据类型和MPC控制器的配置,这些矩阵是常数或再生在每个控制间隔。
常数矩阵 | 大小 | 目的 | 隐性政策委员会 | 隐式MPC与在线重量调优 | 自适应MPC或LTV MPC |
---|---|---|---|---|---|
Hinv |
N米——- - - - - -N米 | 海赛矩阵的逆,H | 常数 | 再生 | 再生 |
Linv |
N米——- - - - - -N米 | 逆矩阵的下三角柯列斯基分解的H | |||
交流 |
NC——- - - - - -N米 | 线性约束系数,一个 | 常数 | ||
Kx |
Nxqp——- - - - - -(N米1) | 用于生成f | 再生 | ||
基米-雷克南 |
p*Ny——- - - - - -(N米1) | ||||
Ku1 |
Nmv——- - - - - -(N米1) | ||||
Kv |
(N医学博士+ 1)* (p+ 1)——- - - - - -(N米1) | ||||
库特 |
p*Nmv——- - - - - -(N米1) | ||||
美林投资 |
NC1 | 用于生成b | 常数 | 常数,除非有自定义的约束 | |
Mx |
NC——- - - - - -Nxqp | 再生 | |||
Mu1 |
NC——- - - - - -Nmv | ||||
Mv |
NC——- - - - - -(N医学博士+ 1)* (p+ 1) |
在这里:
p是预测地平线。
Nmv是操纵变量的数量。
N医学博士是测量扰动的数量。
Ny输出变量的数量。
N米优化变量的数量(米*Nmv+ 1,在那里米控制层)。
Nxqp是州的数量用于QP问题;也就是说,总数植物状态和扰动模型。
NC是总数量的限制。
在每个控制区间,计算生成的C代码f和b为:
在哪里
x问是植物和扰动模型的矢量状态估计的卡尔曼滤波器。
米l是被操纵的变量从先前的控制区间。
ut是操纵变量的目标。
vp是测量扰动信号的序列预测地平线。
rp是参考信号的序列预测地平线。
请注意
在MATLAB生成代码时,getCodeGenerationData
命令生成这些矩阵并返回它们configData
。
代码生成自定义QP解决者
线性MPC控制器生成代码,可以使用一个定制的QP解决用C编写或MATLAB代码。控制器调用这个解算器的内置QP解算器在每个时间间隔的控制。
例如,看到的模拟和生成代码为MPC控制器定制QP解算器。更多信息定制解决QP,明白了自定义QP解算器。
使用FORCESPRO解算器的信息,请参阅实现MPC控制器使用Embotech FORCESPRO解决者。