您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > SimscapeMultibody-物理建模
SimscapeMultibody物理建模与刚体变换简介以一个单摆为例说明如何进行物理建模。一、创建模型1.在MatLab命令行输入smnew打开一个新的simscapemultibody项目在命令行输入sm_lib打开SimscapeMultibodyblocklibrary选择自己想要添加的块二、创建机械连接1.块类型说明–RigidTransform(刚体变换)块:提供端坐标系。–Solid(立体)块:提供几何(geometry),惯性(inertia),颜色(color)特性。RigidTransform块在FrameandTransform下,Solid块在BodyElement下。2.连接块图3.设置Solidblock特性1.左键快速单击solidblock两次,在弹出的对话框中将参数设置为如下图所示:将长宽高用变量LHW代替,密度用rho代替,颜色用rgb代替,方便修改参数。这里出现错误是因为我们输入的变量未定义,将在下面定义。4.设置RigidTransform块左键快速单击RigidTransformblock,在弹出的对话框中将参数设置为如下图所示:–将RigidTransform设置为如下图所示–将RigidTransform1设置为如下图所示5.生成子系统同时选中RigidTransform,RigidTransform1和solidblock,在高亮的地方右键选择CreateSubsystemfromSelection得到如下所示子系统:6.定义前面的参数右键单击Subsystem,在弹出的对话框中选择MaskCreateMask在弹出的对话框中选择Parameters&Dialog,在左边的栏中添加五个到Parameters,然后将变量名改为前面输入的变量名在右边栏Propertiesvalue中将各变量值设置为如下所示L(cm)20W(cm)1H(cm)1rho(kg/m^3)2700rgb[0.25,0.40,0.70]确定,然后在simulink界面中选择SimulationUpdateDiagram,更新块图,得到如下图的立体7.添加旋转部件在matlab命令行输入smnew新建一个模型,删除不需要的块并将上述的Subsystem复制过来从SimscapeMultibodyJoints中添加一个RevoluteJoint(旋转节点)到图中,并连接成如下图所示鼠标左键快速单击图中的solidblock两次,在弹出的对话框中将其参数设置为如图所示点击确定。8.设置重力旋转节点(RevoluteJointblock)使用底座和从动件坐标系的公共Z轴作为旋转轴,为了让从动件在重力的作用下旋转,需要使重力矢量偏移Z轴。鼠标左键快速单击MechanismConfigurationblock两次,在弹出的窗口中将重力设置为[0-9.810](-y方向)。9.设置单摆起始位置鼠标在左键快速单击RevoluteJoint两次,在弹出的对话框中选择StateTargetsPosition进行设置,默认为水平。10.配置求解器在simulink中选择SimulationModelConfigurationParameters,配置为如下图所示选择确定,11.组装模型选择SimulationUpdatediagram,得到如图所示的模型选择Viewconvention将其设置为Yup(XYFront),保证重力与屏幕垂直对齐,选择viewstandardview中的一项来刷新视图。选择来保存设置。12.运行模型点击SimulationRun,运行模型,将会看到单摆摆动13.分析模型1.测量单摆运动左键快速单击RevoluteJointblock两次,在弹出的对话框中选择Sensing下的Position和Velocity2.添加以下块到模型•PS-SimulinkConverter:在SimscapeUtilities•ToWorkspace:在SimulinkSinks如图将文件另存为一个新文件simplependulumanalysis。3.摆角、角速度关于时间的函数打开刚刚的文件simplependulumanalysis,然后选择SimulationRun,在matlab命令行中输入以下命令figure;%Openanewfigureholdon;plot(q);%Plotthependulumangleplot(W);%Plotthependulumangularvelocity得出摆角(蓝色)与角速度(红色)关于时间的函数图像4.无阻尼条件下摆角与角速度关系在matlab命令行中输入以下命令figure;plot(q.data,W.data);得到函数图像:纵轴为角速度,横轴为摆角。在RevoluteJointblockState对话框的TargetsPosition中设置不同的起始角:-80,-40,0,40和80°,重复上述的命令得到不同起始角下摆角与角速度的关系5.有阻尼下摆角与角速度关系•左键快速单击RevoluteJointblock,在弹出的对话框中将InternalMechanicsDampingcoefficient设为8e-5(N*m)/(deg/s),确保StateTargetsspecifyPositionTargetValue为0(初始角为0)。•在matlab命令行输入以下命令figure;holdon;plot(q);plot(w);得到如下图所示摆角(蓝色)、角速度(红色)与时间的函数关系•在matlab命令行中输入以下命令figure;plot(q.data,W.data);得到摆角与角速度的关系改变初始角为-240,-180,-120,-60,0,and60°,重复上述命令可以得到如图:6.有阻尼和激励下的单摆•左键快速单击RevoluteJoint两次,在弹出来的对话框中设置ActuationTorque为`ProvidedbyInput。•添加以下两个模块LibraryBlockSimscapeUtilitiesSimulink-PSConverterSimulinkSourcesSineWave连接成如下图所示•左键快速单击SineWaveblock两次,在弹出的对话框中将Amplitude设置为0.06,在RevoluteJointblock对话框中将确认StateTargetsPositionValue为0。•运行仿真,在matlab命令行中输入以下命令画出摆角、角速度与时间的关系figure;holdon;plot(q);plot(w);如下图所示•在matlab命令行中输入以下命令画出摆角与角速度的函数关系plot(q.data,W.Data);如下图所示Simscape刚体变换一、创建坐标系以一个L梁作为示例,在matlab命令行输入smdoc_lbeam_inertia将会弹出一个L梁的坐标关系图:左键快速点击图中的立方体两次,弹出立体对话框点击Frames左边的“+”号,选择newframe右边的加号,会弹出一个坐标对话框从上到下依次为:1.坐标名称2.坐标原点3.主轴4.副轴按自己想要的设置即可。添加立体到模型中1.打开simulink2.选择Simscape下的Multibody:3.将默认存在的块体删除,选择LibraryBrowserSimscapeMultibodyBodyElements:将其中的solid拖到窗口中即可。建立坐标系及刚体变换•刚体转动变换1.将两个立方体连接起来,使立方体的世界坐标系在空间上是重合的2.可视化立体坐标系:将SimscapeUtilitiesSolverConfiguration拖到模型中,并与一个立方体连接3.选择SimulationUpdateDiagram更新流程图,将会打开MechanicsExplorer窗口4.应用刚体变换:在MultibodyFramesandTransforms拖一个rigidTransform,将它连接到两个立体的中间,左键快速单击两次,在弹出对话框中选择–RotationMethodtoStandardAxis.–RotationAxisto-Z.–RotationAngleto45.5.选择OK然后SimulationUpdateDiagram更新流程图,如下图,完成了一个刚体转动变换。6.点击RigidTransform可以看到,两个立体的坐标系原点和Z轴是重合的,X轴和Y轴彼此错开了45°。•平动变换1.将TranslationMethod设置为Cartesian,TranslationOffsetto[110]。2.offset数组表示相对于基础坐标系(BaseFrame,就是与变换块“B“接口相连的立体坐标系)在x,y,z方向上的偏移量,后面的是单位。3.选择OK然后SimulationUpdateDiagram更新流程图,如下图,完成了一个刚体平移变换。
本文标题:SimscapeMultibody-物理建模
链接地址:https://www.777doc.com/doc-4490770 .html