第2章:灵敏度分析入门——灵敏度矩阵的概念、Code V中灵敏度计算设置、单变量灵敏度分析

各位好,欢迎来到第二章。

上一章我们聊了公差分析到底在干什么。说白了,就是回答一个问题:“我的镜头造出来之后,性能还能不能看?”

那怎么回答这个问题呢?你总不能把每个零件都加工一遍再测吧?太贵了。所以我们需要一个工具,能提前告诉你:“哪个参数最要命?”

这个工具,就是灵敏度分析。

2.1 灵敏度矩阵:一张“谁在捣乱”的清单

先问个问题:一个镜头里,有多少个参数会影响最终性能?

你想想看:每个面的曲率半径、厚度、偏心、倾斜、折射率、阿贝数……随便一个10片镜片的系统,轻松上百个参数。

这么多参数,哪个对像质影响最大?哪个几乎没影响?

这时候,灵敏度矩阵就派上用场了。

灵敏度矩阵的本质:

它是一个二维表格。行代表不同的性能指标(比如波前差、畸变、MTF),列代表不同的结构参数(比如半径、厚度、偏心)。

表格里的每个数值,就是“这个参数变化一点点,那个性能会变化多少”。

说白了,就是一张“谁在捣乱”的清单。

数学上,它其实就是一阶偏导数矩阵:

S(i,j) = ∂(Performance_i) / ∂(Parameter_j)

这个值越大,说明这个参数越敏感。我个人的习惯是,拿到一个新设计,第一件事就是跑一遍灵敏度矩阵。不是为了看具体数值,而是为了快速识别出哪些参数是“地雷”。

举个例子,我曾经优化过一个投影镜头,MTF一直上不去。我花了三天调结构,效果甚微。后来跑了一遍灵敏度矩阵,发现有个空气间隔的灵敏度是其他参数的10倍。我直接把这个间隔设为变量重新优化,半天就搞定了。嗯,这就是灵敏度矩阵的价值——帮你找到真正的瓶颈。

2.2 Code V中灵敏度计算设置

好,理论说完了,咱们看看Code V里怎么操作。

Code V的灵敏度分析,主要靠AUT命令。这个命令功能很强大,但咱们先只关注灵敏度部分。

基本语法是这样的:

AUT
MODE SENS
COMP ALL
GO

解释一下:

  • AUT:进入公差分析模式
  • MODE SENS:指定模式为灵敏度分析
  • COMP ALL:对所有参数进行灵敏度计算
  • GO:执行

但实际项目中,我很少直接用COMP ALL。为什么?因为参数太多了,计算时间太长,而且很多参数其实不重要。

我建议的做法是:先手动指定关键参数。

AUT
MODE SENS
COMP S1..S10  ! 只分析第1到第10面的曲率
COMP T1..T10  ! 只分析第1到第10面的厚度
COMP D1..D10  ! 只分析第1到第10面的偏心
GO

这样计算速度快,结果也更有针对性。

小技巧:

在COMP命令后面,你可以用?查看所有可用的参数类型。比如COMP ?会列出所有支持的参数缩写。我刚开始用的时候,经常记不住这些缩写,这个命令帮了大忙。

另外,Code V还支持按公差类型分组计算灵敏度。比如:

AUT
MODE SENS
COMP MANUFACTURING  ! 只分析制造公差
GO

这个MANUFACTURING是Code V预定义的一组公差,包括半径、厚度、偏心、倾斜等。如果你不想自己一个个指定,用这个很方便。

2.3 单变量灵敏度分析:逐个排查

灵敏度矩阵是全局视角,但有时候我们需要盯着一个参数看。

比如,你发现某个空气间隔的灵敏度很高。你想知道:“这个间隔变化0.1mm,MTF会掉多少?”

这时候就需要单变量灵敏度分析。

在Code V里,可以用SENS命令来实现:

SENS
M 1 0.1  ! 让第1个面的厚度变化0.1mm
GO

这个命令会告诉你:当这个参数变化0.1mm时,所有性能指标的变化量。

我个人更喜欢用TOR命令来做单变量分析,因为它可以同时显示变化前后的性能对比:

TOR
M 1 0.1
GO

输出结果会包含三列:原始值、变化后的值、变化量。这样一目了然。

注意:

单变量分析时,变化量不要设得太大。我见过有人设0.5mm甚至1mm,结果系统直接报错,或者结果完全失真。

为什么?因为灵敏度是局部线性近似。变化量太大,非线性效应就出来了,结果就不准了。

我一般设0.01mm或0.05mm,对于折射率设0.001。这样既能看到趋势,又不会失真。

2.4 灵敏度分析的输出解读

跑完灵敏度分析,Code V会生成一个表格。咱们来看看怎么读。

典型的输出格式如下:

参数 标称值 变化量 波前差变化 MTF变化 灵敏度系数
S1(曲率) 50.000 +0.010 0.023 λ -0.015 2.30
T2(厚度) 5.000 +0.010 0.008 λ -0.005 0.80
D3(偏心) 0.000 +0.010 0.045 λ -0.032 4.50

看到这个表格,你应该关注什么?

  • 灵敏度系数最大的参数:比如这里的D3(偏心),灵敏度系数4.50,是T2的5倍多。这说明偏心控制要非常严格。
  • MTF变化量:如果某个参数变化0.01mm,MTF就掉了0.03以上,那这个参数就是高风险参数。
  • 波前差变化:这个指标对成像质量很敏感,一般要求变化量小于0.05λ。

我曾经遇到过一个案例,客户要求MTF在50 lp/mm处大于0.3。我跑完灵敏度分析,发现有个镜片的偏心灵敏度特别高。我建议客户把偏心公差从±0.05mm收紧到±0.02mm。客户一开始觉得没必要,后来试产了一批,果然只有收紧的那批合格。嗯,从那以后,客户对我的灵敏度分析报告就特别信任了。

2.5 本章知识体系

为了让大家更直观地理解本章的内容结构,我画了一张图:

灵敏度分析知识体系 灵敏度分析 灵敏度矩阵 Code V计算设置 单变量灵敏度分析 一阶偏导数 参数-性能映射 识别关键参数 AUT命令 MODE SENS COMP参数选择 SENS命令 TOR命令 变化量设置 核心目标:快速识别高风险参数,指导公差分配

这张图把本章的三个核心内容串起来了。你可以看到,灵敏度矩阵是全局视角,Code V设置是操作工具,单变量分析是局部深挖。三者结合,才能做好公差分析的第一步。

2.6 避坑指南

最后,分享几个我踩过的坑:

  • 不要只看一个指标:有些人只看MTF灵敏度,忽略了波前差。结果MTF看起来还行,但波前差已经超标了。我建议至少看MTF、波前差、畸变三个指标。
  • 注意单位:Code V里,曲率半径的单位是mm,偏心的单位也是mm,但倾斜的单位是度。别搞混了。我曾经因为单位搞错,分析结果完全不对,浪费了半天时间。
  • 保存原始数据:跑完灵敏度分析,记得用OUT命令把结果保存到文件。不然下次打开软件,数据就没了。
OUT SENSITIVITY.TXT  ! 保存灵敏度分析结果到文件