ADAMS 建模实录:一个凸轮活塞机构,翻了 7 次车才让它动起来

学 ADAMS 的人都有过这种体验:跟着教程一步步点,模型就是不动;或者一动就炸开、部件乱飞。然后你根本不知道是哪一步错了。


这篇复盘的是一节 ADAMS 实操课——凸轮活塞往复机构。老师全程真实操作,中间翻车 7 次:驱动没生效、运动传不下去、部件穿透、模型炸开、约束方向选错……每一次的排查思路都比"正确答案"值钱。


先看机构:运动是怎么传下去的


ADAMS 建模实录:一个凸轮活塞机构,翻了 7 次车才让它动起来的图1


用到的运动副:旋转副、平移副(移动副)、平面副、方向副、固定副;驱动只有一个——旋转副驱动,加在黄色凸轮上。


一个前置习惯:动手建模前,先把机构的运动关系在脑子里过一遍——每个部件相对谁、做什么运动。这样你才知道每个位置该加哪种运动副。比如凸轮是绕大地旋转 → 这里就该是旋转副。

凸轮活塞机构全貌

ADAMS 建模实录:一个凸轮活塞机构,翻了 7 次车才让它动起来的图3


图1 凸轮活塞机构:凸轮旋转 → 蓝杆上下 → 绿色摆臂摆动 → 粉色活塞往复


零、拿到别人的模型:CMD 文件自学法


网上找到的、老师发的案例,很多是 .cmd 文件。打开方式有点绕:

1. 打开 ADAMS,会弹出「新建 MODEL」的对话框 → 直接关掉

2. 得到一个空白界面,鼠标放在空白处

3. 按快捷键 F2

4. 选择那个 .cmd 文件 → 打开

cmd 文件里通常已经包含 Part + 搭好的运动副 + 驱动 + 力单元。这时候最值的做法是:


★ 高效自学法

把里面所有的运动副、驱动、力单元全部删掉,只留下 Part,然后自己从零开始重新搭一遍。

这样你既有了正确的参考模型(随时能翻回去看答案),又逼着自己真正动手。比看十遍演示都有用。

CMD文件打开方式与F2快捷键

ADAMS 建模实录:一个凸轮活塞机构,翻了 7 次车才让它动起来的图5


图2 打开 CMD 文件:关掉新建弹窗 → 空白处按 F2 → 选择文件


一、开工前的 4 个界面设置


① 关掉栅格 Grid

建模时背景网格用不上,关掉视野更干净。


② 切成线框模式

屏幕右下角倒数第 4 个「小地球」按钮可以在实体和线框之间切换。线框模式下能更清晰地看到内部的 Marker 点,选点不容易错。


③ 放大标记点图标

Settings(设置工具)里把图标大小从默认 2.5×10⁻² 改成 5×10⁻² → Apply。Marker 点变大,建模时好选得多。


④ 检查单位 ⚠

ADAMS 默认单位是英尺!不先确认单位,后面输入的每一个数值都是错的。这是所有多体动力学软件共同的第一个坑。


另外三件小事:给每个 Part 起好辨认的名字;右键 Modify 设置材料属性(密度、弹性模量、泊松比,可按几何形状+密度指定,也可按几何形状+材料类型指定);本例不考虑重力场。

线框模式下清晰显示Marker点

ADAMS 建模实录:一个凸轮活塞机构,翻了 7 次车才让它动起来的图7


图3 线框模式下 Marker 点清晰可见,选点不容易出错


二、建模顺序:从驱动件开始


原则:谁是驱动件,谁就是创建运动副的起始件。然后沿着运动传递关系一路往下走,直到末端执行件。本例就是:黄色凸轮 → 蓝色杆 → 绿色摆臂 → 粉色活塞。(也可以按从左往右、从上往下的顺序,关键是有固定顺序,别东一下西一下。)


正常搭建的 8 步:

部件→运动副→关键设置

1. 凸轮+大地→旋转副「两个物体一个位置」;方向选「垂直于栅格 Normal to Grid」(需把 Grid 点亮);第二部件点空白处即选中 ground,会出现「大地」小标记;location 选凸轮中心

2. 凸轮→旋转副驱动 选刚建的旋转副;所有驱动都在「连接」里,改名方便后期调试

3. 蓝色杆+大地→平面副 白色衬套属于大地,直接在空白处选 ground

4. 蓝色杆+大地→方向副 location 选 Marker,方向选向右 X

5. 绿色摆臂+蓝色杆→平面副 快捷键 C 设为旋转中心;右键可让 Marker 显示白色小圈圈,确认选中的是哪个

6. 绿色摆臂+大地→旋转副

7. 绿色摆臂+粉色活塞→平面副 位置选活塞顶端连接处 Marker,方向沿 Marker 的 Y 轴

8. 粉色活塞+大地→移动副 活塞只能上下往复


三、7 次翻车与排查全过程


坑 1|加了旋转驱动,凸轮却一动不动

真相:驱动函数默认是 30deg × time。仿真时间给得太短,凸轮其实动了,只是慢到肉眼看不出来。

解决:把角度改成 90 度,运动立刻明显。

教训:「模型不动」先怀疑驱动函数和仿真时间设置,别急着改约束。

旋转副驱动函数30deg乘time

ADAMS 建模实录:一个凸轮活塞机构,翻了 7 次车才让它动起来的图9


图4 驱动函数是 30deg×time——时间给短了,看起来就像「没动」

坑 2|只有凸轮自己在转,运动完全没传下去

真相:凸轮和蓝杆只是在几何上「挨着」,两者之间没有相互作用力,所以凸轮转过去了,蓝杆毫无反应。

解决:在「力」里加接触力(实体对实体 Solid-to-Solid),右键分别选取两个接触实体。

小知识:接触力的图标是「3 个小点 + 1 个大点」——两个大点撞在一起撞碎了,所以接触也常被叫做碰撞,两者是一回事。

只有凸轮自己动运动没传递

ADAMS 建模实录:一个凸轮活塞机构,翻了 7 次车才让它动起来的图11


图5 只有凸轮在动:几何相邻 ≠ 有相互作用力,必须加接触

添加实体对实体接触力

ADAMS 建模实录:一个凸轮活塞机构,翻了 7 次车才让它动起来的图13


图6 添加实体对实体(Solid-to-Solid)接触力

坑 3|凸轮顶到蓝杆时「撞不过去」,出现穿透

真相:凸轮是有行程的。当凸轮走到上面的位置时,活塞杆本来需要往上让一点;但如果在那个位置加了碰撞力,行程就不够了,于是出现「穿过去」的现象。所以运动过程一定要先完整跑一遍,才能发现行程冲突。


坑 4|改成负方向、时间给到 5 秒,模型直接「炸开锅」

症状:蓝色杆不是上下运动,而是跑偏成了左右运动,整个机构乱飞。

排查方法(最值钱的一条):通过动画的运行效果反推哪个部件的运动关系不对。机构的运动完全遵循实际运动过程,所以看动画就能定位到问题部件。

定位链条:粉色活塞跑偏 → 带动绿色摆臂跑偏 → 带动蓝色杆跑偏。一条链上,最末端先出问题,往上游一个个查。先给粉色活塞补上移动副,右边立刻正常了。

模型炸开部件跑偏

ADAMS 建模实录:一个凸轮活塞机构,翻了 7 次车才让它动起来的图15


图7 模型「炸开」:蓝杆跑偏成左右运动,说明它的运动副建错了


坑 5|蓝杆仍来回滑动 → 根因是平面副的平面选错了方向

真相:想让这根杆上下移动,那它所在的运动平面就应该是沿杆的竖直平面;结果却选成了横向的平面。约束方向一错,杆自然只能左右滑。

解决:删掉重建平面副,这次选沿杆的竖直平面,方向副也改成竖直方向 → 立刻对了。

教训:平面副/方向副这类「方向敏感」的约束,选完先确认高亮的那个平面是不是你想要的那个。

平面副方向选错导致杆件跑偏

ADAMS 建模实录:一个凸轮活塞机构,翻了 7 次车才让它动起来的图17


图8 平面副选成了横向平面——约束方向错误是跑偏的头号根因


坑 6 & 7|加了碰撞力仿真失效 / 碰撞参数没选对仍跑偏

给粉色活塞和灰色件之间加碰撞后,仿真直接失效——还是行程冲突:凸轮走到上面时活塞必须上移,碰撞约束把这个行程堵死了。另外碰撞参数没调好时,某个位置也会出现明显跑偏。结论:能用运动副表达的约束,就别靠碰撞去硬顶。

🏆 最终解法:把移动副换成「点线副」

1. 物体 → Marker → 选「添加到现有部件」→ 部件选蓝色杆 rod

2. Marker 位置放在蓝杆与凸轮的交点处

3. 连接 → 点线副:第一个 Marker 选刚建的交点,曲线选黄色凸轮的边界线

4. 把粉色处的碰撞全部删掉

效果:蓝杆被强制约束成沿凸轮边界线运动,多了一层约束就不再跑偏,整个机构的运动关系完全正确。

用点线副约束蓝杆沿凸轮边界运动

ADAMS 建模实录:一个凸轮活塞机构,翻了 7 次车才让它动起来的图19


图9 点线副:Marker 落在凸轮边界线上,强制蓝杆沿曲线运动


四、为什么蓝杆不能加移动副


这是整个案例里最有理论价值的一点:

移动副(Translational Joint),只释放 1 个自由度,约束其余 5 个


但蓝色杆的实际运动是复合的:它既要沿自身轴线往复滑动,又要跟随绿色摆臂上下摆动。强行加移动副 → 运动副冗余(过约束)→ 模型报错,或者出现「运动相斥」,部件乱跑。

两种等效替代方案:

方案 A:平面副 + 方向副 组合 两个约束叠加,也能达到移动副的效果,同时保留了摆动的余地

方案 B:点线副(最终采用) 直接把杆约束在凸轮轮廓线上运动,物理上最贴近真实的凸轮-从动件接触关系

ADAMS 建模实录:一个凸轮活塞机构,翻了 7 次车才让它动起来的图20

移动副导致过约束的演示

图10 演示:加了移动副后,蓝杆与绿色摆臂之间出现运动相斥


五、两个必须养成的习惯


① 不断保存

ADAMS 崩了之后模型没法恢复。搭几步就存一次,这不是强迫症,是保命。

② 分步试运算

搭好一部分运动副就跑一次仿真,及时发现错误。千万不要一口气把 8 个约束全建完再算——那时候出错,你根本不知道是哪一步的问题,只能全部推倒重来。

关于心态:老师自己也在视频里说,他搭这个模型「并不是一帆风顺的」。遇到报错、不收敛,不要急,静下心找问题——仿真本身就是一个不断修正的过程。会排查问题的人,比一次就搭对的人值钱得多。


✅ ADAMS 机构建模速查

1. 拿别人模型:F2 打开 cmd → 删光运动副/驱动/力 → 只留 Part → 自己重搭

2. 开工前:关栅格 · 切线框模式 · Marker 图标 2.5e-2→5e-2 · 确认单位(默认英尺)

3. 建模顺序:从驱动件起,沿运动传递路径走到末端执行件

4. 选大地:鼠标点空白处即选中 ground;右键可让 Marker 显示白圈确认

5. 模型不动:先查驱动函数(30deg×time)和仿真时间

6. 运动传不下去:几何相邻 ≠ 有力传递,加 Solid-to-Solid 接触

7. 部件跑偏:看动画反推 → 从链条末端往上游查 → 重点查平面副/方向副的方向

8. 复合运动件:别用移动副(过约束)→ 用「平面副+方向副」或「点线副」

9. 习惯:勤保存 + 分步试运算


扫码添加小助理,回复关键词「ADAMS」获取转行学习路径与课程大纲

ADAMS 建模实录:一个凸轮活塞机构,翻了 7 次车才让它动起来的图22
查看全文
我的头像
默认 最新
ansys结构交流群