ADAMS 建模实录:一个凸轮活塞机构,翻了 7 次车才让它动起来
学 ADAMS 的人都有过这种体验:跟着教程一步步点,模型就是不动;或者一动就炸开、部件乱飞。然后你根本不知道是哪一步错了。
这篇复盘的是一节 ADAMS 实操课——凸轮活塞往复机构。老师全程真实操作,中间翻车 7 次:驱动没生效、运动传不下去、部件穿透、模型炸开、约束方向选错……每一次的排查思路都比"正确答案"值钱。
先看机构:运动是怎么传下去的
用到的运动副:旋转副、平移副(移动副)、平面副、方向副、固定副;驱动只有一个——旋转副驱动,加在黄色凸轮上。
一个前置习惯:动手建模前,先把机构的运动关系在脑子里过一遍——每个部件相对谁、做什么运动。这样你才知道每个位置该加哪种运动副。比如凸轮是绕大地旋转 → 这里就该是旋转副。
图1 凸轮活塞机构:凸轮旋转 → 蓝杆上下 → 绿色摆臂摆动 → 粉色活塞往复
零、拿到别人的模型:CMD 文件自学法
网上找到的、老师发的案例,很多是 .cmd 文件。打开方式有点绕:
1. 打开 ADAMS,会弹出「新建 MODEL」的对话框 → 直接关掉
2. 得到一个空白界面,鼠标放在空白处
3. 按快捷键 F2
4. 选择那个 .cmd 文件 → 打开
cmd 文件里通常已经包含 Part + 搭好的运动副 + 驱动 + 力单元。这时候最值的做法是:
★ 高效自学法
把里面所有的运动副、驱动、力单元全部删掉,只留下 Part,然后自己从零开始重新搭一遍。
这样你既有了正确的参考模型(随时能翻回去看答案),又逼着自己真正动手。比看十遍演示都有用。
图2 打开 CMD 文件:关掉新建弹窗 → 空白处按 F2 → 选择文件
一、开工前的 4 个界面设置
① 关掉栅格 Grid
建模时背景网格用不上,关掉视野更干净。
② 切成线框模式
屏幕右下角倒数第 4 个「小地球」按钮可以在实体和线框之间切换。线框模式下能更清晰地看到内部的 Marker 点,选点不容易错。
③ 放大标记点图标
Settings(设置工具)里把图标大小从默认 2.5×10⁻² 改成 5×10⁻² → Apply。Marker 点变大,建模时好选得多。
④ 检查单位 ⚠
ADAMS 默认单位是英尺!不先确认单位,后面输入的每一个数值都是错的。这是所有多体动力学软件共同的第一个坑。
另外三件小事:给每个 Part 起好辨认的名字;右键 Modify 设置材料属性(密度、弹性模量、泊松比,可按几何形状+密度指定,也可按几何形状+材料类型指定);本例不考虑重力场。
图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 度,运动立刻明显。
教训:「模型不动」先怀疑驱动函数和仿真时间设置,别急着改约束。
图4 驱动函数是 30deg×time——时间给短了,看起来就像「没动」
坑 2|只有凸轮自己在转,运动完全没传下去
真相:凸轮和蓝杆只是在几何上「挨着」,两者之间没有相互作用力,所以凸轮转过去了,蓝杆毫无反应。
解决:在「力」里加接触力(实体对实体 Solid-to-Solid),右键分别选取两个接触实体。
小知识:接触力的图标是「3 个小点 + 1 个大点」——两个大点撞在一起撞碎了,所以接触也常被叫做碰撞,两者是一回事。
图5 只有凸轮在动:几何相邻 ≠ 有相互作用力,必须加接触
图6 添加实体对实体(Solid-to-Solid)接触力
坑 3|凸轮顶到蓝杆时「撞不过去」,出现穿透
真相:凸轮是有行程的。当凸轮走到上面的位置时,活塞杆本来需要往上让一点;但如果在那个位置加了碰撞力,行程就不够了,于是出现「穿过去」的现象。所以运动过程一定要先完整跑一遍,才能发现行程冲突。
坑 4|改成负方向、时间给到 5 秒,模型直接「炸开锅」
症状:蓝色杆不是上下运动,而是跑偏成了左右运动,整个机构乱飞。
排查方法(最值钱的一条):通过动画的运行效果反推哪个部件的运动关系不对。机构的运动完全遵循实际运动过程,所以看动画就能定位到问题部件。
定位链条:粉色活塞跑偏 → 带动绿色摆臂跑偏 → 带动蓝色杆跑偏。一条链上,最末端先出问题,往上游一个个查。先给粉色活塞补上移动副,右边立刻正常了。
图7 模型「炸开」:蓝杆跑偏成左右运动,说明它的运动副建错了
坑 5|蓝杆仍来回滑动 → 根因是平面副的平面选错了方向
真相:想让这根杆上下移动,那它所在的运动平面就应该是沿杆的竖直平面;结果却选成了横向的平面。约束方向一错,杆自然只能左右滑。
解决:删掉重建平面副,这次选沿杆的竖直平面,方向副也改成竖直方向 → 立刻对了。
教训:平面副/方向副这类「方向敏感」的约束,选完先确认高亮的那个平面是不是你想要的那个。
图8 平面副选成了横向平面——约束方向错误是跑偏的头号根因
坑 6 & 7|加了碰撞力仿真失效 / 碰撞参数没选对仍跑偏
给粉色活塞和灰色件之间加碰撞后,仿真直接失效——还是行程冲突:凸轮走到上面时活塞必须上移,碰撞约束把这个行程堵死了。另外碰撞参数没调好时,某个位置也会出现明显跑偏。结论:能用运动副表达的约束,就别靠碰撞去硬顶。
🏆 最终解法:把移动副换成「点线副」
1. 物体 → Marker → 选「添加到现有部件」→ 部件选蓝色杆 rod
2. Marker 位置放在蓝杆与凸轮的交点处
3. 连接 → 点线副:第一个 Marker 选刚建的交点,曲线选黄色凸轮的边界线
4. 把粉色处的碰撞全部删掉
效果:蓝杆被强制约束成沿凸轮边界线运动,多了一层约束就不再跑偏,整个机构的运动关系完全正确。
图9 点线副:Marker 落在凸轮边界线上,强制蓝杆沿曲线运动
四、为什么蓝杆不能加移动副
这是整个案例里最有理论价值的一点:
移动副(Translational Joint),只释放 1 个自由度,约束其余 5 个
但蓝色杆的实际运动是复合的:它既要沿自身轴线往复滑动,又要跟随绿色摆臂上下摆动。强行加移动副 → 运动副冗余(过约束)→ 模型报错,或者出现「运动相斥」,部件乱跑。
两种等效替代方案:
方案 A:平面副 + 方向副 组合 两个约束叠加,也能达到移动副的效果,同时保留了摆动的余地
方案 B:点线副(最终采用) 直接把杆约束在凸轮轮廓线上运动,物理上最贴近真实的凸轮-从动件接触关系
图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」获取转行学习路径与课程大纲










评论0