许可优化
产品
解决方案
服务支持
关于
软件库
当前位置:服务支持 >  软件文章 >  Adams与MATLAB_Simulink联合仿真教程——直流电机案例

Adams与MATLAB_Simulink联合仿真教程——直流电机案例

阅读数 6
点赞 0
article_banner

1. 前言

本例子参考自Robert L. Norton编写的《Adams Tutorial Kit for Mechanical Engineering Courses (Third Edition)》中的Example 34: DC Motor,对其进行了更加仔细的整理,补足了一些不够仔细的部分,这个例子应该可以说是我见过的最为详细完整的Adams与Simulink 联合仿真的例子,即使是对零基础的人也很友好。因此整理出来,以供有需要的人参考。

对于写文章分享,还是小学生一个,如果觉得对你有帮助的,请不要忘记点个赞,如果觉得写得不错,会考虑整理更多相关的图文教程。

2. 理论部分

根据基尔霍夫电压定律

v i v L v R v b =0 v_i-v_L-v_R-v_b=0\\

其中: v_i 是输入电压; v_L v_R 分别是电感和电阻两端的电压; v_b 是反向电压,与电机转速成正比,即:

v_b=K_b\cdot \dot{\theta}\\

现在,根据电枢电流 和电机转速写出电压降的表达式:

v_i-L_A\cdot \frac{di_A}{dt}-R_A\cdot i_A-K_b\cdot \dot{\theta}=0 \\

电机输出的扭矩与电枢电流成正比,

T_m=K_t\cdot i_A \\

根据电机轴动力学公式 得出:

T_m-c\cdot \dot{\theta}=J\cdot \ddot{\theta} \\

整理公式得出:

\begin{cases} \frac{di_A}{dt}=\frac{v_i-R_A\cdot i_A-K_b\cdot \dot{\theta}}{L_A}\\ \ddot{\theta}=\frac{K_t\cdot i_A-c\cdot \dot{\theta}}{J}\\ \end{cases}\\

3. Simulink模型

根据上面的公式,可以在Simulink里面搭建对应的框图模型,相应参数以及对应框图如下。

3.1. 仿真参数

% initialize DC motor parameters
L   = 0.01;    % unit: H
R   = 10;      % unit: ohm
K_t = 0.6;     % unit: Nm/A
K_b = 0.002;   % unit: V*s/rad
J   = 1.22e-5; % unit: kg*m^2
c   = 0.0001;  % unit: Nm*s/rad

3.2 Simulink模型框图

3.3 仿真结果

进行5s仿真,结果如下,以作为联合仿真的对照结果。

4. Adams 建模

4.1 创建新模型

打开软件,新建模型,选择MKS单位系统,这一步对最终结果影响不大,可根据自己使用习惯进行调整。

4.2 创建电机主轴

这里采用一个圆柱体来作为电机主轴的模型。选择创建【Cylinder】。

选择新建部件,输入对应的外形参数,长【10 cm】,半径【1 cm】,然后分别先后点击【原点】和X【轴上的一点】,完成圆柱体的创建,然后把新创建的圆柱体命名为【Shaft】。

4.3 创建约束

选择【YZ平面】为工作平面;工作平面的选择为后续的约束以及力矩的定位提供方便。

选择添加【Revolute joint

按照默认设定,依次选择【圆柱体】,【地面】和【坐标原点】,完成转动副的创建。

4.4 添加旋转阻尼

选择添加一个【Rotiational Spring-Damper】

勾选【阻尼系数 CT】在框中填上对应的阻尼系数【0.0001 (N*m*s/rad)】,然后依次点击【圆柱体】,【地面】以及【圆柱体质心】,完成【旋转阻尼】的创建。

双击已经创建好的【旋转阻尼】,在刚度系数的下拉菜单中选择【no stiffness】

4.5 创建状态变量

首先要创建一个新的【Marker】,

选择【通过X轴与Y轴】定义参考点,依次选择【坐标原点】,【圆柱体质心X轴】,【圆柱体质心Y轴】完成参考点的创建,将其重命名为【marker_ref】,这个参考点将用于轴角位移和角速度的测量。

随后,如下图所示,选择创建状态变量,创建3个状态变量。

其中【moter_torque】为输入力矩,不需要修改内容,它的值会从Simulink中获取;【motor_theta】为轴的角位移,对应的公式为【AZ(Shaft.cm, marker_ref)】,【motor_omega】为轴的角速度,对应的公式为【WZ(Shaft.cm, marker_ref, marker_ref)】,这两者为输出变量。

4.6 创建力矩

选择创建一个力矩

按照默认的选项,依次点击【圆柱体】和【坐标原点】,完成力矩的创建。

双击新创建的力矩,输入公式【-VARVAL(motor_torque)】,此公式的意义在于把输入变量【motor_torque】的值赋给力矩,此处不可之间输入变量名,需要通过【VARVAL】函数进行转换,负号的添加取决于刚才参考点的选取,看情况选择是否添加。

至此,Adams模型的创建已经完成。

5. Adams与Simulink联合仿真

5.1 导出Adams模型

在【tools】中选择【plugin manager】选择加载【Adams Control】插件

在【Plugins】中选择【Adams Control】中的【Plant Export】

在输入信号框中点击右键,选择【motor_torque】

同样,在输出信号的框中点击右键,选择【motor_theta】和【motor_omega】

在【target software】中选择【MATLAB】,最后窗口应如下图所示,点击【OK】,完成模型的导出。

最终会得到以下这4个文件

5.2 MATLAB部分

打开MATLAB,运行导出的【*.m】文件,得到如下结果。

在【命令行】中输入【adams_sys】打开默认生成的Simulink模型,其中橙色模块就是导出的模型,这个adams子模块可以复制出来,连接到你的模型中,每次运行之前只需要先运行【*.m】文件即可。注意:若模型路径变化会产生警告,这个时候【*.slx】文件中的adams子模块不需要更改,但是需要重新导出一次模型,并运行新导出的【*.m】文件即可消除警告。

5.3 搭建对应的联合仿真模型

Adams子模块复制出来以后,代替原有的动力学模型,框图如下:

仿真结果如下:


5.4 仿真结果对比

将两个模型放在一起比较:

结果如下:

6. Adams 中查看结果

如果Simulink中的数据并不能满足你的需求,需要查看非输出变量的变化,或者说想要看到或者导出具体的机构运动动画的话,你需要先找到联合仿真以后生成的【*.res】文件。注意这个文件每仿真一次都会重新覆盖,有需要的记得复制到其他目录下保存。

然后将其导入,注意在导入的时候需要双击【Model Name】旁边灰色的框,然后选中里面的模型,再进行导入。

然后就可以在【postprocessor】中进行查看。

7. 后记

一般平时只会逛逛知乎,一直都是当一个小透明,中文关于adams和Simulink联合仿真的资料写得好的不多,这此整理出来希望能够帮到有需要的人。这个教程应该足够详细了,即使是初学者也应该没有难度,如果有机会,将来会再整理一些Adams的一些高阶一点点的使用技巧。


已经不逛知乎好多年,也不干科研很多年了,所幸当年素材还在,查漏补缺了一下,由于已经不从事这方面的工作了,技术性的问题也应该回答不了了,以上。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空