主要内容

减少零交叉

为什么减少零交叉?

使用固定步解算器实时部署要求。你通常用变步为桌面仿真解算器。变步解决检测零交点事件时采取小步骤。较小的步骤有助于准确捕获动力学导致零交叉。固定步解决不改变大小,他们采取的步骤。如果你的模型在很大程度上依赖于零交叉检测,您可能需要指定一个很小的固定步大小准确捕捉动态。一小步的大小会导致超支在实时仿真。通过减少零交叉的数量,您可以配置您的解算器使用一个较大的步长变步和固定步部署而生成的结果不够准确。

获得参考结果和仿真步长

模拟模型来生成数据,您可以使用:

  • 决定改变哪一个模型元素降低零交点事件的数量。

  • 评估你的修改模型的准确性。

  1. 打开模型,在MATLAB®命令提示符中,输入:

    模型=“ssc_pneumatic_rts_stiffness_redux”;open_system(模型)

  2. 模拟模型:

    sim(模型)

  3. 将数据保存到工作区。

    simlogRef = simlog;timeRef =兜售;

  4. 情节对仿真时间步长。

    h1 =图;semilogy (timeRef (1: end-1), diff (timeRef),“- x”)标题(“规划求解步长”)包含(“时间(s)”)ylabel (“步长(s)”)

    仿真开始减缓反复的模拟和时间t= ~ 1、4、5、8、9秒。

  5. 放大检查数据之间的时间t= 0.8和1.03秒。

    h1;xStart = 0;xEnd = 10;yStart = 0;yEnd = 10 e0;xZoomStart1 = 0.8;xZoomEnd1 = 1.03;yZoomStart1 = 10 e-20;yZoomEnd1 = 10 e 1;轴([xZoomStart1 xZoomEnd1 yZoomStart1 yZoomEnd1])

    蓝色的x图中标记表明仿真已经完成执行步骤。圆圈标记表示一个非常小的步长和代表零交点事件。步长减少到大约10 e15汽油秒每个零交点检测。

  6. 获得电动机转速的参考结果,打开测量子系统。选择理想的旋转运动传感器,。块选择使用simscape.logging.findNode函数来找到并保存节点包含的数据W的信号,电动机的角速度。

    nRef = simscape.logging.findNode (simlogRef gcbh)

    nRef =节点属性:id:“Ideal_Rotational_Motion_Sensor”可节省的:1出口:0φ:[1×1 simscape.logging。节点]C: [1×1 simscape.logging。节点]R: [1×1 simscape.logging。节点]:[1×1 simscape.logging。节点]w: [1×1 simscape.logging。节点]t: [1×1 simscape.logging。节点)W (1×1 simscape.logging.Node):

  7. 使用simscape.logging.plot函数绘制的参考结果W

    simscape.logging.plot (nRef.W);

识别和修改元素导致零交叉

分析仿真数据来确定元素负责零交叉。修改模型来减少这些元素导致的零交叉。

  1. 使用Simscape™sscprintzcs函数来打印零交点信息记录仿真数据。

    sscprintzcs (simlogRef)
    ssc_pneumatic_rts_stiffness_redux(42信号,50个口岸)+ -Directional_5_way_valve(38信号,46个口岸)| + -Variable_Area_Orifice_1(9信号,13口岸)| + -Variable_Area_Orifice_2(9信号,10口岸)| + -Variable_Area_Orifice_3(9信号,14口岸)| + -Variable_Area_Orifice_4(11信号,9口岸)+ -Pipe_1(2信号,0口岸)| + -Constant_Chamber(2信号,0口岸)+ -Pneumatic_Motor(2信号,4通道)
    结果表明,50零交叉检测到发生在定向5维阀块(46口岸)和气动马达块(4通道)。

  2. 使用sscexplore函数打开Simscape探险家与记录仿真数据结果。

    sscexplore (simlogRef)

  3. 结果树,点击气动马达看到运动的结果。

    大部分的零交叉之间发生t= 0和t= 1秒,当块的其他信号接近于零。硕果仅存的几个零交叉发生在约t= 5秒。

  4. 识别源代码,触发一些零交叉,选择方向5维阀>变面积孔2>SimulationStatistics (ZeroCrossings)>zc_1 - 8口岸。单击Pneumatic.Elements.VariableOrifice链接出现在较低,左角落的窗口。

    的源代码风动马达开场光标在这个代码块:

    %——限制大于Area0面积=如果面积< Area0 Area0其他的区域结束;

    负责的条件语句零交叉孔面积有关。

  5. 减少数量的零交叉,通过减少定向的最大孔面积5维阀门。打开方向5维阀块属性检查器和指定995年最大孔面积(mm ^ 2)参数。

修改后的模型的分析结果

比较结果的参考结果,以确保您的修改模型的准确性。确认你的修改后的模型具有更少的零交叉。

  1. 模拟模型和打印零交叉数据。

    sim(模型)sscprintzcs (simlog)

    ssc_pneumatic_rts_stiffness_redux(42信号,30口岸)+ -Directional_5_way_valve(38信号,26个口岸)| + -Variable_Area_Orifice_1(9信号,7道口)| + -Variable_Area_Orifice_2(9信号,6口岸)| + -Variable_Area_Orifice_3(9信号,8通道)| + -Variable_Area_Orifice_4(11信号,5口岸)+ -Pipe_1(2信号,0口岸)| + -Constant_Chamber(2信号,0口岸)+ -Pneumatic_Motor(2信号,4通道)

    零交叉的总人数已经减少从50 - 30。

  2. 使用的比较结果simscape.logging.plot函数绘制结果和结果的引用修改后的模型,一个情节:

    simscape.logging.plot({simlogRef.Measurements.Ideal_Rotational_Motion_Sensor.Wsimlog.Measurements.Ideal_Rotational_Motion_Sensor.W},“名字”,{“参考”,“修改”})

    结果看起来是一样的。

  3. 变焦控制仔细看看拐点在t = ~ 5秒。

    xStart = 0;xEnd = 10;yStart = -400;yEnd = 400;xZoomStart1 = 4.75;xZoomEnd1 = 5.15;yZoomStart1 = -20;yZoomEnd1 = 30;轴([xZoomStart1 xZoomEnd1 yZoomStart1 yZoomEnd1])

    在这个缩放级别,你可以看到一个小差异的结果修改后的模型。然而仿真是足够准确的,结果达到预期基于实证和理论数据。

    进一步提高仿真速度之前执行的实时仿真的工作流模型,试一试:

    • 重复这个示例中所示的方法来识别和调整其他元素导致零交叉,负责小步骤

    • 减少任何负责的数值刚度小的步骤

另请参阅

|||

相关的例子

更多关于