4. 蒙特卡洛模拟:从概率角度看镜头良率

公差分析做到一定深度,你会发现一个现实:最坏情况组合几乎不会发生。把所有公差都推到极限,然后说“这镜头废了”,其实有点吓唬自己。

真正决定镜头能不能量产、良率有多高的,是统计公差。而蒙特卡洛模拟,就是做这件事最直接的工具。

我个人习惯把蒙特卡洛叫做“掷骰子模拟”。你想想看,每个镜片的厚度、曲率、偏心,在加工时都是随机波动的。蒙特卡洛就是让计算机替我们掷几万次骰子,看看最终镜头性能的分布长什么样。

4.1 蒙特卡洛方法原理

说白了,蒙特卡洛的核心思想就三步:

  1. 定义输入变量的概率分布——每个公差服从什么分布?正态?均匀?
  2. 随机抽样——从这些分布里抽取一组公差值,算一次镜头性能。
  3. 重复统计——抽几千上万次,统计性能的分布,算出良率。

我在项目中遇到过一件事:一个变焦镜头,用最坏情况分析法算出来,MTF下降0.15,怎么看都不合格。但用蒙特卡洛跑了一万次,发现90%以上的样本MTF下降都在0.05以内。后来跟加工厂确认,他们的工艺能力确实比公差表上写的要好。所以,蒙特卡洛能帮你“挤”出设计余量。

核心区别:最坏情况分析告诉你“最差能差到哪”,蒙特卡洛告诉你“大概率会差到哪”。

Code V里默认假设每个公差服从正态分布,标准差通常是公差范围的1/3。你也可以改成均匀分布或自定义分布。我个人建议:对于注塑镜片,用正态分布更贴近实际;对于金属件或装配偏差,均匀分布有时更保守。

4.2 Code V中蒙特卡洛设置

在Code V里跑蒙特卡洛,主要用MONTECARLO命令。我一般这么操作:

MONTECARLO
  TRIALS 5000
  DISTRIBUTION NORMAL
  COMPENSATORS 1 2 3
  SAVE ALL
  GO

解释一下几个关键参数:

参数 说明 我的建议
TRIALS 模拟次数 至少2000次,精度要求高时用5000-10000次
DISTRIBUTION 公差分布类型 NORMAL(正态)最常用,UNIFORM用于保守评估
COMPENSATORS 装配时可调整的补偿量 比如后焦调整、镜片倾斜调整,按实际工艺填
SAVE ALL 保存每次模拟的详细结果 建议开启,方便后续分析异常样本

小技巧:第一次跑可以先设500次试一下,看看收敛情况。如果MTF均值已经稳定,再加大次数。别一上来就跑一万次,万一设置错了,浪费时间。

还有一个容易被忽略的设置——随机种子。Code V默认每次启动时种子不同,所以两次模拟结果会略有差异。如果你需要复现结果,可以手动固定种子:

MONTECARLO
  SEED 12345
  ...

嗯,这里要注意:补偿器(COMPENSATORS)的设置直接影响模拟结果。我曾经帮一个客户看项目,他们跑出来的良率只有30%,我一看,补偿器只设了后焦。实际上他们的装配工艺里还有镜片倾斜调整。加上之后,良率直接跳到85%。所以,补偿器一定要跟实际工艺对齐。

4.3 模拟结果统计与直方图解读

跑完蒙特卡洛,Code V会生成一堆数据。我最关注三个东西:

  • 均值(Mean)——性能的期望值,如果均值已经低于规格线,那设计本身就有问题。
  • 标准差(Sigma)——性能的波动幅度,越小说明工艺稳健性越好。
  • 良率(Yield)——落在规格范围内的样本比例,这才是老板关心的数字。

Code V会输出一个直方图,我拿一个实际项目的结果举个例子:

MTF at 30 lp/mm, Field 1
  Mean: 0.452
  Sigma: 0.023
  Yield (>=0.40): 98.7%
  Worst Case: 0.381

看到这个结果,我的第一反应是:良率98.7%,不错,但最坏情况0.381低于规格0.40。这意味着有1.3%的镜头会不合格。如果年产量100万颗,那就是1.3万颗废品,成本不低。

直方图怎么看?我一般三步走:

  1. 看分布形状——是不是正态?有没有双峰?双峰通常意味着某个公差项在“捣乱”。
  2. 看均值位置——均值离规格线越远,余量越大。
  3. 看尾部——尾部拖得越长,极端不合格品越多。

避坑指南:我曾经遇到一个项目,直方图看起来完美,正态分布,均值离规格线很远。但良率只有92%。后来发现,有两个视场的性能是负相关的——中心好了,边缘就差。蒙特卡洛模拟的是整体系统,不能只看单一视场。一定要检查所有关键视场和波长。

下面这张图是我自己总结的蒙特卡洛分析流程,帮你理清思路:

蒙特卡洛模拟分析流程 定义公差与分布 设置补偿器 执行蒙特卡洛模拟 统计均值/标准差/良率 直方图解读与决策 关键检查点 • 公差范围是否与工艺匹配? • 分布类型选择是否合理? • 补偿器是否覆盖实际 装配调整项? • 模拟次数是否足够? • 均值是否远离规格线? • 直方图有无双峰或 长尾异常? • 所有关键视场/波长 是否都检查了? • 良率目标是否达成?

最后说一句:蒙特卡洛的结果不是终点,而是起点。如果良率不够,你需要回到灵敏度分析,找出贡献最大的公差项,然后收紧它,或者改设计。如果良率远超目标,可以考虑适当放松一些成本高的公差,降本增效。

我个人习惯在项目评审时,同时展示最坏情况分析和蒙特卡洛结果。最坏情况给研发看,蒙特卡洛给生产和质量看。两边都满意,项目才能顺利推进。