v2-21433536ea96f5fdf1f6db1caaa262cc_1440w.jpg?source=172ae18b

1. 前言

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

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

2. 理论部分

v2-e6b60fd8607e6c20ce8f03cb10132189_b.jpg

根据基尔霍夫电压定律:

其中:

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

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

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

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

整理公式得出:

3. Simulink模型

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

3.1. 仿真参数

% initialize DC motor parameters

3.2 Simulink模型框图

v2-9cae715751a14f89d9bd02827cbb10a7_b.jpg

3.3 仿真结果

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

v2-360bb9e116b5dda13bf6047fdc139e60_b.jpg

4. Adams 建模

4.1 创建新模型

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

4.2 创建电机主轴

v2-b8c6dd1da0252f308fd81eb5fd19affb_b.jpg

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

v2-1935aa9aae992caa37c3be44c646eaeb_b.png

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

v2-61bcc628336a3effcd992d5f139a6446_b.jpg

4.3 创建约束

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

v2-e75661ecc6771ff0cfe581f39cb7330a_b.jpg

选择添加【Revolute joint】

v2-7ffea77a542be2dec75db570d401ed3c_b.jpg

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

v2-e6cb64762a5d9f45a483979786b82d31_b.jpg

4.4 添加旋转阻尼

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

v2-40ffd6c02550690c19cb3ffc4393adde_b.jpg

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

v2-f6a2f6b7caa1ffdaabb18682d479da76_b.jpg

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

v2-d1e47f4d2fb1a2945611ec439340cabe_b.jpg

4.5 创建状态变量

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

v2-be6a2f7d3a9531d404e2c669e248ef67_b.jpg

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

v2-de1e0d0ba651efbf77c83e87757315fc_b.jpg

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

4.6 创建力矩

选择创建一个力矩

v2-059e700d58eedad3aa4d7a2ecd62377c_b.jpg

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

v2-8e621410d8ff2b0ad1a70e7e3a9ad7bb_b.jpg

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

v2-5d52b38450096e10987e50de66032df6_b.jpg

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

5. Adams与Simulink联合仿真

5.1 导出Adams模型

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

v2-0edef29d9fd086c152e3a5c1991ed6a7_b.jpg

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

v2-da84ba734c711ae28fa70e64c287cbd9_b.jpg

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

v2-505f1bdbdf9a377da2daa5671de1df85_b.jpg

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

v2-0db9a25a5b6f6096d6f82d1846657dbc_b.jpg

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

v2-81db2f245550a71afc5a83d97fe92f7a_b.jpg

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

v2-5465f93ab6535c3873dfc7bdfe506426_b.jpg

5.2 MATLAB部分

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

v2-eb3078595bcc2bc10d07240b799c9947_b.jpg

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

v2-34a3e8603ce3822572a06cf603ac0972_b.jpg

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

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

v2-63f6984d3ab429c8e2b9635e0979d515_b.jpg

仿真结果如下:

v2-ba5148bbb7c4fa7906d3828c76e4cf5b_b.jpg

5.4 仿真结果对比

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

v2-482d3489f8a3583643e002887c4b29dd_b.jpg

结果如下:

v2-84eb77b2dd6404648f308332a79d083b_b.jpg

6. Adams 中查看结果

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

v2-191cd49f6c8d046ca7c2332c4e175a52_b.png

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

v2-a138a57ba7a437ff115f389821aa22c8_b.jpg

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

v2-d40e52a706367592a49e7d027eb0ae7e_b.jpg

7. 后记

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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐