💡 读者提问:“我们上过一套优化软件,跑出来的方案确实轻,但老师傅一看就说不能做。他也说不上具体哪儿不对,就是不敢签字。到底是软件不行,还是我们不会用?”
一、先把现象看清楚
同一道题:一台摆线针轮减速器,输出扭矩、外径上限、寿命下限都给定,问最省料的方案是什么。中间只有一个数在变 —— 你能接受的最大接触应力。

▲ 图1:左边每一个小方块都是一个真算过的设计(分布圆 × 齿宽),右边是"这道题最多能减多少重量"。只有许用应力这一个数在动
许用应力放到 1600 MPa 时,最优方案比基准轻 90%,星号紧贴着左边那条紫色虚线。收到 1200,剩 73%。收到 1000,剩 39%。收到 900 —— −1%,一克也减不掉,反而还重了一点。
题没变,几何没变,寿命要求没变。变的只是"你能接受多大的接触应力"这一句话。
那么老师傅到底看出了什么?看看那条紫色虚线 —— 减重 90% 的那个方案,正贴在上面。
二、为什么优化一定会走到墙上
优化器不会告诉你它顶到了墙上,它只会把墙上的那个点报成最优解。
先讲个不用懂力学的版本。让你收拾行李箱,目标是越轻越好。如果没人告诉你"必须带够三天换洗衣服",那么最优解就是空箱子。程序没算错,是题目里少了那句话。
回到摆线盘。要减重有两条路:往径向缩(把针齿分布圆做小)或往轴向缩(把齿做窄)。径向划算得多 —— 盘的截面积随半径走平方,而接触力只随半径走一次方。所以优化器一定会往径向缩。
那它缩到哪儿停?模型自己只知道两条底线:齿廓不能自己跟自己相交,相邻的针齿不能打架。图1 里那条紫色虚线就是这两条。
但这两条说的是"画得出来",不是"扛得住"。于是最优解必然停在"还画得出来"的最后一格上。我们真的让它这么跑过一次:减重 89%,峰值接触应力 1649 MPa。那不是优化器写坏了 —— 是这道题里没有任何一句话拦得住它。
所以在我们的工具里,许用接触应力、寿命下限、可用齿宽三个数是必填的,没有缺省值。不填就不算,直接报错。理由很简单:可行域的边界必须由你的许用值决定,不能由我们替你假设。
填上之后,还有一个更麻烦的问题:就算最省料的那个点没超应力,它可能仍然贴着几何墙。

▲ 图2:一次点击算完十个减速比。紫色那几根的"最省料"是靠顶墙顶出来的
质量最小的是减速比 14(质量 28363)—— 但它同时顶着两道几何墙。它之所以最省料,是因为顶到了齿廓即将自交、针齿即将互相干涉的位置,而这个模型对那附近的结构应力一无所知:柱销孔韧带、齿根弯曲、曲柄轴承、壳体柔度,一条都不算。
真正站得住的是减速比 13(质量 30878),只贵 8.9%,而它只被许用接触应力绑定 —— 也就是说,在这个点上模型仍然是限制因素,结论在模型口径内成立。
所以工具同时报两个最优,并且直接在页面上写清楚差别。只报前者,等于把一个几何极限点包装成设计建议;只报后者,又等于替你把边界上的可能性删掉了。更要紧的是:绑定的若是几何约束,工具会当场说"本模型已经不是限制因素了" —— 这句话是每次算完实测出来的,不是写死的免责声明。
三、凭什么相信这个结果没算错
先说一件让我们后背发凉的事:第一版根本没有"许用接触应力"这个输入框。
当时只给了几何、外径和寿命三条约束,跑出来一张很漂亮的图,减重 89%,曲线光滑,配色也好看。差一点就那么发出去了。让我们停下来的是旁边一个不起眼的输出:峰值接触应力 1649 MPa。
一个"最优解"能同时长得好看和完全不能用,这件事本身比任何算法细节都值得写出来。
第二件事:疲劳损伤对时间步长收敛得非常慢。我们本来准备用默认步长直接出结论,做完收敛测试才发现问题:
| 60 点(我们的缺省) | ||
4% 听着不多。但寿命下限正是这道题的硬约束之一 —— 一个不声明的 4%,会安安静静地把可行域的边界挪一格,而页面上什么异常都不会显示。
所以我们的做法不是在文档里写一句"已收敛",而是每次请求都用 2 倍步长把最优点重算一遍,把两个寿命和它们的差一起显示在页面上。默认工况下这个差是 3.58% —— 每次都是当场量的,不是标称值。嫌大就把步数调高再算一次,工具不拦你。
另外还有一条启动时的强制自检,不通过服务直接拒绝启动(下一节解释它验的是什么):算出来的疲劳损伤,用"快算法"和用"笨办法"必须一致 —— 实测两者相对偏差在 10⁻¹⁵ 量级,也就是小数点后第十五位。
四、顺带:为什么它能一次算完十个减速比
图2 那十根柱子,每一根背后都是一整条分布圆扫描,每个设计点都要走完"接触力时程 → 赫兹应力 → 雨流计数 → 累积损伤"。按常规做法,齿宽再扫二十档,计算量就要再乘二十。
但齿宽这一维其实是免费的。原因是两句话:齿宽只以 1/√b 的形式进入接触应力;而雨流计数只关心应力时程里峰谷的先后顺序 —— 整条曲线乘一个正数,顺序一点不变。
所以一条时程只数一次雨流,扫整列齿宽时只要把每个循环的幅值和均值各乘 1/√b。顺带还捡到两个好处:应力约束因此有了闭式解(b ≥ (σ₁/σ_max)²,直接算,不用搜),寿命约束是单调的(二分几步就到)。
上一节那条"快算法必须等于笨办法"的自检,验的就是这条性质。它要是错了,曲线照画、颜色照给,只是每个数都不对,而且不会有任何报错 —— 这种错误比崩溃危险得多,所以值得每次启动都验一遍。
五、打开就能填你自己的需求
输出扭矩、转速、外径上限、寿命下限、许用接触应力、可用齿宽、材料 S-N、载荷谱 —— 全部可改,点一下重算,十个减速比的可行域和推荐点一起出来。

cycloidgear.com/inverse.html
▲ 图3:不用注册、不用安装 · 打开即是一份真实结果
边界写在前面:这个模型算的是理想共轭齿廓 —— 齿廓完美、无修形、无间隙、各接触点刚度相同。而摆线针轮必须修形才装得进去,真机永远不在这个状态。同一台现役机实测对比:本站模型给 174 N / 约 20 齿参与承载,含真实修形与公差的工程校核引擎给 270 N / 7 齿 —— 峰值差 55%。
所以它的定位是筛查与选型的起点:先用它把几百个候选缩到两三个,再拿去做真正的校核。这里给的是搜索起点,不是签字依据。
欢迎做减速器选型、结构轻量化与疲劳校核的工程师朋友在评论区交流。手上有实际的需求参数或许用值?发过来,我们免费跑一版 ——对不上的地方,我们会直接告诉你对不上。
点赞关注,第一时间获取工具更新
夜雨聆风