如何使用 Simulink LookupTable模块?

文摘   2024-11-05 07:18   上海  

本文来自知乎 Erick-Chiang, 欢迎关注作者。

一 引言

在车载电控软件开发里,其实大量的工作都是电机标定,很多高大上的算法其实用不上,除了各个环路PI算法然后再加持一些关乎某项功能优化的控制策略。老实来讲,非线性控制算法,比如大家熟悉的滑模控制、模糊PID、模型预测控制算法等,工业控制、汽车类控制等很少用到,或者没有必要用到。
那么回过头,咱们来讲讲标定,汽车行业界也有类似的岗位提供,名字叫标定工程师,标定是干啥?其实就是利用测功机模拟高压、低压、高速、低速工况,让车载永磁同步电机在这些工况下去跑,然后去寻优,比如MTPA曲线,就是在某扭矩、转速下去寻找一个最小的Id、Iq电流。另外还有常见的弱磁控制,通俗来讲也是最终依靠标定。

说了这么多,其实标定完之后,其实最后都是Excel表格数据,这些数据一方面可以写到下位机,还可以导入到Simulink大模型中去做仿真计算,比如根据扭矩、转速去查控制器效率,进而得到直流功率等等之类的,那么如何将Excel表格数据导入到Simulink中呢,这里要用到“n-D Lookup Table”模块。

二 “2-D Lookup Table”模块的使用方法

假设有一张这样的2维表格,具体内容如下:

Simulink中的n-D Lookup Table 如下所示:

依据MAB ((MAB具体指:Simulink®MathWorks® Advisory Board Control Algorithm Modeling Guidelines V5.0))ub_0012:查表系统模块的使用指导规则,将模块双击设置为如下查表方式:

  • a) 内插法:使用线性点-斜率;
  • b) 外插法:使用裁剪
  • c) 外插法可选项:选中“输入等于或高于最后一个断点时使用最后一个表值”

用法示例:在simulink中右键“属性”,创建数据字典,并引用。

创建数据字典并引用。

因为我们是2D表,类似已知X 、Y,查询Z,在数据字典中创建三个变量(Simulink.Parameter),如下图所示。

三个变量(Simulink.Parameter)取名字如下图所示。

双击2D lookup table 模块,点击BreakPoints 1(“Trq”)的箭头处“三个点”,点击“Trq(Data.sldd)”,然后点击“Open”,可以对数据进行编辑。注意:BreakPoints必须是单调递增!!!

点击“Open Variable Editor”对数据进行编辑.

将图1表格的数据,复制进去即可,如下图所示。

重复上述步骤,将其它数据也复制进去。最后点击“Edit table and breakpoints...”可以查看完整的表格数据,如下图所示。

查看完整的表格数据,可以与图1比较,是一样的,即成功利用2-D LookUp Table 模块将Excel数据导入到了simulink中。

三 结语

通过本文的详细探讨,了解了Simulink中2-D LookupTable模块的强大功能与应用场景。学习了如何创建和配置2-D LookupTable模块,还掌握了如何通过导入外部数据文件、调整插值方法和边界处理选项来优化模型性能。

在实际应用中,正确配置和使用2-D LookupTable模块能够显著提升模型的准确性和仿真效率,特别是在处理复杂非线性关系时。然而,探索和学习之路永无止境。因此,鼓励大家继续深入学习Simulink的其他模块和特性,不断拓宽自己的知识边界,以应对更加复杂多变的工程挑战。


创作不易,欢迎点赞再看收藏关注

汽车研发交流群,有兴趣的朋友请添加群主:prOmiseyes,备注:公司+职务入群。仅限汽车从业人员。



最后再分享一个Chatgpt(知乎直达)关于在 Simulink 中,Lookup Table 模块如何实现内插法和外插法。
以下是详细的实现方法和步骤:

1. 1-D Lookup Table

1.1 内插法

  • 线性内插
    • 当输入值位于定义域内的两个点之间时,使用线性内插方法计算输出值。
    • 设置步骤
  1. 双击 1-D Lookup Table 模块。
  2. 在弹出的对话框中,选择 Interpolation-Extrapolation 选项卡。
  3. 在 Lookup Method 下拉菜单中选择 Interpolation-Extrapolation。
  4. 选择 Interpolation method 为 Linear。
  • 最近邻内插
    • 当输入值位于定义域内的两个点之间时,选择最近的定义域点的值作为输出值。
    • 设置步骤

    1. 双击 1-D Lookup Table 模块。
    2. 在弹出的对话框中,选择 Interpolation-Extrapolation 选项卡。
    3. 在 Lookup Method 下拉菜单中选择 Interpolation-Extrapolation。
    4. 选择 Interpolation method 为 Nearest。

    1.2 外插法

    • 线性外插
      • 当输入值超出定义域时,使用线性外插方法计算输出值。
      • 设置步骤
    1. 双击 1-D Lookup Table 模块。
    2. 在弹出的对话框中,选择 Interpolation-Extrapolation 选项卡。
    3. 在 Lookup Method 下拉菜单中选择 Interpolation-Extrapolation。
    4. 选择 Extrapolation method 为 Linear。
  • 裁剪
    • 当输入值超出定义域时,使用定义域的边界值作为输出值。
    • 设置步骤
    1. 双击 1-D Lookup Table 模块。
    2. 在弹出的对话框中,选择 Interpolation-Extrapolation 选项卡。
    3. 在 Lookup Method 下拉菜单中选择 Interpolation-Extrapolation。
    4. 选择 Extrapolation method 为 Clip。

    2. 2-D Lookup Table

    2.1 内插法

    • 线性内插
      • 当输入值位于定义域内的两个点之间时,使用线性内插方法计算输出值。
      • 设置步骤
    1. 双击 2-D Lookup Table 模块。
    2. 在弹出的对话框中,选择 Table and Breakpoints 选项卡。
    3. 在 Interpolation method 下拉菜单中选择 Linear。
  • 最近邻内插
    • 当输入值位于定义域内的两个点之间时,选择最近的定义域点的值作为输出值。
    • 设置步骤
    1. 双击 2-D Lookup Table 模块。
    2. 在弹出的对话框中,选择 Table and Breakpoints 选项卡。
    3. 在 Interpolation method 下拉菜单中选择 Nearest。

    2.2 外插法

    • 线性外插
      • 当输入值超出定义域时,使用线性外插方法计算输出值。
      • 设置步骤
    1. 双击 2-D Lookup Table 模块。
    2. 在弹出的对话框中,选择 Table and Breakpoints 选项卡。
    3. 在 Extrapolation method 下拉菜单中选择 Linear。
  • 裁剪
    • 当输入值超出定义域时,使用定义域的边界值作为输出值。
    • 设置步骤
    1. 双击 2-D Lookup Table 模块。
    2. 在弹出的对话框中,选择 Table and Breakpoints 选项卡。
    3. 在 Extrapolation method 下拉菜单中选择 Clip。

    3. 高维 Lookup Table (n-D Lookup Table)

    3.1 内插法

    • 线性内插
      • 当输入值位于定义域内的多个点之间时,使用线性内插方法计算输出值。
      • 设置步骤
    1. 双击 n-D Lookup Table 模块。
    2. 在弹出的对话框中,选择 Table and Breakpoints 选项卡。
    3. 在 Interpolation method 下拉菜单中选择 Linear。
  • 最近邻内插
    • 当输入值位于定义域内的多个点之间时,选择最近的定义域点的值作为输出值。
    • 设置步骤
    1. 双击 n-D Lookup Table 模块。
    2. 在弹出的对话框中,选择 Table and Breakpoints 选项卡。
    3. 在 Interpolation method 下拉菜单中选择 Nearest。

    3.2 外插法

    • 线性外插
      • 当输入值超出定义域时,使用线性外插方法计算输出值。
      • 设置步骤
    1. 双击 n-D Lookup Table 模块。
    2. 在弹出的对话框中,选择 Table and Breakpoints 选项卡。
    3. 在 Extrapolation method 下拉菜单中选择 Linear。
  • 裁剪
    • 当输入值超出定义域时,使用定义域的边界值作为输出值。
    • 设置步骤
    1. 双击 n-D Lookup Table 模块。
    2. 在弹出的对话框中,选择 Table and Breakpoints 选项卡。
    3. 在 Extrapolation method 下拉菜单中选择 Clip。

    4. 实例

    假设有一个 2-D Lookup Table,定义域 x 为 [0, 1, 2, 3],定义域 y 为 [0, 1, 2, 3],值域 z 为一个 4x4 的矩阵。

    4.1 设置 2-D Lookup Table

    1. 打开 Simulink 并添加 2-D Lookup Table 模块。

    2. 双击模块,进入设置对话框。

    3. 在 Table and Breakpoints 选项卡中:

    • 设置 Breakpoints 1 为 [0, 1, 2, 3]。

    • 设置 Breakpoints 2 为 [0, 1, 2, 3]。

    • 设置 Table 为一个 4x4 的矩阵,例如:

      [0, 1, 2, 3;
      1, 2, 3, 4;
      2, 3, 4, 5;
      3, 4, 5, 6]

  • 在 Interpolation-Extrapolation 选项卡中:

    • 选择 Interpolation method 为 Linear。

    • 选择 Extrapolation method 为 Clip。

    通过以上步骤,您可以设置 2-D Lookup Table 模块,使其在输入值超出定义域时使用裁剪方法,并在定义域内使用线性内插方法。这有助于提高模型的准确性和仿真效率。

    谦益行
    分享汽车研发日常,助力你我共同成长。
     最新文章