主要内容

实现MPC控制器使用Embotech FORCESPRO解决者

您可以使用FORCESPRO一个实时嵌入式优化开发的软件工具Embotech AG)对线性和非线性、模拟和生成代码MPC控制器设计使用模型预测控制工具箱™软件。Embotech提供了一个插件,利用模型预测控制的设计能力FORCESPRO工具箱软件和计算性能。使用插件,您可以生成自定义解决者,允许部署在实时硬件和高度优化,根据您的特定的MPC问题,达到满意的实时性能。

在使用FORCESPRO MPC插件的更多信息,参见FORCESPRO文档。您还可以使用MATLAB解决FORCESPRO其他优化应用程序®和仿真软金宝app件®。有关更多信息,请参见FORCESPRO第三方产品和服务下载188bet金宝搏

信息生成代码在MATLAB和Simulink模型预测控制工具箱控制器,明白了金宝app生成代码和部署控制器实时目标

Embotech二次规划(QP)解算器

设计和模拟线性定常MPC控制器(一个在运行时不改变预测模型)在MATLAB使用Embotech FORCESPRO QP解算器,遵循这些步骤。

  1. 设计一个线性控制器使用货币政策委员会对象。

  2. 创建一个自定义解决代选择对象的解算器使用mpcToForcesOptions的字符串输入参数“稀疏”(建立稀疏QP问题),或“密集”(建立一个密集的QP问题)。使用“稀疏”如果你的MPC问题有很长的预测地平线和大量的约束。

  3. 生成定制的解决者和相关变量包含结构的核心,状态,和在线数据使用mpcToForces

  4. 如果需要,调整控制器状态变量包含状态数据结构,并指定运行时信号包含在线数据的变量结构。

  5. 模拟迭代的系统调用mpcmoveFORCES。对于稀疏QP问题,墨西哥人文件是自动生成的,用于加速仿真。

你也可以生成生产代码。例如,要生成一个墨西哥人文件mpcmoveForces与一个密集的QP配方,变量coredata,statedata,onlinedata是由mpcToForces您可以使用这段代码:

%配置MATLAB代码生成来创建一个可执行文件cfg = coder.config (墨西哥人的);%或自由,EXE等等。cfg。ConstantInputs =“IgnoreValues”;%创建名为myMex可执行codegen (“配置”cfg,“mpcmoveForces”,“o”,“myMex”,“参数”,{coder.Constant (coredata)、statedata onlinedata});%计算操纵变量通过调用myMex可执行文件(mv, statedata信息)= myMex (coredata、statedata onlinedata)

设计和模拟仿真软件使用的线性定常MPC控制器金宝appEmbotech FORCESPRO QP解算器解算器,遵循这些步骤。

  1. 设计一个线性控制器使用货币政策委员会对象。

  2. 创建一个自定义解决代选择对象的解算器使用mpcToForcesOptions的字符串输入参数“稀疏”(建立稀疏QP问题),或“密集”(建立一个密集的QP问题)。使用“稀疏”如果你的MPC问题有很长的预测地平线和大量的约束。

  3. 生成定制的解决者和相关变量包含结构的核心,国家,和在线数据使用mpcToForces

  4. 适当的块添加到您的模型:

    • 在稀疏QP问题,打开模型库浏览器,找到金宝app部队MPC(稀疏QP)块下FORCESPRO MPC模块类别,并将它添加到您的模型。

    • 密集的QP问题,打开模型库浏览器,找到金宝appMPC控制器块下模型预测控制工具箱类别,并将它添加到您的模型。

  5. 块中指定结构变量对话框:

    • 对于一个稀疏QP问题,指定包含核心数据结构和状态的变量。

    • 对于一个密集的QP问题,指定货币政策委员会对象。

  6. 模拟系统。

  7. 在需要时,直接从模型生成代码或块。

为更多的信息关于如何使用QP动力学模型预测控制工具箱,明白了QP解决者

在FORCESPRO QP解算器的更多信息,参见Embotech FORCESPRO QP解算器文档。

请注意

使用QP Embotech FORCESPRO解决适应MPC控制器或MPC控制器与不支持自定义约束。金宝app

Embotech非线性规划(NLP)解算器

设计和模拟非线性MPC控制器在MATLAB中使用Embotech FORCESPRO NLP解算器,遵循这些步骤。

  1. 设计一个非线性控制器使用nlmpcnlmpcMultistage对象。

  2. 指定自定义解算器生成选项使用nlmpcToForcesOptions(或nlmpcMultistageToForcesOptions,如果你设计了一个多级控制器在前一个步骤)。对于一个nlmpc对象,您可以选择使用序贯二次规划(SQP)解决而不是内点(IP)解算器。使用IP解决如果你非线性MPC问题一直预测地平线和大量的约束。为nlmpcMultistage对象只有可用的IP解决者。

  3. 生成定制的解决者和相关变量包含结构的核心,国家,和在线数据使用nlmpcToForces(或nlmpcMultistageToForces)。

  4. 指定当前控制器,最后控制作用,使用包含在线数据结构的变量来指定其他运行时的信号。

  5. 模拟迭代的系统调用nlmpcmoveForces(或nlmpcmoveForcesMultistage)。一个墨西哥人文件是自动生成的两个函数,加快在MATLAB仿真。

设计和模拟非线性MPC控制器在模型使用Embotech FORCESPRO NLP的能手,遵循这些步骤。金宝app

  1. 设计一个非线性控制器使用nlmpcnlmpcMultistage对象。

  2. 指定自定义解算器生成选项使用nlmpcToForcesOptions(或nlmpcMultistageToForcesOptions,如果你设计了一个多级控制器在前一个步骤)。对于一个nlmpc对象,您可以选择使用序贯二次规划(SQP)解决而不是内点(IP)解算器。使用IP解决如果你非线性MPC问题一直预测地平线和大量的约束。为nlmpcMultistage对象只有可用的IP解决者。

  3. 生成定制的解决者和相关变量包含结构的核心,国家,和在线数据使用nlmpcToForces(或nlmpcMultistageToForces)。

  4. 打开模型库浏览器,金宝app找到部队多级非线性MPC块下FORCESPRO MPC模块类别,并将它添加到您的模型。

  5. 指定变量包含的核心数据结构块对话框。

  6. 模拟系统。

  7. 在需要时,直接从模型生成代码或块。

你也可以为你的仿真软件模型生成代码所描述的部分金宝app代码生成的仿真软件金宝app

请注意

使用NLP Embotech FORCESPRO解算器时仅支持状态和输出函数与MATLAB代码生金宝app成和兼容CasADi。此外,通用的(即非多级)非线性MPC的问题:

  • 你不能使用定制的成本和约束功能。

  • 如果使用多个可选参数的非线性MPC控制器,您必须将它们分组在一个列向量并设置Model.NumberOfParameters控制器1的属性。

使用一个例子力非线性MPC块看摆起控制使用非线性模型预测控制的钟摆

另请参阅

功能

对象

相关的例子

更多关于

外部网站