ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

滚珠丝杠Adams仿真建模三大错误与修正方法

滚珠丝杠Adams仿真建模三大错误与修正方法 说个让我印象很深的事去年帮朋友调试一个滚珠丝杠进给机构的Adams模型他卡了两个星期要么一仿真就发散要么结果里丝杠转了半天螺母纹丝不动。远程打开他的模型我只看了不到十分钟就找到了问题——他把SolidWorks里带螺纹特征的丝杠和螺母原封不动导进去然后用Solid-Solid接触把二十几颗滚珠全建了出来接触刚度拍脑袋填了个数约束也是一股脑堆上去。这类问题我见得太多做滚珠丝杠仿真遇到困难九成不是软件不行而是建模这一步就把自己坑了。这篇文章不谈虚的直接拆解我这些年调试滚珠丝杠Adams模型时最常撞见的三个建模错误接触模型与参数乱建、运动副规划过约束、预紧力与摩擦参数草率处理。每一个我都会讲清楚问题根源、排查思路、正确做法和验证方法最后再用一个修正案例走完整条链路。适合正在做丝杠进给系统、直线驱动机构或者任何用滚珠丝杠做传动的多体动力学仿真的朋友。1. 滚珠接触模型乱建发散和穿透的源头在这一步就埋下了1.1 先用哪套接触策略决定了后面是跑得动还是跑不动Adams里给滚珠丝杠建立接触关系大致有三条路可以走全套Solid-Solid接触、Point-Segment接触、以及用等效力元素替代滚珠群。我见过最多的错误是零基础用户把三维模型直接导入在每颗滚珠与丝杠滚道、螺母滚道之间全部建立Solid-Solid接触。听起来最接近物理实况但跑起来之后就知道了Solid-Solid每步都要计算两个三维实体之间的穿透体积和接触力再加上丝杠和螺母模型里自带的圆角、螺旋沟槽网格整个系统的自由度被撑到几十万求解器每走一步都要做大量接触搜索步长被压到微秒级别结果是要么一晚上都跑不完要么接触力尖峰直接让积分器发疯。正确的思路是能用简化接触表达的绝不用全实体接触。滚珠丝杠的滚珠与滚道本质上是球体与凹圆弧沟槽的接触接触点是一个很小的区域受力方向基本指向沟槽法线方向。这种情况下用Point-Segment接触来模拟滚珠与滚道的相互作用是工程上最常见的方案——把滚珠简化成质量点Sphere滚道简化成中心路径上的曲线段Segment接触力根据点和线之间的距离以及相对速度来计算计算量比Solid-Solid小一两个数量级而且数值稳定性好得多。如果你的仿真目标不是研究滚珠本身的应力分布而只是要得到系统的动力学响应——比如螺母位移、驱动力矩、振动特性——甚至可以把滚珠群整体替换为零质量或者小质量的SPRING力元通过定义轴向刚度和阻尼来模拟滚珠群的传力特性。这个做法在整机动力学分析里尤其好用整台机床进给系统的Adams模型里如果滚珠丝杠副用几根弹簧代表仿真速度会快到你不敢相信。选型原则我总结成一句话研究滚珠应力用有限元研究机构动力学用接触或者力元千万别拿多体动力学去硬扛全实体接触。1.2 接触参数不是拍脑袋填的一个估算例子和一组经验值第二个高频错误是接触模型选对了但参数乱填。很多人看到Adams的Impact接触参数框就头大Stiffness、Force Exponent、Damping、Penetration Depth分别填多少全是凭感觉填完跑出来接触力几千牛实际工况只有几百牛他自己还浑然不觉。接触刚度最好先用赫兹理论估算一个合理量级。拿常见的直径20mm、导程10mm的滚珠丝杠来说滚珠直径一般取6mm左右材料是轴承钢弹性模量E206GPa泊松比ν0.3。球面与凹槽面的点接触等效刚度计算公式是K (4/3) × E* × sqrt(R*)其中E是等效弹性模量R是综合曲率半径。代入钢材参数E* E / [2×(1-ν²)] ≈ 206000 / [2×(1-0.3²)] ≈ 113186 MPa滚珠与滚道的接触点在凹槽中综合曲率半径R的数量级和滚珠半径相当或者略小取R≈0.5mm的话K ≈ (4/3) × 113186 × sqrt(0.5) ≈ 106700 N/mm这个量级约在1e5 N/mm区间。注意这里有个很重要的细节Adams里的Stiffness单位是力/长度N/mm而很多人填的接触刚度是从网上抄来的1e3甚至1e6差了上百倍。刚度填小了接触像软弹簧滚珠会陷进滚道里仿真结果穿模刚度填大了接触变成刚性墙求解器步长被迫缩小计算极慢还容易出现接触振动。在Adams中用Impact函数建模接触时通常这样设置参数建议取值说明Stiffness与赫兹估算值同量级1e4~1e6 N/mm根据滚珠直径与材料换算不能随意取Force Exponent1.5金属球面接触赫兹理论的经验指数Damping刚度的0.1%~1%太大容易造成接触回弹抖动Penetration Depth0.01~0.05 mm越大接触越“软”取太小容易发散阻尼这块特别容易翻车。我见过有人把Damping填到和Stiffness一个数量级接触一碰上去就被狠狠拽住仿真结果里出现了夸张的反弹尖峰看起来像弹珠而不是钢球。阻尼的本质是碰撞能量的耗散对金属材料接触而言取刚度的千分之一到百分之一就已经足够表现能量损失绝大多数情况下取50~100 N·s/mm这个量级比较稳。这里还要多嘴提醒一句Damping和Penetration Depth是联动的。Adams的Impact接触中阻尼力在穿透深度达到设定的Penetration Depth时才完全生效如果穿透深度填得太小而接触力已经很大阻尼来不及起作用接触就会表现出高频振荡。这也是很多人调了半天接触参数仍然发散的隐藏原因。2. 运动副规划不当系统动不动就过约束我排查到半夜才发现问题2.1 滚珠丝杠的运动学本质一个被忽视的螺旋自由度第二个让90%的人栽跟头的错误是运动副规划。拿最常见的“丝杠转、螺母走”模型来说很多人会顺手搭出这么一套大地与丝杠之间加旋转副螺母与大地之间加移动副然后在丝杠与螺母之间再加一个圆柱副。逻辑上看起来没错丝杠转螺母平移两者之间还得有轴向的相对滑动所以加了圆柱副。但是这一套模型放进Adams里一跑要么提示invalid joint要么数值发飘原因很简单你多加了约束过约束了。要理清楚这个问题得先把滚珠丝杠的运动本质盘明白。滚珠丝杠副的核心运动关系是丝杠绕自身轴线旋转螺母沿丝杠轴线方向平移两者之间在螺旋升角的方向上存在耦合关系——丝杠转一圈螺母往前走一个导程。假如用导程L、丝杠旋转角度φ来描述螺母轴向位移s满足s φ × L / (2π)。这不是一个独立的自由度关系而是螺旋副Screw的约束方程。问题在于很多人不知道Adams里的Screw副有两个隐藏特性第一Screw副必须和一个旋转副或圆柱副配对使用它本身不是独立可用的运动副第二Screw副一旦加入系统会把“旋转导致移动”的自由度耦合关系锁死此时再额外添加移动副或者圆柱副去限制螺母的轴向位置自由度就被重复限制了。正确的运动副规划应该这么做大地与丝杠之间建旋转副允许丝杠绕轴线自由旋转丝杠与螺母之间建Screw副规定导程值让旋转与移动通过螺旋关系耦合螺母与大地之间建移动副限制螺母只能沿丝杠轴向滑动。这样整个系统是1个转动自由度驱动螺母的轴向位移由螺旋副自动推出来每个构件都被约束得恰到好处不存在冗余自由度。2.2 从报错到定位问题的三步排查我怎么判断是过约束还是数值发散这里分享一套我常用的排查链路。当模型跑不动第一反应不要往积分器上甩锅而是先做一个静态的自由度检查。Adams里默认可以在信息窗口里通过Model Verify直接看到机构的自由度数和冗余约束数。如果系统提示有冗余约束Redundancy那大概率是运动副叠加出了问题在求解时会出现数值奇异。排查的第一步是把所有运动副“锁止”逐一排查在Simulation Control里把驱动副外的其他运动副分别停用跑一下静态平衡看看哪种状态下模型能收敛哪种状态报错。如果停用某个运动副之后模型忽然正常了那恭喜你找到了冲突源头。第二步是看报错类型。Adams发散时常见的报错有积分器步长趋近于零、接触力尖峰、Jacobi矩阵奇异。如果报错信息里出现singular或者redundant九成是运动副规划问题如果报错表现为步长持续缩小、但数值没有明确的奇异报错那更像是接触刚度或阻尼参数问题。这两个方向解决路径完全不同如果上来就调求解器反而会越调越乱。第三步也是很多人容易漏掉的是检查支撑轴承处的约束。滚珠丝杠的两端支撑可能采用固定-固定、固定-支承、固定-自由等不同方式支撑端的轴承会产生额外的转动或移动约束。有人建模时既在支撑端加了旋转副又在丝杠端加了轴向定位约束两个约束都限制轴向移动于是过约束就出现了。对支撑端的处理要严格按照轴承的实际自由度释放情况设置不要想当然地“全锁死”。提示排查过约束时在Adams的Joint Browser里把所有运动副列出来逐一标注它消除了哪几个自由度然后统计一下同一自由度被消除两次以上的基本就是过约束嫌疑对象。这个方法虽然原始但非常有效。3. 预紧力与摩擦参数草率处理结果看起来像模像样实际完全不可信3.1 预紧力有两种加进模型的方式关键是要让初始状态受力平衡第三个建模错误不在几何上也不在运动副上而在力参数上。滚珠丝杠为了消除反向间隙、提高轴向刚度实际产品几乎都带预紧。常见的预紧方式有双螺母垫片预紧、两套滚珠错位预紧、增大滚珠直径预紧等等。仿真模型里如果完全忽略预紧出来的结果有一个典型特征反向换向时有明显的空行程轴向刚度很低系统固有频率偏低和实验数据对不上。在Adams里施加预紧力大多数人第一反应是直接在螺母端加一个恒定的轴向力。这个方法能用但不精确——真实预紧不是外力而是通过弹性变形存储在各滚珠接触处的内力。如果你只是施加外力系统在静平衡时还说得通一旦丝杠开始驱动预紧力的方向和传力路径都会发生改变结果失真。更贴近实际的做法有两种。一种是用Bushing力元连接双螺母模型在Bushing的轴向刚度项中设一个初位移相当于把两个螺母“顶开”到预紧状态这时候Bushing产生的轴向力就等于预紧力。另一种做法更推荐在接触参数里通过初始穿透量来反推预紧。前面算过接触刚度大约是1e5 N/mm如果希望预紧力是800N那么接触穿透量的初值可以按δ F / K 800 / 100000 0.008mm来设置。在Impact接触参数里填入这个初始穿透深度Adams会在初始时刻自动计算出对应的法向接触力这就把预紧力的物理机制真正仿真出来了。初始穿透这个功能其实相当好用我建议做滚珠丝杠仿真的人认真研究一下。它的好处是预紧力不是外挂的而是通过真实的接触形变产生丝杠转动时接触状态的变化会带动预紧力动态调整和你实际测量到的丝杠副受力行为一致。3.2 摩擦系数为什么不能照抄普通滑动副以及怎么用效率反推摩擦参数是第三个错误里最隐蔽的一个因为它在绝大多数情况下不会导致发散报错而是让仿真结果错得毫无知觉。我接手过的模型里有人把滚珠丝杠副的摩擦系数填成了0.15仿出来的结果是驱动电机扭矩大得离谱传动效率连50%都不到而实际滚珠丝杠传动效率普遍在90%以上。问题的根源就出在他把“滚珠的滚动摩擦”和“滑动摩擦”混为一谈了。滚动丝杠副是滚动接触摩擦系数通常在0.003~0.01之间远比滑动的0.1~0.2小。仿真时如果把滚动接触的摩擦系数按滑动来填系统等于在滚珠和滚道之间糊了一层“胶水”滚珠滚动困难丝杠自然带不动。这就是为什么很多人仿出来的丝杠效率只有60%还以为是Adams的问题其实是自己的参数偏离物理几十倍。一个非常实用的自检方法是用效率反推。对导程为L的滚珠丝杠电机输入扭矩T螺母输出轴向力F理论关系是T F × L / (2π × η)η是传动效率。反过来如果你在Adams里加了驱动扭矩仿真得到某个轴向力F就可以用上面的公式反算出模型的等价效率η。如果算出来η远小于0.9那基本可以断定摩擦参数偏大或者预紧状态不正确。我看到太多人闷头调仿真从不做这种宏观层面的能量核算结果在错误参数上做无用功。在Adams的接触力设置中预紧力的存在会影响摩擦力的计算。接触法向力越大摩擦力也越大而预紧力会增加法向力。所以带预紧的丝杠模型空载状态下的阻力矩会明显高于无预紧模型这正是真实滚珠丝杠的表现。如果你在仿真中设置了预紧但空载阻力矩几乎为零那就要检查接触摩擦开关是不是没有打开或者摩擦系数设成了零。4. 一个真实可复现的修正案例从报错发散到正常收敛的全过程4.1 原始模型为什么一跑就发散三个问题叠加的典型状态为了把上面三个错误串起来演示完整修正链路我用一个典型的滚珠丝杠进给模型来复盘。模型参数公称直径20mm导程10mm滚珠直径6mm采用固定-支承的支撑方式丝杠由Motion驱动转速600rpm螺母上带1000N的轴向负载。原始模型的做法就是我在开头说的那位朋友的做法CAD模型直接导入所有滚珠建模为实体球丝杠与滚珠之间、滚珠与螺母之间全部用Solid-Solid接触运动副方面丝杠与大地旋转副、螺母与大地移动副、丝杠与螺母之间又加了一个圆柱副摩擦系数统一填0.15预紧力没加。启动仿真后Adams在第一步就出现步长骤降求解器频繁重试千分之几秒的仿真时长就要计算几个小时最终在滚珠与滚道的接触点上出现穿透和发散。逐项分析可以看到这个模型三个错误全占齐了。实体接触模型让每颗滚珠的计算负担极大运动副过约束让Jacobi矩阵接近奇异摩擦系数设成滑动量级让系统阻力剧增。三个问题叠加在一起发散几乎是必然的。4.2 我按顺序做的四处修正每一处的理由和效果修正不是一锅端而是按顺序逐项替换这样才能分辨清楚每一处改动的影响。第一处替换接触策略。把所有实体滚珠的Solid-Solid接触删掉重新建立Point-Segment接触。滚珠简化成六个自由度的小球体在丝杠与螺母之间的螺旋滚道中心线路径上排列滚道简化为接触线段。只保留必要的接触对数原来是二十几对实体接触现在变成二十几个点线接触计算量明显降了一个量级。第二处重新规划运动副。删掉丝杠与螺母之间的多余圆柱副换成Screw螺旋副并正确设置导程10mm。保留大地与丝杠之间的旋转副、螺母与大地之间的移动副。系统自由度检查后冗余约束从原来的多处变成了零。第三处按赫兹估算修正接触参数。对于6mm滚珠和钢质滚道接触刚度按前面的估算取1e5 N/mm量级Force Exponent取1.5Damping取80 N·s/mmPenetration Depth取0.02mm。同时把摩擦系数从0.15改到0.006并在接触里开启库仑摩擦。第四处施加预紧。因为模型是单螺母结构我这里用初始穿透量法在接触参数中设置约0.008mm的初始穿透让系统初始状态就有了约800N的等效预紧力。这样处理之后模型在初始时刻就处于受力平衡状态不会出现启动瞬间的冲击跳变。4.3 修正后的验证结果怎么看曲线才知道模型是可信的修正完成后仿真终于能顺畅跑完但到此还没有结束。模型能不能用要看几个关键验证点第二个验证点是运动学关系。丝杠转速600rpm也就是每秒10转导程10mm理论轴向速度为100mm/s。仿真结果里读取螺母位移斜率应该稳定在100mm/s。如果这个关系不对说明Screw副或者运动副耦合出了问题哪怕模型收敛了结果也是错的。第二个验证点是接触力与预紧的关系。空载运行时各接触点的法向力应当在预紧力对应的初始值附近波动而不会出现某一瞬间归零或者暴涨。如果接触力在跑动过程中大幅波动甚至归零说明初始穿透参数设置不当或者接触阻尼值不合理。第三个验证点是效率核算。在模型中测量电机端的驱动扭矩T再测量螺母输出的轴向力F代入效率和导程的关系式反过来算效率。修正后的模型算出来效率大约0.92~0.94和真实滚珠丝杠的水平吻合。到这里模型才算真正建立起来而不是“仿真不发散就能交差”的状态。第四个验证点也提一下换向冲击。给丝杠施加一个正弦转速信号让螺母来回运动观察反向换向时的力曲线是否平滑连续、有没有因为间隙导致的突变。正确的带预紧模型换向时接触力应当平滑过渡不会出现明显冲击尖峰如果换向时有力值跳变就要检查预紧力是否没有真正参与接触传力而是只当了一个普通外力。最后说一个我在多次调试里总结的小习惯做滚珠丝杠仿真不要一上来就把目标定位在“跑通”上先花时间把接触策略选清楚、运动副理顺、摩擦和预紧参数确认到位这几件基础事做好后面分析结果才值得讨论。尤其是接触刚度和摩擦系数这两个参数直接影响效率、受力、振动特征是整个模型里最值得花心思校准的环节。按照上面的链路排查一次你会发现之前那些“莫名其妙”的发散问题绝大多数在建模阶段就有迹可循。
返回列表