非线性阻尼参数扫描问题

1视图(30天)
我模拟整车多体模型。在这个模型我使用非线性阻尼器,阻尼器子系统读取阻尼速度矢量和阻尼力矢量基工作区。通过生活力和速度矢量定义脚本使用基本工作空间变量“低速”压缩阻尼,“高速”压缩阻尼,吹掉速度(阻尼器速度的“开关”“高速度”阻尼曲线等。
%变量,我想改变/扫描stady自动化设计
fdlb;%凹凸/压缩速度阻尼率低
fdhb;%凹凸/压缩速度阻尼率高
恩;%反弹低速阻尼率
fdhr;%反弹速度阻尼率高
fkb;%凹凸/压缩高/低速截止系数(速度矢量分量的数量)
fkr;%反弹高/低速截止系数
fvb = 0:0.025:0.3;%凹凸/压缩速度(积极)向量
fvr = -0.3:0.025:0;%的反弹速度(负面)向量
fvhb = fvb (fkb:结束);%凹凸/压缩高速速度矢量
fvlr = fvr (fkr:结束);%反弹低速速度矢量
fvhr = fvr (1: fkr);%反弹高速速度矢量
fDbl = fvlb * fdlb;%凹凸/压缩低速阻尼力
fDbhi = fvhb * fdhb;%凹凸/压缩高速阻尼力(从0开始)
fDeltab = fDbl(结束)-fDbhi (1);%δ在kb(截止速度)
fDbh = fvhb * fdhb + fDeltab;%凹凸/压缩高速阻尼力
fDrl = fvlr *恩;%反弹低速阻尼力
fDrhi = fvhr * fdhr;%反弹高速阻尼力(从0开始)
fDeltar = fDrl (1) -fDrhi(结束);%δ在kr(截止速度)
fDrh = fvhr * fdhr + fDeltar;%反弹高速阻尼力
%阻尼力和速度矢量
F_vDamper = (fvr fvb(2:结束)
F_fDamper = [fDrh fDrl(2:结束),fDbl(2:结束),fDbh(2:结束)
%分配向量空间模型非线性的变量金宝app
%阻尼器将使用速度和力向量
Damper.NonLinear.Faxle.vDamper.Value = F_vDamper;
Damper.NonLinear.Faxle.fDamper.Value = F_fDamper;
模型中的回调(InitFcn)我称之为上述生活脚本更新阻尼力和速度矢量根据上述变量的当前值(基础工作)。
我的问题是,我不知道我如何能做的阻尼参数扫描…即如何建立模型,使得它运行多个模拟和阻尼变化相关的变量(基础工作)根据一些预定义列表。 没问题如果我将改变/全面的模型块中提到的参数或变量的块。在这种特殊情况下它的数组值计算通过脚本。如果我设置设计研究从多个模拟面板——它不会影响基本工作空间中的变量会影响所需的脚本,计算向量。
我试图使用matlab函数将使用这个脚本创建所需的向量,并将其分配给基地(或模型)工作区,但它不工作或更好的说我不知道如何正确地做它。
任何建议将高度赞赏。
谢谢你!
泰德

接受的答案

史蒂夫•米勒
史蒂夫•米勒 2022年11月22日
嗨,都铎王朝,
试着两件事:
  1. 确保领域您已经定义了参数配置运行时参数。设置如下所示。
  2. 减少复杂性,尝试存储的值你扫在一个单独的MATLAB变量,看看效果如何。直接输入F_vDamper和F_fDamper字段。这不是必需的,但它消除了一些找出不工作的复杂性。
——史蒂夫
5个评论
都铎王朝的米隆
都铎王朝的米隆 2022年11月24日
编辑:都铎王朝的米隆 2022年11月24日
让我再一次说:谢谢你的帮助!
这里有一个代码,似乎工作(预计它情节阻尼曲线)。
fdlb = 18000;%凹凸/压缩低速阻尼系数
fdhb = 8000;%凹凸/压缩高速阻尼系数
恩= 12000;%反弹低速阻尼系数
fdhr = 5000;%反弹高速阻尼系数
fvb = 0:0.025:0.3;%凹凸/压缩速度(积极)向量
fvr = -0.3:0.025:0;%的反弹速度(负面)向量
fkb = 4;%凹凸/压缩高/低速截止系数(速度矢量分量的数量)
fkr = 10;%反弹高/低速截止系数
fkb_sweep = (4 5 6);
i = 1:长度(fkb_sweep)
fvlb = fvb (1: fkb_sweep(我));%凹凸/压缩低速速度矢量
fvhb = fvb (fkb_sweep(我):结束);%凹凸/压缩高速速度矢量
fvlr = fvr (fkr:结束);%反弹低速速度矢量
fvhr = fvr (1: fkr);%反弹高速速度矢量
fDbl = fvlb * fdlb;%凹凸/压缩低速阻尼力
fDbhi = fvhb * fdhb;%凹凸/压缩高速阻尼力(从0开始)
fDeltab = fDbl(结束)-fDbhi (1);%δ在kb(截止速度)
fDbh = fvhb * fdhb + fDeltab;%凹凸/压缩高速阻尼力
fDrl = fvlr *恩;%反弹低速阻尼力
fDrhi = fvhr * fdhr;%反弹高速阻尼力(从0开始)
fDeltar = fDrl (1) -fDrhi(结束);%δ在kr(截止速度)
fDrh = fvhr * fdhr + fDeltar;%反弹高速阻尼力
F_vDamper = (fvr fvb(2:结束)];
F_fDamper = [fDrh fDrl(2:结束),fDbl(2:结束),fDbh(2:结束)];
情节(F_vDamper F_fDamper)
持有
网格
xlim ([-0.3 - 0.3])
ylim(4000年[-4000])
包含(“速度(米/秒)”)
ylabel (“迫使[N]”)
标题(“前面力与速度”)
结束
持有
下面是代码,我想改变两个变量(例如fkb和fkr)。
fdlb = 18000;%凹凸/压缩低速阻尼系数
fdhb = 8000;%凹凸/压缩高速阻尼系数
恩= 12000;%反弹低速阻尼系数
fdhr = 5000;%反弹高速阻尼系数
fvb = 0:0.025:0.3;%凹凸/压缩速度(积极)向量
fvr = -0.3:0.025:0;%的反弹速度(负面)向量
fkb = 4;%凹凸/压缩高/低速截止系数(速度矢量分量的数量)
fkr = 10;%反弹高/低速截止系数
fkb_sweep = (4 5 6);
fkr_sweep = [8 9 10];
%存储模拟输入
i = 1:长度(fkb_sweep)
idx = 1:长度(fkr_sweep)
fvlb = fvb (1: fkb_sweep(我));%凹凸/压缩低速速度矢量
fvhb = fvb (fkb_sweep(我):结束);%凹凸/压缩高速速度矢量
fvlr = fvr (fkr_sweep (idx):结束);%反弹低速速度矢量
fvhr = fvr (1: fkr_sweep (idx));%反弹高速速度矢量
fDbl = fvlb * fdlb;%凹凸/压缩低速阻尼力
fDbhi = fvhb * fdhb;%凹凸/压缩高速阻尼力(从0开始)
fDeltab = fDbl(结束)-fDbhi (1);%δ在kb(截止速度)
fDbh = fvhb * fdhb + fDeltab;%凹凸/压缩高速阻尼力
fDrl = fvlr *恩;%反弹低速阻尼力
fDrhi = fvhr * fdhr;%反弹高速阻尼力(从0开始)
fDeltar = fDrl (1) -fDrhi(结束);%δ在kr(截止速度)
fDrh = fvhr * fdhr + fDeltar;%反弹高速阻尼力
F_vDamper = (fvr fvb(2:结束)];
F_fDamper = [fDrh fDrl(2:结束),fDbl(2:结束),fDbh(2:结束)
情节(F_vDamper F_fDamper)
结束
持有
网格
xlim ([-0.3 - 0.3])
ylim(4000年[-4000])
包含(“速度(米/秒)”)
ylabel (“迫使[N]”)
标题(“前面力与速度”)
结束
F_fDamper = 1×25
1.0 e + 03 * -2.3750 -2.2500 -2.1250 -2.0000 -1.8750 -1.7500 -1.6250 -1.5000 -1.2000 -0.9000 -0.6000 -0.3000 0 0.4500 0.9000 1.3500 1.5500 1.7500 1.9500 2.1500 2.3500 2.5500 2.7500 2.9500 3.1500
F_fDamper = 1×25
1.0 e + 03 * -2.2000 -2.0750 -1.9500 -1.8250 -1.7000 -1.5750 -1.4500 -1.3250 -1.2000 -0.9000 -0.6000 -0.3000 0 0.4500 0.9000 1.3500 1.5500 1.7500 1.9500 2.1500 2.3500 2.5500 2.7500 2.9500 3.1500
F_fDamper = 1×25
1.0 e + 03 * -2.0250 -1.9000 -1.7750 -1.6500 -1.5250 -1.4000 -1.2750 -1.1500 -1.0250 -0.9000 -0.6000 -0.3000 0 0.4500 0.9000 1.3500 1.5500 1.7500 1.9500 2.1500 2.3500 2.5500 2.7500 2.9500 3.1500
F_fDamper = 1×25
1.0 e + 03 * -2.3750 -2.2500 -2.1250 -2.0000 -1.8750 -1.7500 -1.6250 -1.5000 -1.2000 -0.9000 -0.6000 -0.3000 0 0.4500 0.9000 1.3500 1.8000 2.0000 2.2000 2.4000 2.6000 2.8000 3.0000 3.2000 3.4000
F_fDamper = 1×25
1.0 e + 03 * -2.2000 -2.0750 -1.9500 -1.8250 -1.7000 -1.5750 -1.4500 -1.3250 -1.2000 -0.9000 -0.6000 -0.3000 0 0.4500 0.9000 1.3500 1.8000 2.0000 2.2000 2.4000 2.6000 2.8000 3.0000 3.2000 3.4000
F_fDamper = 1×25
1.0 e + 03 * -2.0250 -1.9000 -1.7750 -1.6500 -1.5250 -1.4000 -1.2750 -1.1500 -1.0250 -0.9000 -0.6000 -0.3000 0 0.4500 0.9000 1.3500 1.8000 2.0000 2.2000 2.4000 2.6000 2.8000 3.0000 3.2000 3.4000
F_fDamper = 1×25
1.0 e + 03 * -2.3750 -2.2500 -2.1250 -2.0000 -1.8750 -1.7500 -1.6250 -1.5000 -1.2000 -0.9000 -0.6000 -0.3000 0 0.4500 0.9000 1.3500 1.8000 2.2500 2.4500 2.6500 2.8500 3.0500 3.2500 3.4500 3.6500
F_fDamper = 1×25
1.0 e + 03 * -2.2000 -2.0750 -1.9500 -1.8250 -1.7000 -1.5750 -1.4500 -1.3250 -1.2000 -0.9000 -0.6000 -0.3000 0 0.4500 0.9000 1.3500 1.8000 2.2500 2.4500 2.6500 2.8500 3.0500 3.2500 3.4500 3.6500
F_fDamper = 1×25
1.0 e + 03 * -2.0250 -1.9000 -1.7750 -1.6500 -1.5250 -1.4000 -1.2750 -1.1500 -1.0250 -0.9000 -0.6000 -0.3000 0 0.4500 0.9000 1.3500 1.8000 2.2500 2.4500 2.6500 2.8500 3.0500 3.2500 3.4500 3.6500
持有
这将是非常有用的,如果你能帮我设置扫描正常。
谢谢你!
泰德

登录置评。

答案(1)

都铎王朝的米隆
都铎王朝的米隆 2022年11月26日
我没有问题创建模拟输入对象如果我想扫描1变量(代码从上面的第一一半的文章/评论):
fdlb = 18000;%凹凸/压缩低速阻尼系数
fdhb = 8000;%凹凸/压缩高速阻尼系数
恩= 12000;%反弹低速阻尼系数
fdhr = 5000;%反弹高速阻尼系数
fvb = 0:0.025:0.3;%凹凸/压缩速度(积极)向量
fvr = -0.3:0.025:0;%的反弹速度(负面)向量
fkb = 4;%凹凸/压缩高/低速截止系数(速度矢量分量的数量)
fkr = 10;%反弹高/低速截止系数
fkb_sweep = (4 5 6);
mdl =“FullVehicleAssembly_v3_6_1”;
清晰的思敏
i = 1:长度(fkb_sweep)
思敏(i) = Sim金宝appulink.SimulationInput (mdl);
fvlb = fvb (1: fkb_sweep(我));%凹凸/压缩低速速度矢量
fvhb = fvb (fkb_sweep(我):结束);%凹凸/压缩高速速度矢量
fvlr = fvr (fkr:结束);%反弹低速速度矢量
fvhr = fvr (1: fkr);%反弹高速速度矢量
fDbl = fvlb * fdlb;%凹凸/压缩低速阻尼力
fDbhi = fvhb * fdhb;%凹凸/压缩高速阻尼力(从0开始)
fDeltab = fDbl(结束)-fDbhi (1);%δ在kb(截止速度)
fDbh = fvhb * fdhb + fDeltab;%凹凸/压缩高速阻尼力
fDrl = fvlr *恩;%反弹低速阻尼力
fDrhi = fvhr * fdhr;%反弹高速阻尼力(从0开始)
fDeltar = fDrl (1) -fDrhi(结束);%δ在kr(截止速度)
fDrh = fvhr * fdhr + fDeltar;%反弹高速阻尼力
F_vDamper = (fvr fvb(2:结束)];
F_fDamper = [fDrh fDrl(2:结束),fDbl(2:结束),fDbh(2:结束)];
思敏(i) =思敏(我).setVariable (“F_vDamper”,F_vDamper);
思敏(i) =思敏(我).setVariable (“F_fDamper”,F_fDamper);
情节(F_vDamper F_fDamper)
持有
网格
xlim ([-0.3 - 0.3])
ylim(4000年[-4000])
包含(“速度(米/秒)”)
ylabel (“迫使[N]”)
标题(“前面力与速度”)
结束
持有
simOut = [];
simOut = sim(思敏,“ShowProgress”,“关闭”,“UseFastRestart”,“上”);
它输出1 x3 SimulationInput对象。当我检查一下——每个(1、1;1、2等)思敏具有适当的F_fDamper价值。模型运行的很好。但是当我检查结果——阻尼力是不变。我运行模型在50 mm撞来确保高阻尼器速度。它使用思敏(1,1)变量思想从散点图可以看出(力和速度)。速度和非线性阻尼器的力矢量都设置为“运行时”。我真的失去了什么可能出错……我可以问,如果可以建议可能是错的呢?
我不知道我怎样才能创造1 x9 SimulationInput对象-上面的代码从下半年发布/发表评论。
谢谢你!
泰德
1评论
都铎王朝的米隆
都铎王朝的米隆 2022年11月27日
有趣的删除“UseFastRestart”解决了这个问题,现在它遍历阻尼设置变异SimulationInput中创建对象。
现在如果我能算出我如何正确设置嵌套循环当我想改变多个变量……

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!