本文主要是介绍Simscape Multibody简介与入门 (下),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Simscape Multibody简介与入门 (下)
转载自https://zhuanlan.zhihu.com/p/67768339
开头简介
下图是摆动导杆的机构简图:
其中曲柄1为主动件。总共有3个构件,4个低副(三个转动副一个移动副),该机构自由度为1。
下面介绍从CAD软件导出xml文件,再导入到simulink的工作流程。
CAD建模
首先,依据上面的机构简图,在CAD软件中建立零件的三维模型,指定材料,然后零件之间通过恰当的约束与联接形成装配图,在专业CAD软件里面指定约束还是很方便的,对于熟悉CAD的同学操作起来应该很快。装配图:
接下来就是将装配图导出xml文件,这就用到之前安装的插件了,不同软件具体操作可能不一样~Inventor操作倒是挺简单的。
直接就生成对应的xml文件,还有附带的STEP模型。
Matlab导入XML
接着,打开Matlab,把Matlab的工作目录移到xml文件所在文件夹。使用smimport命令。
smimport(‘filename’);
filename为xml文件名(带后缀)。
成功后会自动新建一个Simulink模型,里面就是对应的物理网络。
直接运行之后报错,检查错误信息,是因为过度约束的问题,将红圈内多余的约束去掉之后即能开始仿真,官方对于物理仿真推介的解算器是ode15s(stiff/NDF),还挺快的。
默认设置是仿真的时候会自动出现一个Mechanics Explorer窗口播放仿真动画。
如果发现动画帧数过低,可能是因为仿真步长过大。解决方法是不断地眨眼,眨眼补帧 : (
也可以通过缩小仿真的最大步长来增加帧数 : )
各种高副低副还有坐标系测量模块实际上联接或测量的都是坐标系(固定在构件上,可以自定义这些坐标系,可以平移这些坐标系,也可以旋转它们)。
分析
对于这个机构,当曲柄作匀速转动的时候,滑块到转动副的水平距离应该是一个三角函数。我们可以通过施加一个力矩作用在曲柄上,并在simulink中增加坐标测量模块来考察这一点。
像各种高副低副模块,比如说转动副模块,都可以设置State Targets里的参数来设定初始位置、初始转速等。还可以对摩擦进行设置,这里设定为不存在摩擦力。另外,重力加速度设定为0。
在曲柄上加上一个作用0.5秒的0.001牛米的力矩,
用到一个“外力(矩)模块”(External Force and Torque):
坐标系的测量模块Transform Sensor
使用十分简单,测量B端和F端间距离,相对坐标,角度,角速度等数据,输出接一个PS-Simulink Convertor模块由物理信号转化成Simulink信号。测量出来的曲柄杆长跟CAD图里的杆长一致。
测量下图第二个坐标系(青蓝色的笛卡尔坐标系)在第一个坐标系x轴上的坐标。
按照我一开始想的,这个数值应该有一个正弦或者余弦的变化规律,但是出来却是下面这个样子:
后来我想了很久,才发现自己忽略了一个很基本的事实,虽然约束是理想约束,且0.5秒后撤掉力矩,但是曲柄并不是做匀速转动,而是会周期性的增减速。后来就在一瞬间发现自己的弱智之处,虽然没有了外力矩的作用,角动量守恒,但是这几个构件相对与曲柄-机架转轴转动惯量是变化的,导致角速度也在随着变化。
于是,把这几个构件的质量都设置为1e-6克(没法设置成0,哈哈),就是满足了各种力学课本上经常出现而又经常被忽略掉的一个条件,即忽略杆件自重。
于是就仿真出来一个余弦图了。
动图:
相关资料
在Matlab控制台输入sm_four_bar即可打开官方的一个四连杆物理仿真例程,作为一个入门教学还是不错的。Help文档里搜索Simscape Multibody,也有很多有用的例程。
结语
其实本来是尝试用Simulink来做悬架的物理仿真,但是鉴于Adams使用得更广泛,所以这篇教程当做是摸索过程中的一个总结与笔记吧
Measure
Measure
这篇关于Simscape Multibody简介与入门 (下)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!