我正在模拟一个 APM(自动电源管理)系统,其中机器调整其齿轮和 RPM 以对可变工作负载做出反应。我以拖拉机为模型。因此,对于此模型,可变工作负载将增加/减少拖拉机必须拉动的阻力。
我被变速箱难住了。我有确定所需车轮扭矩的代码,我需要进行逆表查找。表格设置为 f(x,y)=z,其中 x=油门位置/转速,y=档位,z=车轮扭矩。在这种情况下,我知道我的油门位置,也知道所需的扭矩,我需要一种方法让它给我相应的档位。
该表如下所示:
我知道如何使用二维表查找从 x 和 y 中找到 z,但不知道如何使用 x 和 z 来查找 y。
我使用您提供的地图的左上角创建了一个示例
单击图像可查看完整分辨率版本...
我添加了黄色显示,以便您可以看到输入图以及模型中的各种值。我使用的输入图值是示例数据的子集。
您可以使用给定 RPM(例如 1000RPM)的“预查找”块来确定 RPM 轴上的索引(从零开始)和分数(朝向以下索引)。
您可以伪造第二轴的预查找,因为我们想要齿轮上的所有值。要获取所有索引,我们可以
0:(N-1)
对N
齿轮使用相同长度的分数[0,0,...,0,1]
(请注意,最终值仅为 1)。将此数据和扭矩表数据输入到“使用预查找进行插值”块中,我们可以获得当前 RPM 与齿轮的整个扭矩图(插值)。
现在,我们可以对齿轮数与扭矩进行 1D 查找,这可以使用“1-D 查找表”块来完成。请注意,此块的轴必须是单调递增的。您的扭矩图随着齿轮的增加而单调递减
N:-1:1
,因此我们可以使用设置为齿轮索引的“选择器”块翻转两个输入N
。您很幸运,如果您的图不是单调递减的,那么这一步会更复杂,因为对于您想要的扭矩,会有多个可能的齿轮。我已将 1-D 插值块设置为“最近”,这样您就可以获得最接近目标扭矩的整数档位选择。如果您确实需要知道下游任何齿轮与下一个档位的距离,您可以在此处使用线性插值。
我必须在内部更改任何块的主要设置是将插值块的所有“源”选项设置为“输入端口”,以便可以通过左侧的输入指定数据,而不是块对话框内部的数据。