9512.net
甜梦文库
当前位置:首页 >> >>

【ZEMAX光学设计软件操作说明详解】2 下



运算操作数(SUMM,OSUM,DIFF,PROD,DIVI,SQRT)连同参数 操作数(CVGT,CVLT,CTGT,CTLT, 等等)一起可以用来定义十分普 通而又复杂的优化操作数,如在“复合操作数的定义”一节中论述的一 样,这些将在本章后面部分可以见到。 因为参数之间差别是空间的,如有效焦距(几十个毫米或者更多)和 RMS 斑点尺寸(微米),所以对于一些以镜头长度单位测量的量加上一 个为1 的权重通常是足够的。然而,带有这个权重的有效焦距的残留值 不可能为零。提高权重可以使得到的系统的焦距更接近于要求的有效焦 距。在定义ETGT(边缘厚度大于)操作数时,这种影响是显而易见的。 通常,一个目标值为零的ETGT 将产生一个刚好略小于零的值。与提高权

重相比,规定一个值为.1 或者一些类似数字的目标值更加简单有效。 在改变操作数列表之后,可以通过选择工具,更新来更新每个操作数 的当前值。这对于通过核对来了解每个操作数的值是多少,哪个操作数 对评价函数有最大的贡献,是十分有用的。贡献值的百分数定义如下:

这里下标j 表明所有操作数的总和。 这个评价函数将被自动和镜头文件一起被保存。

边界操作数的理解
边界操作数,如MNCT、CTGT、DIMX 和其他一些,运行起来与特殊目标 值的操作数,如TRAR 和TEAY,稍微有些不一样。当你给一个参数规定一 个边界时,你将指定一个目标值作为边界的定义。 例如,要保持表面5 的最小中心厚度为10mm,你可以使用一个普通的 命令,如CTGT 5 10(这里5 在Int1 栏中,10 在目标值栏中)。 如果你更新评价函数,然后观察那个操作数的“数值”栏,这个数值 会有两种可能情况:1) 如果违反了边界条件,那是指中心厚度小于10, 那么这个厚度的实际值将被显示;2) 如果没违反边界条件,那是指中心 厚度大于10,那么数值10 将被显示。 这个规则十分简单:如果违反了边界条件,则显示实际值;如果没违 反边界条件,其数值将被设成目标值,因此被优化法则略过。如果在优 化过程中违反了边界条件,那么这个数值将自动被更新,而且优化法则 将尽力纠正这个违反边界条件的参数。 那些限制某一范围内的表面的操作数稍微复杂一些。这些多个表面操 作数将得到一个表征在指定表面范围内所有被违反的边界条件的总体的

影响。例如,操作数MNCT 1 10 将限定表面1 到表面10的表面的最小中 心厚度。如果目标值为3.0,这规定了边界,那么操作数的值与目标值之 差是在表面1和表面10之间的中心厚度小于3.0的所有表面的中心厚度与 3.0 之差值的总和。如果在指定范围内中心厚度小于3.0 的表面只有一 个,比如说其中心厚度为2.5,则操作数的值为2.5。如果增加另一个中 心厚度小于3.0 的表面,比如说其中心厚度为2.2,那么这个操作数的值 为1.7(2.5 减去.8,.8 是3.8 减去2.2)。操作数的目标值和结果数值 之间的总的差值为3.0-1.7 或者1.3。1.3 的差值是由第一面的违反值 0.5 和第二面的违反值0.8 得到的。 如果这些边界操作数的值的计算看起来很乱,不要着急,ZEMAX将为你 完成所有的计算。你要做的所有的事是指定边界类型(如MNCT 和MNET)、 边界范围(表面1 到表面10,或者其他)和要求值(3mm 或者其他)。 如果所有的边界约束都符合,则操作数的值等于目标值,否则操作数值 与目标值不同,评价函数值将增大。增加的评价函数将引起优化法则去 寻找该操作数贡献值的减少方法。 如果边界操作数看起来没有工作,那么需要去检查几件事情: 1) 确保你定义的变量在边界操作数中有一定影响。一个常见的错误是 定义了一个操作数MNCT,而在指定的表面范围内有一些“固定”厚度。 如果这个厚度违反了边界条件,而且它不是变量,那么ZEMAX 不能修改 它。操作数不能忽略被违反的且固定的边界条件。 2) 如果有少量残留误差,可试着提高边界值。例如,假设MNCT使用的 目标值为0.0,而它的结果为一个很小的数值(如-.001),这个问题不 是这个操作数没作用,这仅仅是残留误差太小了,明显地提高了评价函 数值。一般来说,将目标值提高到0.1 或者其他数值,要比提高权重更 好。提高权重仅只能导致一个更小的违反值,而不能符合边界条件。 3) 核对一下,看看是否有一个对评价函数来说是合理的贡献值。

你可以很容易在贡献值百分数一栏中找到它。通过贡献值百分数栏的 浏览,你可以核查一下有问题的操作数对于总的评价函数是否有足够的 影响。如果没有,可以提高权重,或者参见前段关于改变目标值的建议。 理解边界操作数对于掌握ZEMAX 优化来说是至关重要的一部分,如果 你有一定的实践经验,你将会发现它们提供了极好的控制性和机动性。

MTF 操作数的使用
这些操作数仅支持ZEMAX 的XE 和EE 版本的 MTF 操作数,如MTFT,MTFS,和MTFA,提供了直接优化衍射MTF 的功 能。这是一个十分强大的功能,然而,使用MTF 操作数需要留心一下使 用者的部分。 对于那些不是接近于衍射极限的系统,提供了相当的几何MTF操作数: GMTT,GMTS,和GMTA。这些操作数代替衍射操作数被用在那些像差大于 约2-5 个波长的系统。 MTF 操作数可正确地计算出像由分析,衍射菜单选项得到的图形一样 的完整的衍射或几何MTF 值。因此,那些MTF 曲线图中产生非法数据(由 于在光瞳有太多的OPD,详细内容可参见“分析”一章)的系统在优化过 程中也将产生没有意义的数据。例如,优化一个从平行平板平面开始的 镜头的MTF 是不合实际的,因为对这样的系统通常不能正确计算MTF。同 样,MTF 优化与RMS 斑点半径或者RMS波前差比起来是相当慢的,通常要 慢5 到50 倍。注意,如果你对于相同的视场和波长数据同时使用MTFT 和 MTFS 操作数,应该将它们放在编辑界面的相邻两行中;否则MTF 将计算 两次。如果采样密度相对于MTF 的精确计算来说太低了,则这个MTF 操 作数将得到零 值,而不是一个无效的数字。

在更新评价函数编辑界面的显示内容,进入和退出优化对话框时,执 行的速度很明显是很慢的。在一些评价函数被修改的时候,如果已输入 了几个MTF 操作数,ZEMAX 将花几分钟在慢速计算上来更新屏幕。 一个好的方法是使用RMS 波前差交替地设计你的系统。通常来讲,一 个低RMS 波前差的系统将有一个合理的MTF 结果。在设计十分接近最后 形式之后,再试着选择到MTF 优化来“提高”系统。 在如果任何MTF 操作数之前将所有的默认评价函数全部删去也是一个 好的注意,当然那些需要的边界约束除外。 MTF 操作数使用一些操作数数据栏,如Int1,Int2,和Hx,其用法与 大多数操作数不一样。Int1 栏确定要使用的采样密度。如果其值为1, 则说明使用32*32 的网格,2 则为64*64 网格,等等。使用可以正确计 算数据的最小的网格尺寸;详细内容可再参见“分析”一章。 Int2 栏和大多数操作数的一样,是选择波长。然而输入一个零值用来 指明计算多色光。在这种情况下,计算加权波长的多色光MTF值。显而易 见,这要比单色光MTF 计算慢。 Hx 栏用来指定视场位置,它必须是1 和定义的视场数之间的整数。 Hy 是以周期每毫米表示的空间频率,与镜头系统单位无关。可以输入 任意值,如果这个值超过截止频率,操作数将得到0。这个值不必是某一 个值的整数倍;就和MTF 数据图一样,将使用一个适合邻近数据点的立 方条来计算MTF 的精确值。 目标值和权重栏和其他操作数一样使用。当然,如果目标值被设为1.0, 空间频率为非零值,那么这个操作数的值将永远不可能达到这个目标值。

优化的执行
为了开始优化,可从主菜单栏中选择工具,优化。将显示带有如下选 项的优化控制对话框。

优化选项

选择自动将使优化一直运行直到不能再取得任何进展。其他选项将 执行指定数目的循环。自动模式被强烈推荐。运行一定数目的循环所要

的时间由于下列条件的变化而变得非常大,它们是:变量的数目;系统 的复杂性;求解数的数目;操作数的数目;当然还有计算速度。 如果一个循环花的时间太长了,或者它看起来好象中止了,或者你认 为这个设计方案不能取得充分的进展,可以点击终止来结束优化的运行。 当优化开始时,ZEMAX 首先更新系统的评价函数。如果有一些操作数 不能被计算,则优化不能开始,并且显示一条错误信息。如果操作数需 要追迹那些漏过一些表面或者在一折射边界发生了全反射的光线,那么 这些操作数不能被计算。如果这样的错误信息显示了,通常起始镜头规 定是错误的,或者对象光线定义错了(这不会发生在默认评价函数中, 但可能发生在用户自定义光线中)。如果评价函数在优化过程中不能被 求值,则ZEMAX 将自动将之恢复)。所以初始系统必须是计算所有在评 价函数中操作数。

复合操作数的定义
虽然由一些预先确定的操作数组合而成的默认评价函数可以很好地适 合于多数光学设计,但有时也需要加一些特殊的约束到评价函数中。 ZEMAX 允许你在简单的模块之外定义你自己的操作数,这比定义大量特 殊的操作数要好。ZEMAX 承认非常全面的操作数定义。 建立这些操作数有两个诀窍。首先,使用某些权重为零的操作数来定 义你想要的参数,其次,使用运行的操作数来定义它们之间的关系。 例如,假设你要求表面3 的厚度和表面4 的厚度之和为10。有一个操 作数可以做到这一点,TTHI。其命令结构如下:

然而,注意到有另一个方法可以计算同样的事情,仅作参考:

操作数1 使用中心厚度值(CTVA)命令来摘录表面3 的厚度值。 同样,操作数2 用来摘录表面4 的厚度值。两个操作数的零权重可确 保优化法则忽略这个约束;这仅仅被用作是中间步骤。现在,操作数3 计 算两个操作数(编号1 和编号2)之和。其结果是表面3 和表面4 的厚度 之和,这是操作数3 的结果,它有一个非零的权重。优化法则将尽力使 和数为10。 如果单个操作数TTHI 可以做同样的事情,为什么要转到这个麻烦的三 个步骤的过程。其原因是这个命令可以被扩展来利用非常普通的操作数。 例如,假设你想要使表面5 的曲率半径是以表面8 的球面顶点为中心的。 考虑一下以下的命令,看看你能否理解它是如何做的:

这个CVVA命令摘录了表面5 的曲率,这个曲率是我们要控制的。 TTHI 5 7 计算了从第5 面到第8 面的距离(注意,要得到到第8 面的 距离,我们只加到第7 面,因为第8 面的厚度给出了到第9 面的距离)。 由于表面的曲率为其半径的倒数,所以这个曲率和这个距离的乘积必须 为1;因此,操作数3 的目标值为1。操作数3 也是这个序列中唯一加了

权的操作数。 现在考虑必要条件,表面5 的厚度必须大于表面4 的曲率半径的两倍 加上表面2 的圆锥常数(这是没有意义的,仅是这个方法中机动性的说 明):

操作数1 摘录了表面5 的(中心)厚度。操作数2 摘录了表面4的曲率。 操作数3 设置了一个值为2 的常数,操作数4 把值2 除以曲率(产生曲 率半径的两倍)。COVA 摘录了圆锥常数,SUMM 把操作数5 和操作数4 加 起来。操作数7 得到厚度和半径两倍加上圆锥常数之间的差值。由于我 们想要前者超过后者,我们设定了大于约束条件的操作数;这是唯一一 个有非零权重的操作数。

玻璃选择的优化
玻璃的优化是手动的,这于其他数据稍有不同。因为在玻璃图中不存 在一些连续统一的玻璃,所以直接优化可选择的玻璃是一个困难的、不

可预知的过程。有两种方法可以处理这个问题:使用模拟玻璃或者使用 输入玻璃。输入玻璃通常更优越,但这仅适用于ZEMAX 的XE 和EE 版本。

使用模拟玻璃
模拟玻璃方法是使用一些简单的参数将离散分布的玻璃理想化,然后 在强制使这些参数值或者计算出的折射率类似于可用的玻璃的同时优化 这些参数。这就是“模拟”玻璃的方法。模拟玻璃将在“玻璃库的使用” 一章中详细介绍。模拟玻璃方法的一个缺点是优化的参数和最后的折射 率值可能不会和实际存在的玻璃相对应;另一个缺点是模拟玻璃仅在可 见光谱中才可认为是正确的。这一章中介绍的常规优化使用这个方法。 优化玻璃需要几个步骤。首先,在镜头数据编辑界面中使用玻璃求解 将适当的玻璃改为“模拟”玻璃。有关模拟玻璃的信息,可参见“玻璃 库的使用”一章。当你将玻璃从“固定”变为“模拟”,ZEMAX将给折射 率、阿贝常数和部分相对色散做出一个合适的猜测。如果你想变玻璃的 话,你只能改变这些数据。可以通过点击在这三个数据条目后的“可变” 框来将它们变为变量。 在玻璃栏上快捷键Ctrl-Z 也可以工作;它可以使折射率、阿贝常数和 部分色散成为变量。现在可以通过常用的方法使用优化特性来优化模拟 玻璃数据值。 不加约束的玻璃优化将会导致选择一种高折射率的材料。这是因为为 了得到相同的光学效果,一个带有高折射率(折射超出边界条件很多) 的表面要求的曲率比低折射率的表面要小。表面的曲率越小,它导致的 像差就越小。然而不幸地是,高折射率材料是昂贵的,重的,难以加工 的,而且是易碎的,易被划伤的,或者易受污点和划痕影响。 而且,非常高的折射率的玻璃往往是不存在的;几乎没有Nd 约大于1.9 的可用玻璃(对于可见光谱而言)。Vd 值也被限定在大约20-80之间。

因此这是在优化过程中将Nd 和Vd 限制在某一合理范围内的根本原因。 部分色散偏差也必须被限制在一定的范围之内。 有两种限制Nd、Vd 和F g P ,?? 值的方法。最简单的方法是在操作数 列表的某处增加RGLA 操作数。操作数RGLA 测量了模拟玻璃到在当前载 入玻璃目录中与之最接近的玻璃在玻璃图上的折射率、阿贝常数和部分 色散的“距离”。例如,假设你正在优化折射率和阿贝常数,而且你已 经指定使用Schott 和Hoya 目录(这些在通用数据窗口中说明),操作 数RGLA 将计算到这两个目录中每种玻璃之间的“距离”。 如果最小的“距离”小于在操作数RGLA 中指定的目标值,那么符合边 界条件,操作数的值等于目标值。如果最接近的玻璃与之的“距离”远 大于目标值,则RGLA 的操作数值为实际“距离”。“距离”是通过将阿 贝常数乘以0.01 以及将相对色散偏差乘以10 来定义的。 任意两种玻璃的“距离”给出如下:

使用RGLA 的最好的方法是定义一个覆盖所有你正在优化的表面的范 围。其目标值开始时为0.05。由于在玻璃图上不同玻璃的间隔通常都小 于0.05,所以这将允许玻璃在整个玻璃图上任意移动。 优化结束后,将目标值提高到0.02 左右,重新优化。这将促使优化系 统在实际玻璃附近选择合理的折射率和阿贝常数。约束折射率和阿贝常 数的另一个方法是使用MNIN、MXIN、MNAB、和MXAB 控制。 这些操作数是最小和最大的折射率和阿贝常数的记忆体,它们在前面 的表格中已被说明。这些操作数可以将优化限制在玻璃图上的一个矩形 范围内。一起使用RGLA 和MXIN 是十分有效的,例如,可以限制在折射 率小于某一个值的现有的玻璃范围内选择玻璃。 在某些时候,你可能想将你的变量折射率转换成一种实际玻璃的折射

率。通常在优化的Nd 和Vd 值与当前玻璃目录中的实际玻璃的值没有一 种理想的匹配。然而,ZEMAX 将搜索这个目录,使用类似于前面的RGLA 定 义的最小平方数的准则来找到一种“最匹配”的玻璃(部分色散项被忽 略)。目录中与变量折射率参数相差最小的玻璃就是选中的玻璃。这种 玻璃也将在“表面数据概述”中汇报。这个显示的折射率数据是从Nd 和 阿贝常数计算得到的数据,而不是最匹配玻璃的数据。在将模拟玻璃转 换成实际玻璃以后,通常需要另一次优化运行。对于那些具有灵敏的色 差平衡的系统,仅仅因为模拟玻璃的色散和实际玻璃的色散是不可能一 样的,所以不可能使用变量玻璃来找到最佳玻璃。

输入玻璃的使用
输入玻璃的方法直接改变玻璃类型,然后重新优化来看看新的玻璃是 否产生一个更好的结果。可以通过简单地改变玻璃类型,然后重新优化 来手动使用这种方法,或者使用在下一章“全局优化”中介绍的全局优 化技巧来自动控制这个过程。全局优化方法实际玻璃目录的材料,在这 层意义上它是比较优越的方法。 关于这个优化玻璃的选择方法的说明可参见下一章“全局优化”中的 “优化玻璃的选择”的说明。 变焦和多重结构镜头的优化变焦镜头的优化和常规的单个结构镜头的 优化事实上是一样。详细内容可参见“多重结构”一章。

特殊数据的优化
这段说明仅与使用ZEMAX-EE 的用户有关 ZEMAX-EE 支持的某一些表面,如泽尼克表面,泽尼克相位表面,扩展 多项式表面,和二元光学表面,使用了特殊数据值。这些数据可以被编

辑,可以从ASCII 码文件中载入,以及可以用作变量来优化。 关于编辑界面的详细内容可参见“编辑菜单”一章。 要使一个特殊数据值成为一个变量,可打开特殊数据编辑界面。 当特殊数据编辑界面显示以后,把光标移到你要优化的值所在的行和 列,然后按Ctrl-Z(在主界面中使用同样的命令来设置变量)。现在当 运行优化程序时,这个变量将被优化。 使用特殊数据值时也有几个边界约束。XDVA、XDGT、和XDLT分别是指 特殊数据值、特殊数据值大于、和特殊数据值小于。显示的电子表格中 Int1 栏指出了使用操作数的表面的编号,Int2 指定了使用哪个特殊数 据值。

非连续群体中对象的优化
在非连续群体中优化变量在根本上与其他数值参数的优化没有什么不 同。变量的设置使用和镜头数据编辑界面中的参数同样的方法。 其困难之处是优化非连续对象的方法是一种不可预知的方法,以这种 方法光线可能(或者可能不会)通过非连续群体。对于非连续对象,如 棱镜,棱镜在位置和尺寸上的微小的改变不会明显地影响光路。 然而,对于一些对象,如光管,对象定义的微小改变可以明显地影响 光路。如果对象的位置和角度稍微有点改变,那些曾经通过该对象的光 线可能会完全避过该对象。在输出计算中这通常会引起一些错误,优化 将会执行地很差,或者根本就不能执行。 对于这些系统,使用全局优化法则将使优化有效地执行下去,这种法 则不是特别依赖于输出计算。 一些非连续系统的另一个问题是出瞳可能不是入瞳的合理像。由于这 个缘故,如果系统是一个非成像系统,它不能在出瞳上形成入瞳的像, 将使用矩阵法,而不是用高斯积分法。

使用IMAE 操作数的优化
IMAE 操作数通过发射大量光线进入入瞳,计算通过所有的表面口径到 达其他表面的那部分光线,来估计光学系统的效率。如果仅使用硬边缘 的表面口径,如圆形口径,使用这个操作数的优化可能不会顺利地执行 下去。这是因为ZEMAX 在每个变量值上作一个非常微小的微分变化,然 后计算这个操作数值的有限变化,来估计这个操作数值的输出。对于IMAE 操作数,如果没有光线足够靠近口径来从渐晕变成无渐晕或者 vice-a-versa,那么变量值的微小变化可能不会改变这个效率估计值。 其解决方法是在一个用户定义表面上用软边缘口径来代替硬边缘口 径。软边缘口径有一个传输率,在整个口径的大部分区域是一样的,但 接近边缘时,传输率将在一个小区域内逐渐降为零,而不是忽然变化。 筛选器功能因实现这一功能而被包含在ZEMAX 之内,如例子DLL 文件 中介绍的那样。详细内容可参见“表面类型”一章中“用户自定义表面”。 细节可参见例子US_FILT4.DLL 的说明。

梯度折射率操作数的使用
有几个优化操作数被用在优化中来控制梯度折射率材料的性质。 它们中的一些介绍如下。 DLTN DLTN 用来控制梯度折射率镜头中折射率的最大的总的变化。Int1用来 定义表面编号,Int2 用来定义波长编号。DLTN 定义如下: 这个最小和最大折射率值是在极端z 轴坐标, min Z 和max Z 处计算的。在成形之前, min Z 和max Z 是用来构造镜头的空 格的最小和最大坐标位置的Z 轴坐标。对于凸球面,它们对应于球面顶

点。对于凹球面,它们对应于表面上的最大矢高处。 LPTD LPTD 用来控制材料中梯度的外形。仅用Int1 来定义梯度折射率表面 的编号。LPTD 是制造光程差的缩写,这个约束用来使非线性外形保持单 调上升或下降。仅当坐标梯度的二次或三次项是变量时才使用它。这个 操作数仅对梯度折射率5 表面有效。 LPTD 可以使用值为零的目标值。这个边界约束执行如下的条件:

这个最小和最大折射率值是在极端z 轴坐标, min Z 和max Z 处计算 的。在成形之前, min Z 和max Z 是用来构造镜头的空格的最小和最大 坐标位置的Z 轴坐标。对于凸球面,它们对应于球面顶点。对于凹球面, 它们对应于表面上的最大矢高处。如果这个操作数的残留差值小于零, 则可以稍微减小这个目标值(试着减小0.1)。改变目标值通常比提高权 重更有效。对于虚构的空格,操作数LPTD 的值必须为零。始终要检查梯 度外形,确保其斜率不改变符号。

用户自定义操作数
这段说明仅与使用ZEMAX-EE 的用户有关 有很多的时候需要执行很复杂的计算,并且要优化计算的结果。 ZEMAX 已经提供了一些这样的计算,如操作数MTFA,它追迹大量光线, 计算MTF 值,然后返回一个结果数值到评价函数编辑界面的“值”栏中。 有限的一些操作数可以在评价函数中由它自己执行;其范例可参见这一 章前面的“复合操作数的定义”一节的说明。 然而,这有一些问题,因为只有用户自己定义的程序才有足够的机动 性来定义操作数计算的数据。有两个方法可以达到这个目的。

1) 通过使用ZPL 宏指令 2) 通过使用在外部定义和编辑的程序 ZPL 宏指令的使用比较简单,易于与ZEMAX 结合,而且几乎不需要什 么编程经验。然而它受ZPL 宏指令语言的性能的限制,而且ZPL 宏指令 是被通译的,这对于复杂的计算意味着降低执行速度。对于执行速度还 算较快的比较简单的宏指令,ZPL 宏指令优化通常是比较好的选择。 在外部定义的程序对于编程来说是比较复杂的,需要外部C 语言或者 其他语言编译器,以及至少需要一些编程经验。然而,在外部定义的程 序比由ZPL 宏指令语言提供的程序复杂得多,而且,由于外部程序是被 编译的,所以它们的运行速度明显比较快。这个速度差异是戏剧性的, 通常越复杂的计算越有益于在外部编译的程序。实际上,在外部定义的 程序可能是十分复杂的,在返回到ZEMAX 之前可追迹成千上万条光线或 者做十分冗长的计算。注意,可以基于由其他分析程序计算得到的数据 用分界面来优化镜头,如偏离光线分析程序。ZPL 和执行用户自定义操 作数的外部编译方法详细介绍如下。

用ZPL 宏指令的优化
如果ZPL 宏指令语言足够用来执行要求的计算,那么在评价函数中使 用操作数ZPLM 来调用ZPL 宏指令。宏指令执行要求的计算,然后使用ZPL 关键字OPTRETURN 得到其结果。 操作数ZPLM 是容易使用的。Int1 和Int2 分别用来指定宏指令编号和 数据域的编号。宏指令编号用来说明将执行哪个ZPL 宏指令,而数据域 编号则说明由宏指令计算的哪个数据将被优化。 宏指令编号必须是在0 到99 之间的一个整数。例如,如果一个操作数 ZPLM 的Int1 值为17,那么宏指令编号为17,这个要执行的宏指令必须 命名为ZPL17.ZPL。宏指令名总是必须使用宏指令编号的两位数表示法。

如果宏指令编号为6,那么要执行的宏指令应该是ZPL06.ZPL。ZPL 宏指 令文件必须在ZPL 宏指令的默认文件夹中。 详细内容可参见“文件菜单”一章。 数据域编号必须是0 到50 之间的一个整数,包括这两个数。这个编号 指出了在内存中与镜头相关的空间数组中的位置。在宏指令的执行过程 中,宏指令关键字OPTRETURN 指明了哪个编号的数据域用来存放宏指令 计算的结果。总共有51 个数据域,调用一个宏指令可以用来同时优化51 个不同的值。例如,假设你需要一个宏指令来计算从第一面到像面的总 长度(这在效果上是操作数TOTR 的一个用户自定义的翻本)。这个宏指 令看起来可能像这样:
n = nsur( ) x=0 for I = 1,n,1 x = x+thic(i) next optreturn 0 = x

注意关键字OPTRETURN 的使用。这个关键字将“x”的结果储存在空间 数组位置0 中。假设这个宏指令被命名为ZPL15.ZPL。为了优化x 的结果, 在评价函数编辑界面中增加一个ZPLM 评价函数操作数,其Int1 是15, Int2 是0。更新评价函数之后,它的“值”和由TOTR 得到的一样,也可 以用相同的方法优化。 ZPLM 也可使用Hx,Hy,Px,和Py 数据域。这些数据域可以被ZPL 宏 指令分别用ZPL 函数PVHX,PVHY,PVPX,和PVPY 读取。 “PV”是“传递数据”的一个记忆体。 关于数据域编号需要直到一个非常重要的事情。如果它的值为零,则 执行宏指令,得到OPTRETURN 0 中的值。然而,如果数据域编号不是零,

那么不执行宏指令,而代替使用前面调用该宏指令时储存的数值。这种 约定有着实质性的好处。如果宏指令计算了许多数值,它们所有都需要 被优化,则这个宏指令只要调用一次,而多次使用ZPLM 操作数就可以得 到这个数据。这比多次调用宏指令有效得多。例如,假设名为ZPL11.ZPL 计算三个数值,它们三个都需要优化。在这个宏指令中将使用OPTRETURN 来储存这三个数据:
OPTRETURN 0 = x OPTRETURN 1 = y OPTRETURN 2 = z

那么在评价函数中用三个ZPLM 操作数来摘录这个数据,仅调用一次这 个宏指令来执行优化:
ZPLM 11 0 ZPLM 11 1 ZPLM 11 2

仅在ZPLM 11 0 中调用宏指令ZPL11.ZPL。注意,仅当Int2 的值为零 时,可以使用Hx、Hy、Px、和Py 的值,因为仅在这种情况下,宏指令才 被求值。 最后,在宏指令执行过程中镜头数据不能有任何改变,这一点十分重 要。这些改变将涉及到后面其他操作数求值。ZEMAX 不能将已经求值的 镜头数据恢复到对ZPLM 指定的宏指令求值之前的状态。同样,ZPLM 也 不应用在默认评价函数的中间,而应该放在ZEMAX 默认定义的那部分评 价函数的前面或后面。如果在宏指令操作的过程中镜头数据被改变了, ZEMAX 将无法知道哪个数据被改变了,而且不能不能将镜头数据恢复到 没改变时的原始状态。 只允许ZPL 宏指令执行对镜头数据的拷贝数据进行优化,而不是对实 际数据进行优化,这样可以避免出现上述情况,然而这个功能当前不被

支持。其原因是有时候宏指令在对后面的操作数进行求值之前需要改变 镜头数据。在这种情况下,应执行两个宏指令。第一个应按要求修改数 据,第二个应将数据恢复到原始条件。这两个宏指令,和执行改变镜头 数据的插入操作数一起,都可以在评价函数编辑界面中列出。

使用外部编译的程序的优化
创建一个用户自定义操作数(UDO)的第二种方法是编写一个外部窗口 程序来计算数据,然后使用动态数据交换(DDE)来将数据输入ZEMAX 中 或从ZEMAX 中输出。DDE 界面在“ZEMAX 扩展”一章中进行说明。那里 介绍的内容在这里不再复述;这里的说明是在假定已理解那一章的内容 的前提下进行的。 操作数UDOP 被用来从评价函数内部调用一个外部客户程序。客户程序 可能通过制造多个联系到ZEMAX 服务器的DDE 调用来执行要求的计算, 然后使用DDE 界面将结果返回到ZEMAX。然后将计算得出的数据放在评价 函数编辑界面中的“值”栏中,这样才可能以通常的方法被优化。 UDOP 是很容易使用的。Int1 和Int2 的值分别用来指定客户程序编号 和数据域编号。客户程序编号指出了哪个客户程序将被执行,而数据域 编号则指出了由客户程序计算的哪个值将被优化。 客户程序编号必须是0 到99 之间的整数。例如,如果一个UDOP操作数 的Int1 的值被设为17,那么客户程序编号为17,被执行的客户程序必须 被命名为UDO17.EXE。客户程序名必须始终使用与客户程序编号相对应的 一个两位数。如果客户程序编号为6,那么要被执行的客户程序应该是 UDO06.EXE。客户程序文件必须放在ZEMAX主目录下的\UDO 目录中。当到 达一个其数据域编号为零的UDOP 操作数,ZEMAX 将调用这个客户程序。 假设客户程序编号为17,客户程序将以如下的语法结构被调用: UDO17.EXE 缓冲器代码 Hx Hy Px Py

这缓冲器代码是由ZEMAX 提供给客户程序的一个整数值,它是唯一能 识别正确镜头的标识符。因为ZEMAX 能够同时对多个镜头进行求值,缓 冲器代码被用作一个标识符,以便于当客户程序申请或返回数据时,它 和正确的镜头相联系。注意在优化时,ZEMAX 将同时对许多镜头进行求 值,将计算出输出的细微差异,这个优化将继续下去。客户程序必须计 算指定镜头的数据。 一旦客户程序开始执行,客户程序必须执行一下一个关键的步骤: 1) 建立与ZEMAX 服务程序相连的DDE 链。 2) 将正确的镜头数据加载到ZEMAX 服务程序的存储器中。 3) 计算要求的数据。 4) 将数据传输回ZEMAX。 5) 清除ZEMAX 服务程序的存储器中的内容。 6) 终止DDE 链,并退出。 具有代表性的是,DDE 链是由ZCLIENT 编码维持的,这在DDE一章中介 绍(当然如果愿意的话,用户自己可以自由编写它们)。 ZCLIENT 调用了用户定义的用户函数来计算操作数数据。 为了将正确的镜头数据加载到ZEMAX 服务程序的存储器中,必须发送 一个单个的名为GetUDOSystem 项目到ZEMAX服务程序中。 其语法结构为“GetUDOSystem,缓冲器代码”。这将使ZEMAX 从系统 存储器中重新得到这个正确的镜头数据,并且后面所有的DDE调用都是对 这个镜头的操作(如光线追迹)。然后通过随意使用在DDE 一章中定义 的任意一个DDE 项目调用来计算数据。一旦数据被计算完毕,最多有51 个值可以被放在一个长格式的字符串中。使用项目SetUDOData 将数据传 送回服务程序,最后回到ZEMAX 内的优化程序。其语法结构为 “SetUDOData,缓冲器代码,data0,data1,data2,data3 ,,data50”。 任何一个省略的数据项被认为是零。

所有的数据必须是自由格式的整数、指数、和浮点数。 关键的是客户程序要用SetUDOData 返回一个字符串,即使它只包括一 个缓冲器代码,而其余都是空的。ZEMAX 将等着客户程序返回这个字符 串。因为ZEMAX 无法知道计算将用多长的时间,所以ZEMAX 将一直“暂 停”,直到它得到这个数据。如果客户程序计算失败了,或者没有返回 这个数据,ZEMAX 将不能完成这个操作数的执行,或者将永远暂停。在 ZEMAX 内部按下ESC 键将会“中断”求值,使ZEMAX 跳过对这个操作数 求值。 可以通过客户程序的用户函数将控制返回到ZCLIENT 来终止DDE 链。 一个计算3 个数据项,分别被称为a,b,c,的范例编码可以阅读如下:
void UserFunction(char *szCommandLine) { double a, b, c; char szBuffer[500], szSub[256]; int buffer_code; /* 得到识别镜头的缓冲器代码 */ buffer_code = atoi(GerString(szCommandLine, 0, szSub)); /* 将正确的镜头数据设置到服务程序储存器中 */ sprintf(szBuffer, “GetUDOSystem,%i”,buffer_code); PostRequestMessage(szBuffer, szBuffer); /* 这里是计算数据的地方□□,这些行省略了 */ /* 现在得到标记为0,1,2 的数据*/ /* 如果行的总长度超出255 个字符,则不要使用SetUDOData, */ /* 而使用SetUDOItem。详细内容可参见有关ZEMAX 扩展的章 节。 */ sprintf(szBuffer,“SetUDOData,%I,%.7f,%.7f,%.7f”,buffer_code,

a,b,c); PostRequestMessage(szBuffer, szBuffer); }

注意,对客户程序的一个简单调用可以得到多个数据。这是数据域编 号用来摆放的地方。数据域编号可以是0 和50 之间的数字,包括这两个 数。这个编号指出了数据在与存储器中的镜头相对应的全局数组中位置。 在客户程序的执行过程中, 客户DDE 项目“SetUDOData 用来得到一个 有51 个数的长字符串(或者少一点;空格和省略值被认为是零)。这些 数据必须是数值,被存放在镜头缓冲器中,以供后面的UDOP 使用。在实 际应用中,DDE 项目名限制在255 字符之内,这限制了SetUDOData 只能 传送远小于51 项的数据;但是DDE 项目“SetUDOItem”通过一次传回一 个数据可以在这个限制附近工作。 对于任意一个DDE 项目名有一个255 个字符的限制;因此 SetUDOData 被限制只能通过少量的数值。为了在这个限制附近工作,可 以使用SetUDOItem,这在“ZEMAX 扩展”中说明。 总共有51 个不同的数据域,因此一个客户程序调用可以用来同时优化 51 个不同的值。这个数据域编号值指出了哪个得到的数值将被放在那个 UDOP 操作数的“值”栏中。 UDOP 也允许使用Hx,Hy,Px,和Py 数据域。这些数据也可以被客户 程序读取,因为它们在命令行中跟在缓冲器代码后面被传送过去。 有一个非常重要的事是要知道数据域编号。如果它为零,则执行客户 程序,并且将从数据位置0 得到的值放到值栏中。然而,如果数据域编 号不为零,则不执行客户程序,由客户程序的一个前面的调用储存的先 前值将被代替使用。这个约定的优点是它的实用性。如果客户程序要计

算许多数值,这些数值都需要被优化,则客户程序仅需要调用一次,只 要用多个的UDOP 操作数就可以得到这些数据。这比多次调用客户程序有 效得多。 例如,假设一个名为UDO25.EXE 的客户程序计算了三个数值,它们都 需要优化。在这个客户程序中,通过使用“SetUDOData,buffercode,x, y,z”将这些数值传送回去。然后只调用一次客户程序,评价函数中的 三个UDOP 操作数就可以记录这些数据,并执行优化,这三个操作数是:
UDOP 25 0 UDOP 25 1 UDOP 25 2

仅在操作数UDOP 25 0 的求值过程中调用客户程序UDO25.EXE。注意, 仅当数据域值为零时,才使用数值Hx,Hy,Px,和Py,因为仅在这种情 况下客户程序才被求值。 与ZPL 宏指令的使用不同的是,UDO 在求值过程中可以随意改变镜头 数据,这个因为所有的DDE 命令都是针对镜头数据的一个复制本执行的, 而不是针对正在被执行的实际镜头数据。 有一个被称为UDO_DEMO.C 的范例UDO 源代码文件,它可以由ZCLIENT 编译和连接。这个可执行的文件需要被重命名为UDOxx.EXE,这里xx 是 一个两位数的整数。这个UDO 范例得到6个值:Hx,Hy,Px,Py,和两个 虚拟常数,分别放在编号为0 到5的数据位置中。

使用建议
在初期设计过程中,优化时很少需要对每个视场的所有波长的所有光 线进行追迹。因此,可以通过在优化时限制使用的视场和波长的数目来 大大减少执行的时间。如果选择的视场和波长的权重被设为零,则在构 建评价函数时默认评价函数运算法则将跳过这些零权重的视场或波长。

其结果是追迹的光线少了许多,加快了执行速度。 例如,如果一个镜头在五个视场点被求值,则评价函数中仅包含第一、 第三、和第五视场是可行的。当然,在设计的后期,需要包括所有的光 线,默认评价函数需要被重新构建。 由一些技巧可以用来改善执行结果。除非优化方案坚持用不实际的设 计,否则不要对变量设置边界操作数。边界操作数增加了计算的难度。 只要可能,尽量使用求解来代替明确的操作数。例如,如果可能的话, 则用曲率求解来控制焦距,而不用操作数。 优化与现代镜头设计的技术是不可分的,而且,只有实践才能是设计 者精通使用优化法则。那些精通其他软件优化法则的使用者可能会发现 ZEMAX 更易于使用,而且只要少量经验,界面使用的技巧容易掌握,设 计者可以专心于设计本身。如果你刚刚接触计算机化的镜头优化,则没 有比实际操作更好的方法来学习它了。

全局最佳方案
这个产生评价函数的最小可能值的设计被称为是“全局”最佳方案, 是最好的可能设计的定义。然而,没有已知的优化法则对于一个任意的 设计问题都普遍可以发现其全局最佳方案,除非你想“直接找到”一个 优化法则(换句话说,就是试验所有的无数可能解决方案来判断哪个是 最好的)。使用计算机帮助的光学设计的技术有两个基本组成。首先, 设计者必须能够确定一个合适的初始方案,第二,他或者她在优化过程 中必须扮演一个监督员的角色。一个好的监督员知道什么时候、如何备 份和尽量使程序进入一个更有效的方向。 不幸地是,这通常需要相当多的经验,甚至通常是相当枯燥无味的。 一个经验丰富的设计者在寻找一个新的、更好的设计模式时,通常要靠 直觉、分析和幸运三者结合。ZEMAX 为执行这个全局最佳方案的搜索提

供了一个自动操作的能力;这个特性将在下一章介绍。

第十八章 全局优化
介绍
这个特性仅对ZEMAX 的XE 和EE 版本有效。这一章中的资料关键依赖 于用户已经阅读和掌握了前一章中有关“优化”的资料。 在最近几十年之内,镜头优化的约定方法是使用阻尼最小二乘法 (DLS)。DLS 有着许多引人注目的特征;它是一个有效的方法,并且在 搜寻评价函数的“局部”最小量它也是一个非常好的方法。在上下文中, 局部这个词意味着在不增加评价函数的情况下,从解决方案的当前位置 出发可以得到的评价函数的最小值(这是一个理想化的事物,实际上, DLS 只能跳过一个很小的增加评价函数的区域)。 为了使这个问题形象化,你可以想象你正在旅行,努力想从山的一边 的一个起始点出发去寻找一个山谷的底部。你想找到这个山谷的最低点。 假设你不能看到这个山谷,这里是烟雾朦胧的,你所能看到的所有的是 离你现在站的地方非常近的地形。你可以测定哪条路是下山的,你可以 沿着那个方向一直走下去,直到斜坡又变成上山了;在那个点你可以发 现一个新的下山方向。你可以一遍又一遍地重复这个过程,直到抵达一 点,在那里所有的方向都是上山的。这个最低点是一个局部最低点,至 少是这个山谷的底部。 这个方法的问题是一旦你到达了这个局部最小量,将无法去测定其他 地方是否已经没有一个更好更低的最小量。例如,如果你从这一点出发 从任意一个方向往山上走,直到一个局部山峰,然后继续往前走,下山

进入下一个山谷,最后你将抵达一个新的局部最低点。判断这个新的最 低点是低于还是高于前面那个山谷的最低点。查明答案的唯一方法是走 一趟。 你可能会问,既然计算机是如此快速,为什么不试着算出每个可能的 结构来判断哪个是最好的。为了得到这个问题的作用域的一个感性认识, 可以考虑一个带有六个自由度的双胶合镜头(自由度表明它们是优化的 变量)。如果你假设每个值可以取100 个可能值(一种粗略的采样方法), 则将有1E+12 种不同的可能系统。如果对每个系统求值需要追迹20 条光 线(一种低的估值方法),而且你每秒钟可以对一个表面追迹1,000,000 条光线,则需要的时间大约为8E+07 秒,或者大约为2.5 年。对于一个 四片的镜头(16 个变量)在三个视场和三个波长中求值,使用100 条光 线来求值,将需要1E+32 次系统求值,或者需要几十亿倍的宇宙寿命的 时间。 有一个解决全局优化问题的方法是(十分感谢地)不需要这种不合情 理的计算努力。这些运算法则包括虚拟的退火,多个起点,高级系统, 神经网络,和其他一些。所有这些法则都有其长处和弱点,这些超出了 本章的讨论范围。

ZEMAX 的功能
在ZEMAX 中有两个独立的全局优化法则,每个都有其不同的用途。 你可能使用的第一个运算法则被称为“全局搜索”,在仅给出评价函 数和初始设计的情况下它用来寻找一个新的设计形式。全局搜索使用起 始运算法则,多个起点,约定的阻尼最小二乘法,和一些高级启发式系 统的统一体来搜索一个新的设计形式。全局搜索运算法则对于搜索一个 有前途的设计形式是十分有用的,但是,它通常不能产生一个“最终” 的设计方案。第二个运算法则就是用来实现这个用途的。

第二个运算法则被称为“锤形”优化(镜头设计者常说的对一个设计 进行锤打来挤出最后一点成果)。一旦发现了一个好的、合理的起始点, 锤形法则将用尽一切方法来搜寻一个最佳方案,这可能比经验和全局优 化法则优越。锤形法则仅需要一个部分优化的镜头和以ZMX文件形式存在 的评价函数。 虽然全局优化法则是十分有用的,但是要认识到不能保证总是,甚至 是有时能发现真正的全局最小量,这一点是重要的。当然,也无法去测 定一个方案是否是这个全局最小量,甚至它是你所找到的最好的方案(记 住关于这个问题的宇宙寿命的比率)。 要认识到不能保证总是,甚至是有时能发现真正的全局最小量,这一 点是重要的。 全局搜索和锤形法则两者都需要非常大的计算上的努力才是有效的。 这两个法则不能有意交互使用!(DLS 优化就是为了这个)。 如果你设置了一个全局优化,当计算机工作时你在旁边观察,你将会 被迫感到失望的。当你设置了这个问题,让计算机运行几个小时,或者 甚至是几天,全局优化是十分有效的,但不能只运行十几分钟。理想的 情况是在晚上停止工作时设置一个问题,让全局搜索(或者锤形,这要 根据你的需要)工作一个通宵。在第二天早上,你将会看到一个有用的 结果。

全局搜索法则
在你开始一个全局搜索之前,你必须拿出一个很粗略的起始点。“很 粗略”意味着这个设计有正确数目的表面,一个定义的光栏面,和选择 的初始玻璃。视场和波长必须被定义,你也需要定义一个评价函数,关 于这个过程的详细内容可参见“优化”一章。这个粗略的设计方案可以 是一个平行平板玻璃,其最后一面用一个曲率求解来控制焦距。

如果不用一个求解来控制焦距,那么这个系统最后将会有一个想要的 近似焦距。同样,变量参数也必须全部被定义。在开始全局搜索之前必 须保存这个镜头。 ZEMAX 使用一个这个起始焦距作为一个比率参数,因此,这个起始设 计方案至少应该有一个近似正确的焦距。 在主界面上,选择工具,全局搜索。在这个对话框上有四个按钮:开 始,停止,继续,和退出。 选择开始。ZEMAX 将初始文件拷贝到从GLOPT_01.ZMX 到 GLOPT_10.ZMX 的文件中,然后开始搜索。ZEMAX 将开始查看从你定义的范围中取出的 镜头参数的不同的结合体。优化将会从一个最近产生的镜头开始继续下 去,知道ZEMAX 认为这个新镜头已被充分优化。 对于每个产生的新镜头都一样,ZEMAX 将拿这个新镜头的评价函数与 迄今为止发现的最好的十个镜头的评价函数相比,根据需要将它放入十 个最好镜头的列单中的正确位置,保留其他的镜头文件。如果镜头有着 比GLOPT_10.ZMX 还要高的评价函数,则它将被放弃。不定地重复这个循 环。每次发现一个新镜头比十个镜头的列单中最差的镜头要好,它将被 放在列单中的正确位置。在几百个镜头被替换后(这可能需要对几万个 镜头进行求值),最后得到的一批镜头有希望包含有一些非常好的设计 方案,或者至少有一些有前途的形式。 这个法则也会周期性地返回到十个镜头的列单中的镜头上来判断它们 能否继续被改善。有时,一些镜头将被改善,然后放回到十个镜头的列 单中。假如这种情况发生,如果被替换的旧镜头有着与新镜头一样的基 本形式,则旧镜头将被丢弃。这样做将在十个镜头的列单中保持一定的 差异。 为了终止搜索,选择停止按钮。根据运算正在做些什么,它可能立即 退出,或者它将需要几秒钟。一旦法则已经被终止,你可以点击退出按

钮。你现在可以打开从GLOPT_01.ZMX 到GLOPT_10.ZMX 中的任意一个文 件。 继续按钮与开始按钮十分相象,然而,继续按钮首先将载入已存在的 从GLOPT_01.ZMX 到GLOPT_10.ZMX 的文件,并将它们的当前评价函数放 到十个最好镜头的列单中。因此,继续按钮将从前一个运行结束的地方 开始搜索。继续按钮不会删除已存在的十个最好的镜头,相反,开始按 钮会删除这些文件,然后完全基于当前镜头数据编辑界面中的镜头重新 开始搜索。如果当一个完全无关的镜头数据放在镜头数据编辑界面中时 选择继续按钮,ZEMAX 将使用在镜头数据编辑界面和评价函数编辑界面 中的当前数据来优化镜头,但是将分别用旧的GLOPT 文件各自的评价函 数作为比较目标。 全局搜索很少会自己找到全局最小量。其原因是全局搜索集中力量用 来搜寻一个新的、有前途的设计形式,而不是正确集中来搜寻每种形式 的最好的可能方案。这后面的工作将留给另一个称为“锤形优化”的法 则,这将在下节中介绍。

锤形法则
在检查由全局搜索产生的设计形式之后,你或许想去研究它们中一两 个。有着最小评价函数的那个并不总是最好的(虽然如果你能很好地设 计你的评价函数,它应该是)。例如,第二好的解决方案可能更易于构 造。无论你使用什么标准来测定这个最有前途的解决方案,你现在是想 用这个选择的镜头作为一个起始点来寻找最好的可能方案。 锤形优化将得到这个镜头,并通过做一些调整和优化来尽力精炼它。 这个镜头每次被改善,它将被保存到磁盘中一个临时文件中。锤形优 化仅需要一个带有一些变量和一个评价函数来得到起始点的ZMX 文件。 锤形优化界面显示了开始的评价函数和迄今为止发现的最好的评价函

数。虽然好的结果在几分钟之内可能是坏的,但是法则被允许运行几个 小时,最适宜的是通宵。为了终止这次搜寻,可选择停止按钮,然后选 择退出按钮。 如果ZEMAX 不正常终止,最后保存的锤形文件可以在临时文件中建立。 这个临时文件名是由这个起始镜头文件名构造的。如果正在被优化的镜 头被存放在文件 C:\ZEMAX\SAMPLES\MYFILE.ZMX 中,那么这个临时文件将被称为 C:\ZEMAX\SAMPLES\MYFILE_HAMMER.ZMX。 锤形法则也可以有效地用在一个不是由全局搜索产生的部分优化的设 计方案。可以自由在任意设计方案上使用锤形法则。

玻璃选择的优化
如果一块玻璃由一种由折射率、阿贝常数、和部分色散偏离描述的“模 拟”玻璃构成,则模拟玻璃参数也可以和其他数值参数一样被设成变量 和被优化。然而,这种模拟玻璃的方法有一个严重的缺点。在使用模拟 玻璃找到一个好的解决方案之后,必须将模拟玻璃转化成实际玻璃。然 后使用新选择的玻璃重新优化这个设计方案。 不幸的是,对于许多系统新优化的设计方案将比使用模拟玻璃的方案 要差。甚至更大的失败是,使用实际玻璃的最佳方案有着和使用模拟玻 璃发现的方案不同的形式。 传统上,为了找到一个更好的玻璃组合,设计者应该查找玻璃图上的 候选玻璃,代替用作新的玻璃选择,再重新优化。如果新的方案是更好 的,则这个玻璃选择将被保留;否则,一组新的玻璃组合将被用来求值。 只要设计者愿意继续搜索,这个过程将一直继续下去。

代替玻璃的使用
ZEMAX 通过允许玻璃有与之相对应的一种“代替”状态来自动操作这 个过程。如果一块玻璃被作为一种代替玻璃(使用玻璃求解对话框), 那么在优化过程中,全局优化(锤形和全局搜索)将自动反复执行近似 玻璃的代替。这允许ZEMAX 不仅可以优化数值指示值,如半径和厚度, 还可以允许不用求助于玻璃色散的理想化来指导玻璃选择的优化。 为了使用这个代替特性,在玻璃求解对话框(通过在任意一个玻璃名 称上双击是得到这个对话框的快捷方法)中自由设置每块玻璃的状态, 使之变成“替代”。 一旦定义了玻璃的代替状态,然后调用 锤形或者全局搜索优化。 ZEMAX 在寻找更好的设计方案过程中将自动改变玻璃类型。系统默认 ZEMAX 可从任意一个当前作用的目录中选择任意玻璃,这些目录在系统 的通用对话框中指定。

选择玻璃的限制
实际上,通常必须限制用作代替玻璃的可用玻璃,其原因如下: 目录中的“玻璃”不是全部都是实际玻璃;它们一些是那些不适合使 用的液体,气体,晶体,和塑料。 许多玻璃是非常昂贵的,重的,脆弱的,或者具有其他一些不适合使 用的机械性质。 或许,仅有某几个目录是想要用来作为新选择的玻璃,而其他目录必 须仍被用作光学系统中的其他表面。 由于这些原因,ZEMAX 提供了一些可选的方法来限制用作代替玻璃的 可用玻璃库: 通过定义仅用在某些指定表面的特殊目录。 通过定义一个“模板”,它包括关于代替玻璃的价格,耐酸能力,耐

污染能力,和其他一些性质的限制。 通过在玻璃目录中,以各种情况为基础来“排除”玻璃。 通过在评价函数中定义“惩罚”,它阻止选择带有不合使用的性质的 玻璃。 玻璃求解对话框准许一个目录名的描述说明来用作候选代替玻璃。如 果没有给出目录名(如目录名区域是空的),则可以从在系统的通用对 话框中选择来使用的所有目录中选择玻璃。如果给出了目录名(如Hoya), 则仅选择那一个目录中的玻璃。如果需要的话,这允许不同的表面可以 从不同的目录中选择玻璃。这种以非常普通的方法来限制要考虑用作代 替玻璃的玻璃数量的方法也是很有用的。注意,用户自定义目录也可以 被指定使用。没有扩展可以被指定,ZEMAX 自动添加了.AGF 扩展。 可以定义一个玻璃置换模板基于玻璃的价格,AR,SR,FR,CR,和PR 代 码值来限制选择所有目录中的哪些玻璃。关于定义模板的信息可参见“工 具”一章中的“玻璃代替模板”一节。 为了防止选择某种玻璃,可在玻璃目录对话框中对那种应该避免的玻 璃选择“取消代替”。详细内容可参见“玻璃目录的使用”一章。排除 玻璃的优点是目录中的其他玻璃仍旧可以使用,而不必去定义一个独立 的目录。 惩罚是评价函数中的一个操作数,如GCOS,GTCE,和INDX,如果玻璃 有不受欢迎的性质时它们用来增加评价函数。这是一个效率最低的方法, 因为即使一个由于太高了而不被认为是好的方案的结果评价函数结束 了,玻璃仍旧可以被选择,而且后面的镜头继续优化。然而,这对于定 义玻璃间的关系是有用的,例如,最小化构成一个胶合面的两块玻璃的 GTCE 差值(为了防止镜头在热压下被破坏)。

使用建议

这里有几个最佳化全局优化法则(全局搜索和锤形)的执行结果的技 巧: 果可能的话,将光栏放在第一面。如果你的入瞳在系统中间,你可以 通过使用一个虚拟的第一面作为光栏来模拟它,然后用一个负的厚度来 得到表面2。这提高了执行的性能,因为ZEMAX 不需要去计算入瞳在哪里。 如果合适的话,你可以将这个厚度变成一个变量。这个技巧对于本身有 入瞳畸变的系统不能很好地工作,如广角镜头。 在最后一个玻璃表面的曲率上使用边缘光线角度代替操作数EFFL 来 控制有效焦距。撤消一个变量将明显减少这个问题的维数,而操作数EFFL 需要一个额外的光线追迹,降低了评价函数求值的速度。 在像平面前的最后一个厚度上使用边缘光高求解(如零光高)。 大多数镜头对轴上视场的0.7 光瞳带要纠正地很好。如果你的直觉要 求,你也可以使用其他的光瞳带。这个求解将确保由 全局搜索产生的每 个设计方案都在焦深之内,就好象曲率求解确保正确的焦距。 这两个求解一起可以将全局搜索法则产生的结果改善几个数量级。对 于锤形优化,用一个变量来代替这个求解来考虑最佳的散焦。 使用操作数MNCT 和MNET。它们是避免出现负的中心和边缘厚度的基本 操作数。ZEMAX 使用这些边界约束来决定搜索中每个操作数的适当范围。 解决方案将在方案空间的这些不合适的区域内徘徊,除非你特别禁止它。 保持你的评价函数尽可能相似。在默认评价函数构造中使用2 或者3 个环带(参见“优化”一章)通常是一个好主意。对于锤形优化你通常 要用更多的环带数。 乐于多运行几个长运转。在一个设计问题开始之前为了得到设计形式 的想法,一个或者稍多一些的运转将被用来探测有前途的设计方案,最 后一个运转用来确保你所决定的设计方案已不能被改善了(锤形优化对 于这个最后任务有着明显的好处)。

使用代替玻璃,而不用模拟玻璃,特别在使用锤形优化时。对于一个 使用模拟玻璃的设计方案使用锤形优化没有多少好处,因为最后这些玻 璃需要被转化回实际玻璃,然后重新优化。代替玻璃十分有用,特别在 设计过程的后期,这时设计形式已被决定下来。 如果你计划连续好几天运行一个搜索,你可以减暗或者关闭你的显示 器,或者使用屏幕保护程序来保护你的荧光粉,以免其老化。 锤形法则可以被终止,然后重新开始,这不会有信息的重大丢失。 在优化过程中,它自动保存任何被改善的设计。 如果一个全局搜索被终止,在下一次通过选择继续按钮,而不是开始 按钮,来继续这个搜索。 当优化程序在运行时,它将支配计算机的资源。其他应用程序仍然可 以运行,但是它们是低反应的,在Windows NT/2000 下,通过打开任务 管理器可以减少给ZEMAX的资源;然后选择ZEMAX.EXE程序; 右击鼠标;然后选择SET Priority?LOW。 如果一定数量的时间没有用户操作,一些计算机可以被变成进入“睡 眠”模式。为了允许ZEMAX 继续运行,这个特性可能需要被禁止,即使 很长一段时间不用从键盘或者鼠标输入。

总结
最后再次强调一下,全局最小量搜索特性对于任意一个特殊问题将永 远不可能找到一个全局最小量。它擅长于发现可供选择的设计形式,用 手工去寻找这些形式将是冗长无味的。它是加到你的工具箱中的一个功 效非常强大的工具;它不是一个光学设计技巧的替代品。 全局搜索法则有着非常强大、自由的组成,因此每次不会有两个产生 准确的同样结果的运转。有时这个解决方案是差的,有时是好的,但是 对于持续时间相似的运行,它们的结果通常是不一样的。

第十九章 公差规定
介绍
ZEMAX 提供了一个使用简单,但灵活和强大的公差推导和灵敏度分析 能力。这个用于分析的公差包括了结构参数的变化,如曲率、厚度、位 置、折射率、阿贝常数、非球面系数,以及其它更多的参数。 ZEMAX 也支持表面和镜头组的偏心分析,表面或镜头组在任意一点的 倾斜分析,表面外形的不规则分析,以及参数或特殊数据的值的变化分 析。由于参数和特殊数据项可以说明非球面系数,梯度折射率系数,以 及其它,因此这些数值的任意一个也都可以作为公差分析的一部分。不 同的公差可以被用在任意一个组合中来估计调整和装配误差对系统性能 的影响。 公差也可以使用简单的操作数来定义,如TRAD,它定义了一个曲率半 径的一个公差。这些公差操作数和镜头文件一起被自动保存。 我们可以在从主菜单中的编辑界面组中得到的公差数据编辑界面中编 辑这些公差操作数。 公差可以被不同的标准所求值,包括RMS 斑点尺寸、RMS 波前差、MTF 反应曲线、标准误差、用户自定义评价函数、或者用来定义一个复杂的 调整和求值过程的过程。另外,还可以定义补偿来模拟对装配后的镜头 所作的调整。ZEMAX 也允许在一个补偿上设置限制。 可以以两种方式来计算公差: 灵敏度分析:对于给定的一批公差,是分别对每一个公差来测定它在 标准里的变化量的。

反转灵敏度分析:分别对每个公差在性能方面的一个给定的最小允许 减小量来计算公差。 灵敏度分析和反转灵敏度分析分别考虑每个公差对系统性能的影响。 这个总体性能可由一个平方和根的计算来估计。 Monte Carlo 模拟是作为一个可选择的估计所有公差的总体影响的方 法被提供的。这个模拟产生了一系列随机镜头,它们符合这个指定的公 差。通过同时考虑所有的可应用的公差,可能可以得到预期性能的准确 模拟。 通过使用正态的、统一的、或者抛物线的统计方法,Monte Carlo模拟 可以产生许多的设计方案。

基本流程
一个镜头的公差分析由这些步骤组成: 1) 给这个镜头定义一批适当的公差。通常,在这一章中定义的默认 公差生成特性是一个好的起始点。公差在公差编辑界面中被定义和修改, 这个界面在主菜单栏中的编辑界面菜单中得到。 2) 添加补偿,并且对每个补偿设置允许范围。默认的补偿是后焦距, 它控制了象面的位置。也可以定义其它的补偿,如象面倾斜。 因为可以使用“快速公差规定”,所以仅仅使用后焦补偿可以大大加 速这个公差过程。可以定义的补偿的数量没有限制。 3) 选择一个适当的标准,如RMS 斑点尺寸或MTF。使用一个公差过程 可以定义更复杂的公差标准,这将在后面介绍。 4) 选择要求的模式,灵敏度分析或者反转灵敏度分析。 5) 修改默认的公差,或者增加新的公差来满足系统要求。 6) 执行这些公差的一个分析。 7) 回顾由这个公差分析产生的数据,考虑公差的预算。如果需要,

可返回到步骤5。 关于这个基本流程的详细内容将在后面的章节中提供。

公差操作数
一个公差操作数有一个四个字母的记忆码,如TRAD 代表半径公差。两 个整数值,被简称为Int1 和Int2,是联合这个记忆码来确定这个公差应 用于其上的镜头表面。一些操作数用Int1 和Int2 来作为其它目的,而 不是定义表面编号。 每个公差操作数也都有一个最小值和最大值。这两个值指出了与名义 值的最大可接受变化值。 每个操作数也都有一个空栏来作为随意填写的注释栏,这可以使这个 公差设置得更容易阅读。 可用的公差操作数在下面的表格中列出,详细说明如下。 公差操作数

对于每个公差,都要在公差编辑界面上规定一个最小值和一个最大 值。这些公差将在下面部分详细说明。

TRAD:曲率半径公差
用来直接规定曲率半径的公差。最小值和最大值是以镜头长度单位表 示的极值偏差。 例如,如果一个表面的名义曲率半径为100mm,该表面的最小和最大 TRAD 值为-.50mm 和+.50mm,则将把该表面的曲率半径设为99.50mm 和 100.50mm 来执行公差分析。

TCUR:曲率公差
用来规定曲率单位的公差,它直接关系到权重。最小值和最大值是以 镜头长度单位的倒数表示的极值偏差。 例如,如果一个表面的名义半径为100mm,则其名义曲率为0.01mm-1。 如果该表面的最小和最大TCUR 值为-.001 mm-1 和+.001mm-1,则将把该 表面的半径设为111.11mm 和90.909mm 来执行公差分析。

TFRN:光圈公差
当规定平坦的或者大半径的表面时,光圈公差是非常有用的。最小值 和最大值是以光圈(无单位量)表示的极值偏差。操作数TWAV被用来定 义测试波长。一个曲率有微小改变的表面的矢高的变化被近似给出:

这里r 是表面的半口径。矢高的变化关系到以光圈表示的偏差,如下:

这里N 是光圈的个数。二分之一因子假定了一个双倍通过的牛顿环类 型测试。更详细的信息可参见Malacara,光学车间测试。

TTHI:厚度公差
TTHI 被用来规定在元件组中的元件的绝对位置和镜片的厚度的公差。 系统默认,假设厚度的所有变化仅仅影响该表面和与那个元件有接触 的表面。例如,一个双胶合镜头的第一片镜片在厚度方面有一个+1.0mm 的变化,则第二片镜片的前后顶点都将偏移+1.0mm。 然而,由于ZEMAX 通过使用从前面表面得到一个补偿来定义所有表面 位置,因此,简单地增加+1.0mm 到这个表面将把这个系统中后面的所有 镜头都偏移+1.0mm。在装配中更有可能发生的是这个+1.0mm 的补偿将被 这个镜头组后面的第一个空气间隔所吸收。TTHI可以通过允许指定一个 “补偿”表面来处理这种情况。系统默认,这个补偿表面被指定为跟在 被规定公差的表面之后的第一个空气间隔。 为了举例说明,假设一个镜头,它的表面3 是BK7,表面4 是F2,表面 5 是空气。名义厚度分别是3、4、和6mm。如果默认的公差法则为表面3 定 义一个TTHI 操作数,则将在表面5 上放一个补偿。 如果这个公差值为+.1mm,则在分析过程中,它们的厚度分别变成 3.1mm、4.0mm、和5.9mm。这样,从表面6 到象面的表面的绝对位置将不 受表面3 的厚度变化的影响。 这个补偿是随意的;为了使用无效,将它设置成与公差相同的表面编 号,如TTHI 3 3。对于一些系统,如那些由在一个镜筒中的一堆隔圈组 成的系统,这个补偿可以不被要求。 Int1 被用来定义表面编号,Int2 是补偿表面的编号,除非Int2 等于 Int1。最小值和最大值是以镜头长度单位表示的极值偏差。

TCON:圆锥常数公差
TCON 被用来定义一个圆锥常数的公差。最小值和最大值是没有单位量 的极值偏差。

TSDX,TSDY:表面偏心公差
TSDX 和TSDY 分别用来分析一个标准表面类型在x 和y 方向上的偏 心。Int1 的值说明了表面编号,而且这个表面必须是一个标准表面类型。 标准表面类型以外的表面类型可以用后面介绍的TEDX 和TEDY 操作数来 规定公差。最小值和最大值是以镜头长度单位表示的偏心。 TSDX 和TSDY 的分析使用了不规则的表面类型。参见这一章后面介绍 的“不规则表面类型的公差规定”部分的说明。

TSTX,TSTY:表面倾斜公差
TSTX 和TSTY 被分别用来分析一个标准表面关于X 和Y 轴的倾斜。 Int1 的值说明了表面编号,而且这个表面必须是一个标准表面类型。标 准表面类型以外的表面类型可以用后面介绍的TETX 和TETY操作数来规 定公差。 最小值和最大值是以度表示的关于镜头的X 和Y 轴的倾斜。 参见相关TIR 操作数TIRX 和TIRY 的描述。 TSTX 和TSTY 的分析使用了不规则的表面类型。参见TIRX,TIRY:表 面TIR 公差

TIRX,TIRY:表面TIR 公差
TIRX 和TIRY 被分别用来分析一个标准表面沿着X 和Y 轴的倾斜。 Int1 的值说明表面编号,而且这个表面必须是一个标准表面类型。 标准表面类型以外的表面类型可以用后面介绍的TETX 和TETY 操作数 来规定公差。 TIRX 和TIRY 被用来指定关于总的指示器逃避或者TIR 的公差,这测

量了在一个镜头中“光楔”的数值。 最小值和最大值是在这个表面的最大口径半径处测得的以镜头长度单 位表示的“矢高”的数值的两倍,这里最大口径半径是由这个表面的半 口径定义的。其变化是如下给出的关于表示TIRX 和TIRY数值的归一化坐 标x 或者y 归一化坐标的函数:

例如,如果TIRX 公差为0.10mm。则在镜头的最小+x 口径方向上的矢 高为0.05mm,在最小-x 口径方向上的偏离为-.05mm,这表示一个值为 0.10mm 的“总”的TIR。对于TIRY 也是相似的。这个最小值和最大值被 用来简单地模拟表面在每个方向上的倾斜。这个表面的实际倾斜角给出 如下:

这里S 是表面的半口径。注意,沿着Y 方向的矢高意味着一个绕着X 轴的一个旋转体,沿着X 方向的矢高意味着一个绕着Y 轴的一个旋转体。 TIRX 和TIRY 的分析使用了一个不规则的表面类型。参见这一章后面 介绍的“不规则表面类型的公差规定”部分的说明。

TIRR:表面不规则度公差
TIRR 被用来分析一个标准表面的不规则度。Int1 的值指出了表面的 编号,而且这个表面必须是一个标准表面类型。这里不直接支持非标准 表面类型的不规则度的分析(关于模拟不规则度的更多的信息可参见下 面的TEXT 操作数的说明)。 模拟不规则度比其它类型的公差要麻烦一点。这主要是因为自然形成 的不规则度是随机的,不象半径的变化那样有确定性。因此,要作一些 关于不规则度的自然状态的假设,以便于执行这些分析。当使用TIRR 时

ZEMAX 所作的假设是,这个不规则度为球差的一半和象散的一半。这与 假设100%的象散比起来,是一个限制性比较少的模拟,因为象散不能由 调焦来补偿,因此是这个镜头中的一个更严重的缺点。 最小值和最大值是在表面的最大口径半径处测量的以光圈单位表示的 不规则度,这里最大的口径半径是由表面的半口径定义的。可用TWAV 操 作数来定义这个测试波长。 ZEMAX 假设是在一个双倍通过的牛顿环类型测试中测量光圈的。例如, 一个“W”光圈的TIRR 将产生表面矢高的一个变化,为:

这里t l 是测试波长(由TWAV 操作数定义),r 是归一化的半径坐标, 是在y 方向上的归一化的半径坐标。波前光路的变化与矢高和由这 个表面隔开的两种介质的折射率的变化有关:

TIRR 的分析分析使用不规则的表面类型。 当计算Monte Carlo 分析时,象散的角度可在0 到360 度之间自由选 择。这允许随机确定的象散误差的模拟。这与对每个元件都沿着y 轴方 向设置象散比起来,要少一些严格性,而多一些现实性。 更多的信息可参见这一章后面介绍的“不规则表面类型的公差规定” 部分的说明。

TEXI:使用泽尼克模式的表面不规则度公差
TEXI 被用来分析一个表面上的随机的、不规则的小幅度偏离,这个表 面可以是一个标准表面、偶次非球面、或者泽尼克基本表面。 Int1 的值指出了表面的编号,Int2 的值定义了用来模拟那个表面上 的不规则度的泽尼克项的数目。这里不直接支持标准表面、偶次非球面、

或者泽尼克表面之外的其它表面类型的不规则度分析。 TEXI 与TIRR 类似,只不过TEXI 使用泽尼克表面矢高来模拟不规则 度,而不是用TIRR 使用的第三级象差公式。关于泽尼克表面的完整的说 明可参见“表面类型”一章。 当使用TEXI 时,最小和最大公差值被解释成是以双通过光圈形式表示 的在测试波长处的表面的近似波峰到波谷(PTV)误差。波峰到波谷是不 规则度的一个粗略的测量。ZEMAX 计算了泽尼克多项式的每个单项的系 数,这个多项式使用下面的公式来定义表面外形的偏离:

这里f 是双通过光圈的数量,n 是用在这个不规则模型中的泽尼克项 的个数,λ是测试波长。由一个n 的平方根按比例决定这些系数来说明 一个事实,那就是泽尼克项的一个随机的集合通常将在一个RSS意义上求 和,所以PTV 误差与泽尼克项的个数不是成线性比例的。 由于指定这个近似的全面PTV 误差是方便的,所以都可以根据上面的 公式来计算每个泽尼克的项目。注意,有一个“c”值来代表以光圈表示 的最小和最大公差。 对于这个灵敏度分析,表面被转化成一个泽尼克表面,这个泽尼克多 项式的所有系数被设成由上述等式得到的最小或最大的“c”值。 注意,由于在口径边缘对于所有的多项式项目,表面矢高变形都是相 同的,一个值为0.001 的“c”,这时,使用20 个泽尼克项将产生一个 20c 的最大矢高偏离。 对于Monte Carlo 分析,将和灵敏度分析一样来转化表面,但不是每 一个多项式项都被赋予一个位于最小和最大公差值之间的随机选择的系 数。可以使用选择来作为操作数的统计学模型来选择这个随机值。可以 参见STAT 命令的说明。

默认的泽尼克项的个数是36 个,这是最大值。通常讲,如果使用的项 目越少,则不规则度的频率越低,即整个表面的起伏就越少;如果使用 的项目越多,则将是高频率的不规则度,即整个表面的起伏就越多。注 意TIRR 操作数模拟了不规则度的最低频率形式,对于整个表面仅仅是一 个二次和四次偏离。TEXI 可以模拟更多的不规则表面,可以使用36 个 项,在整个表面上通常可以看到大约5~15 个“起伏”。TEXI 不使用泽 尼克表面的位置、x 倾斜、或者y 倾斜项。 因为泽尼克表面矢高表达式包含了标准表面和偶次非球面的一部分, 所以这两种表面类型的任意一个都可以用由TEXI 操作数创建的泽尼克 表面来模拟。如果表面已经是一个泽尼克表面,那么这个偏离被简单地 加到已经在那里的多项式项中。如果表面是一个标准表面或者偶次非球 面,则这个泽尼克表面的标准化半径被设成是这个表面的半口径。如果 表面已经是一个泽尼克表面,最小和最大公差被假定是在已经定义的标 准半径处测量的。 TEXI 总是忽略泽尼克项目0,即活塞术语,把这个值设为0。

TPAR:参数数据公差
TPAR 被用来规定参数数据的公差。Int1 数字是表面编号。Int2数字 必须是1 和8 之间的一个整数,它说明参数编号。参见“表面类型”一 章的表格,它列出了在每种表面模型中使用的参数编号。对于测定非球 面系数的公差,以及更多,TPAR 是非常有用的。最小值和最大值是以被 这个参数使用的任意单位表示的变化量。

TEDV:特殊数据值公差
TEDV 是特殊数据值的公差。特殊数据值被ZEMAX-EE 中的特殊数据编 辑界面使用来定义非球面项目、衍射系数、或者其他数据。 Int1 用来识别表面,Int2 用来识别特殊数据编号。最小值和最大值 是以被这个特殊数据值使用的任意单位表示极值误差。参见“表面类型”

一章的表格,它列出了在每种表面模型中使用的特殊数据编号。

TIND:折射率公差
TIND 是折射率的公差。Int1 用来识别表面,最小值和最大值是折射 率的极值误差。这个折射率误差是作为一个“补偿”来模拟的,它依赖 于波长,除非这个表面的玻璃是一种由d 光折射率、阿贝常数、和dPgF 定 义的“模拟”玻璃,或者这个表面的玻璃是一个目录玻璃,所有的定义 波长都在0.3 和2.5 微米之间。在后两种情况之一中,TIND被解释成是 一个d 光折射率的变化量,它将以一种非线性方式改变在所有波长处的 折射率。

TABB:阿贝常数公差
TABB 是阿贝常数或者Vd 常数的公差。Int1 用来识别表面。最小值和 最大值是阿贝常数的极值误差。如果表面的玻璃是一种由d 光折射率、 阿贝常数、和dPgF 定义的“模拟”玻璃,或者表面的玻璃是一种目录玻 璃,所有定义波长都在0.3 和2.5 微米之间,则TABB被解释成是d 光折 射率的一个变化量,它将以一种非线性方式改变在所有波长处的折射率。 否则,TABBA 将被忽略。 这个折射率的变化是被在任意波长处的折射率的微分变化的一个估 计,作为d 光折射率、阿贝常数、和dPgF 的一个函数来给出的。

TEDX,TEDY:元件偏心公差
TEDX 和TEDY 分别被用来分析在X 和Y 方向的偏心。由Int1和Int2 定 义的两个表面编号指出了一个镜头组的起始表面和终止表面。最小值和 最大值是以镜头长度单位表示的偏心。 这两个公差要求ZEMAX 在这个镜头组的前面和后面插入一个坐标断 点,然后将整个组作为一个整体进行偏心。由于这个原因,TEDX和TEDY 通 常不在一个已存在的坐标断点两侧使用。如果你需要这个功能,可参见

TUDX 和TUDY 的说明。 TEDX和TEDY也可以被用来模拟表面的偏心,和TSDX 和TSDY一样。TEDX 和TEDY 将作用于任意一种类型的表面,包括标准表面和非标准表面,而 TSDX和TSDY只作用于标准表面。为了使用TEDX和TEDY 来偏心一个单一表 面,只要简单将Int1 和Int2 设成相同的表面编号。 为了检查来看看ZEMAX 实际上是否在做你想要做的事情,可参见在“公 差结果的故障”一节中的SAVE 命令的说明。 TEDX 和TEDY 命令是可以被嵌套的。例如,去分析一个由表面5 到表 面20 定义的镜头组的偏心,这是可能的;同样可以同时分析由表面5~8、 8~12、14~20 等等定义的元件的偏心。这个功能可以模仿在一个装配中 的元件的校准误差,以及在整个装配中的校准误差。这个嵌套的规则在 “Monte Carlo 分析的嵌套规则”一节中将作完整的说明。

TETX,TETY,TETZ:元件倾斜公差
或者Z 轴的倾斜。由Int1 和Int2 定义的两个表面编号指出了镜头组的 起始表面和终止表面。最小值和最大值是以度表示的偏角。 这三个公差要求ZEMAX 在镜头组的前面和后面插入一个坐标断点,以 及在镜头组的末尾使用一个虚拟表面以致可以返回到前顶点。 然后整个组可以作为一个整体绕着一个点转动。由于这个原因,当定 义的表面范围中包括了一个坐标断点,它与在由拾取求解得到的 TETX/Y/Z 控制的表面范围之外的下一个坐标断点有关,这时不应使用 TETX/Y/Z。危险的情况是如果两个结果倾斜范围交迭在一起,那么这个 元件的位置可能不是你想要的那样。如果你想要这个功能,可参见TUTX、 TUTY、和TUTZ 的说明。 TETX 和TETY 也可以被用来模拟单一表面的倾斜,有时被称为“光楔”, 和TSTX 和TSTY 一样。TETX 和TETY 可以作用于任意一种类型的表面,

TETX、TETY、TETZ 分别被用来分析一个表面或者一个镜头组关于X、Y、

包括标准表面和非标准表面,而TSTX 和TSTY 只作用于标准表面。为了 使用TETX 和TETY 来倾斜一个单一表面,只要简单地将Int1 和Int2 设 成相同的表面编号。 默认的TETX 和TETY 是绕着镜头组的前顶点转动的,然而,绕着其他 点转动通常是有利的。例如,一个设计好的镜头装配将绕着镜头的节点 转动,这样可以在校准过程保证焦距。这种情况容易被ZEMAX 通过在节 点处使用一个虚拟表面来模拟。简单地将起始表面(Int1)变成在节点 处的虚拟表面,这样转动将绕着那一点进行。第一个表面可以被定位在 与镜头组的其余部分有关的任意点上,因此倾斜可以绕着任意点发生。 TETX、TETY、和TETZ 操作数可以被嵌套。例如,分析一个由表面5 到 20 定义的表面组的倾斜是可能的,同样也可以同时分析由表面5~8、 8~12、14~20 等等定义的元件的倾斜。这个功能可以模仿在一个装配中 的元件的校准误差,以及在整个装配中的校准误差。 这个嵌套的规则在“Monte Carlo 分析的嵌套规则”一节中将作完整 的说明。

TUDX,TUDY,TUTX,TUTY,TUTZ:用户自定义倾斜/偏心
这五个公差,TUDX、TUDY、TUTX、TUTY、和TUTZ,被用作更一般的用 户自定义倾斜和偏心。这些名字是代表用户自定义偏心/倾斜X、Y、和Z 公 差的记忆码。这些与TEDX、TEDY、TETX、和TETY 非常相似。其不同之处 在于,ZEMAX 不会自动插入要求坐标断点表面来完成在公差范围内的指 定的偏心和倾斜。为了使用TUDX、TUDY、TUTX、TUTY、和TUTZ 命令, 你 必须已经将由Int1指定的表面定义成一个坐标断点表面。通常,但不是 一直,在镜头数据编辑界面中的后面将会有第二个坐标断点,它有一个 关于这个公差参数的拾取求解。这个求解可以是正的或者负的,根据情 况决定。这允许通过一定要求的手段来实现一些关于任意点复杂的转动 和偏心。

有一点是很重要的,那就是为使用Tuxx 公差而插入的坐标断点对所有 的倾斜和偏心有一个零的名义值。 最小值和最大值对于TUDX 和TUDY 是以镜头长度单位为单位的,对于 TUTX、TUTY、和TUTZ 是以度为单位的,就象坐标断点表面一样。

不规则表面类型的公差规定
公差操作数TSDX、TSDY、TSTX、TSTY、和TIRR 都使用不规则表面类型 来模拟镜头表面的波动。关于不规则表面的详细说明可参见“表面类型” 一章。 使用不规则表面类型的压倒性的优势在于速度、简易、和机动性。 任意的标准的表面类型都可以被转化成一个不规则表面类型,而不需 要虚拟表面和坐标断点。而且,倾斜、偏心、和不规则度的聚合效果可 以完全通过使用Monte Carlo 分析来模拟。当ZEMAX 使用操作数TSDX、 TSDY、TSTX、TSTY、和TIRR 来计算公差分析时,先要把表面从一个标准 表面类型转化成一个不规则表面类型。这就是为什么在使用这些操作数 时,只支持标准表面类型的原因。

公差控制操作数
这里也有一些公差控制操作数,它们可以被输入到公差数据编辑界面 中。这些操作数不是公差,但是可以被用来定义补偿,为了进一步的评 价而保存中间结果,定义统计性质,以及为光圈公差定义测试波长。 公差控制操作数

公差控制操作数在下面将被详细说明。

CEDV:定义特殊数据值补偿
CEDV 被用来定义补偿的表面编号和特殊数据编号,以供公差分析使 用。Int1 被用来指定表面,Int2 被用来定义特殊数据编号。例如,为 了指定表面9 的特殊数据值17 为一个补偿,使用Int1=9、Int2=17的 CEDV。 可参见“表面类型”一章的表格,它定义了哪些特殊数据被哪些表面

类型所使用。最小值和最大值的用法与它们作为COMP 是一样的。可以定 义的补偿的数目没有被限制。

CMCO:定义多种结构操作数补偿
CMCO 被用来定义补偿的操作数编号和结构编号,以供公差分析使用。 Int1 被用来指定操作数编号,Int2 被用来定义结构编号。例如,为了 指定结构4 中的多种结构操作数6 为一个补偿,可是用Int1=6、Int2=4 的CMCO。 关于使用多种结构操作数的信息可参见“多种结构”一章。最小值和 最大值的用法与它们作为COMP 是一样的。可以定义的补偿的数目没有被 限制。

COMP:定义补偿
COMP 被用来定义补偿的表面编号和类型,以供公差分析使用。 Int1 被用来指定表面,Int2 被用来定义类型。Int2 使用一个定义如 下的“代码”: Int2=0,补偿为厚度 Int2= 1,补偿为曲率半径 Int2=2,补偿为圆锥常数 COMP 操作数的最小值和最大值指出了补偿的最大允许变化量。 例如,如果一个补偿的名义值为50,最小值和最大值是-1.0 和1.0, 那么这个补偿将被限制在49.0 和51.0 之间。如果选择了“用户自定义 评价函数”,则尽管仍然使用补偿,但这个补偿的边界将被忽略。 可以定义的补偿的数目没有被限制。

CPAR:定义参数补偿
CPAR 被用来定义补偿的表面编号和参数编号,以供公差分析使用。 Int1 被用来指定表面,Int2 被用来定义参数编号。例如,为了指定表

面5 的参数2 为一个补偿,使用Int1=5、Int2=2 的CPAR。 参见“表面类型”一章的表格,它定义了哪些参数被哪些表面类型所 使用。最小值和最大值的用法与它们作为COMP 是一样的。可以定义的补 偿的数目没有被限制。

SAVE:保存灵敏度分析镜头
公差特性的操作数不总是明确的,特别对于那些使用坐标断点或者不 寻常的评价函数的系统。为了得到一个最近的结果来看看公差程序实际 上在做什么,可以使用SAVE 操作数。SAVE 被插入到任意你想要更详细 检查的公差的后面。 例如,假设在公差数据编辑界面中你有一个公差操作数TEDX。 在回顾最后的灵敏度之后,评价函数的改变看起来不再有意义了。在 公差数据编辑界面中编辑公差操作数来在这个TEDX 命令后面增加一个 SAVE 命令。对于Int1 的值,可以输入0 或者其它数字。 下一次运行公差分析时,ZEMAX 将把用来计算TEDX 公差的文件保存到 一个名为TSAV000n.ZMX 的文件中,这里n 是在Int1 栏中指定的整数。 这个镜头文件将被保存在与当前镜头相同的目录中。ZEMAX 将保存被 用来在一个ZMX 格式文件中评价前述公差的镜头。以通常的方式运行这 个公差文件,然后载入你指定的文件名。它将告诉你指示数据、坐标断 点、拾取、变量(它们是被最佳调整的补偿)、以及被用来测定评价函 数数据的评价函数(通常是对于最大公差值)。这个过程将让你去检验 实际上的结构是你正试着要模拟的结构,将让你洞察ZEMAX 是如何调整 你的镜头指示来测定公差。

STAT:定义统计
STAT 被用来在Monte Carlo 分析过程中定义 “飞行”统计。STAT命 令采取了两个整数自变量。Int1 指定了统计类型:0 代表正态分布;1 代 表均匀分布;2 代表抛物线分布;3 代表用户自定义分布统计。

Int2 的值仅仅被正态分布使用,它定义了“n”,平均和极值公差之 间的标准偏离的数值。 统计类型将在这一章的后面部分的“Monte Carlo 分析”一节中将详 细定义。

TWAV:测试波长
这个操作数设置了测试波长。当设置默认公差时,ZEMAX 将增加一个 TWAV 操作数,它一个0.6328 微米(HeNe)的值作为这个测试波长。如 果没有定义测试波长,那么ZEMAX 默认这个为主波长。 可以在操作数列表中放置多于一个的TWAV 操作数;每个操作数都为其 后面的操作数定义了测试波长。仅仅那些最小值和最大值以光圈形式被 测量的操作数才被这个设置所影响。公差数据编辑界面中的“最小值” 栏被用来编辑和显示这个测试波长。

默认公差的定义
可以从公差数据编辑界面的菜单栏中选择工具、默认公差来定义默认 公差。可以从主菜单中选择编辑、公差数据来激活公差数据编辑界面。 默认公差对话框包含了以公差类型分类的几个选项:

表面公差
半径:如果选择了这个选择项,那么将包括默认的半径公差。默认的 公差可以由一个以镜头长度单位表示的固定距离或者由在测试波长处的 厚度光圈(由操作数TWAV 定义)来指定。这个公差仅仅被放在那些有光 学功能的表面上,这样就排除了那些两边有相同折射率虚拟表面。如果 表面是一个平面,则默认的公差值被指定作为一个以光圈表示的变化量, 即使选择了其它选项也是这样。 厚度:如果被选中,则在每个顶点间隔上将指定一个厚度公差。

ZEMAX 假设所有的厚度变化只影响那个表面和与那个元件相接触的其 它表面;因此,在这个厚度后面的第一个空气间隔被用作一个补偿。 详细内容可参见这一章前面的关于TTHI 的详细说明。 偏心X/Y:如果被选中,偏心公差被加到每个独立的镜头表面中。公差 被定义作为一个以镜头长度单位表示的固定偏心数量。ZEMAX 使用TSDX 和TSDY 来表示标准表面的偏心,使用TEDX 和TEDY 来表示非标准表面的 偏心。 倾斜(TIR)X/Y:如果被选中,则一个以镜头长度单位或者度表示的 倾斜或者“全反射”公差被加到每个镜头表面中。ZEMAX 使用TSTX 和TSTY 来表示以度为单位的标准表面倾斜,使用TETX 和TETY 来表示以度为单 位的非标准表面倾斜。 S+A 不规则:如果被选中,则在每个标准表面上指定一个球形的象散 不规则。详细内容可参见前面给出的TIRR 的描述。 泽尼克不规则:如果被选中,将在每个标准表面上指定一个泽尼克不 规则。详细内容可参见前面给出的TEXI 的描述。 折射率:TIND 被用来模拟折射率的变化。 阿贝常数:TABB 被用来模拟阿贝常数的变化。

元件公差
偏心X/Y:如果被选中,则偏心公差将被加到在每个镜头组上去。公差 可以被定义为一个以镜头长度单位表示的固定偏心数量。 倾斜X/Y:如果被选中,一个以度表示的倾斜公差将被加到每个镜头组 和表面上去。重要的一点是要注意系统默认镜头组绕着这个镜头组的第 一个表面的顶点倾斜。关于绕着一些其它点倾斜的信息可参见在这一章 前面介绍的TETX 和TETY 部分。 除了公差定义以外,在这个对话框中还有另外两个选项: 起始行:这个控制指出了默认公差应该被放在公差数据编辑界面中的

哪个地方。如果行号大于1,那么从指定的行号开始附加新的默认公差。 使用焦距补偿:如果被选中,则将定义一个默认的后焦距(象面之前 的厚度)补偿。至少要使用一个补偿才能大大缓解一定的公差,然而, 补偿是否被使用则要依赖于设计的具体情况。也可以定义其它补偿。 更多的信息可参见“补偿的定义”部分。 这里有六个按钮: OK:接受这些设置,并产生默认公差。 Cancel:关闭对话框,但不改变默认公差。 Save:保存这个设置,以供特性使用。 Load:恢复前面保存的设置。 Reset:将设置恢复到默认值。 Help:调用在线帮助系统。 系统默认,ZEMAX 允许的Monte Carlo 分析从一个高斯“正态”分布 中摘取一个任意值。一旦定义了默认公差,它们将和镜头文件一起被自 动保存。如果在镜头数据编辑界面中插入另外的表面,则公差表面将自 动被重新编号。

补偿的定义
在这里可以定义许多不同的补偿:任意一个表面或者一些表面的厚度 (使用地最多),曲率,圆锥常数,任意的参数或者特殊数据值。 多种结构操作数也可以被定义作为一个补偿。对于使用特殊组成的倾 斜和偏心作为补偿,参数值是很有用的。要被倾斜的表面必须已经被定 义成一个坐标断点(或者也许是一个倾斜表面),并按要求带有一些适 当的拾取求解。 系统默认象面焦距被指定作为一个补偿。你可以增加或者删除补偿来 使这个分析适合你的特殊情况,可以使用任意多的补偿。通常,使用更

多的补偿将放宽公差,但使系统的实际校准复杂化。 可以使用公差操作数COMP、CPAR、CEDV、和CMCO 来定义所有的补偿。 操作数的定义在“公差控制操作数”一节中描述。 当使用一个过程来定义公差程序时,补偿可以被修改,在模拟的校准 过程的不同阶段可以定义不同的公差组合。关于这个选项的详细内容, 可参见这一章后面的“公差过程的使用”部分。

公差分析的执行
一旦所有的公差操作数和补偿都被定义好了,则可以执行公差分析了。 为了执行公差分析,从主程序菜单栏中的工具菜单中选择公差规定。 显示的对话框有几个控制,它们被说明如下: 快速公差模式:本来,快速公差规定仅仅考虑了以近轴后焦距误差作 为补偿的情况下的变化;其它所有的公差都将被忽略。快速模式对于粗 略的公差规定是非常有用的,它的速度通常是标准模式的公差规定的50 倍。

评价:
评价控制被用来指出什么将被用作一个评价图形。其选项为: RMS 斑点尺寸(半径,x,或者y):这对于那些不接近于衍射极限的 系统来说是最好的选择;例如,那些象差大于1个波长的系统。这是一个 最快速的选项。对于这个公差分析ZEMAX 总是采用质心参考。 RMS 波前:这对于那些接近于衍射极限的系统来说是最好的选择;例 如,那些象差小于1 个波长的系统。它几乎和RMS 斑点尺寸一样快。对 于这个公差分析ZEMAX 总是采用质心参考。 评价函数:使用一个镜头定义好了的评价函数。这对于用户自定义公 差规定标准来说是有用的。对于那些有非对称视场,或者有拦光的重要

的表面口径的系统,用户自定义评价函数也是被要求的。如果使用了用 户自定义评价函数,则没有边界约束将会被自动加到这个评价函数中。 几何或者衍射MTF(平均,子午,或者弧矢):这对于那些需要一个MTF 说明的系统来说是最好的选择。如果选择了平均,则使用子午和弧矢反 应的平均值。如果选择了几何MTF,ZEMAX 将使用MTF 的近似值,这样计 算起来是快速的,对于公差规定目的来说是足够精确的。如果公差被放 宽了,则基于MTF 公差规定的衍射可能是有问题的,这是因为如果OPD 误 差太大了,则衍射MTF 可能是不可计算的,或者是没有意义的。如果空 间频率是足够高的,并且对于MTF 的结果是足够差的,以致于在低于陪 分析的频率的一些频率处达到了零,这尤其是正确的。MTF 是最慢的默 认标准,基于计算的衍射要比几何慢一点。MTF 是子午和弧矢反应的平 均值。MTF 被计算处的频率是在“MTF 频率”控制中被指定的。 瞄准误差:瞄准误差被定义为轴上视场追迹的主光线的半径坐标除以 有效焦距。这个定义产生了象的角度偏离的一个测量。ZEMAX 通过仅仅 使用一个BSER 操作数(关于BSER的详细内容可参见优化一章)来模拟瞄 准误差。任意元件或者表面的偏心或者倾斜都将趋向于偏离主光线和增 加BSER 操作数的值。瞄准误差总是在主波长处被计算的,以弧度表示。 这个标准仅仅被那些半径对称系统所使用。注意,瞄准误差没有给出象 质的指标;它仅仅是轴上光线偏离的一个测量。 用户过程:一个用户过程是一个宏,象一个命令文件,它在公差规定 过程中定义了用作镜头的校准和评估的过程。关于这个选项的详细内容, 可以参见这一章后面的“公差过程的使用”部分。

模式:模式是灵敏度或者反转灵敏度。灵敏度分析计算了对应于每个
公差极值的评价函数的变化。反转灵敏度分析计算了每个公差的值,它 导致了由最大标准指定的结果的降低。反转灵敏度模式将改变公差操作

数的最小值和最大值。更多的信息可参见这一章中其它地方的关于“最 大标准”和“反转灵敏度”的描述。

过程:如果要使用用户过程评价函数,这就是这个过程的名称。用户
过程必须是一个以扩展名TSC 结尾的ASCII 码文件,必须在与可执行的 ZMEAX.EXE 程序相同的目录中。

MTF 频率:如果MTF 被选择作为一个评价,那么这个控制是起作用的,
被用来作为MTF 频率的定义。MTF 总是在象空间中被测量的,以线对每 毫米表示。

最大标准:在使用反转灵敏度模式时,这个控制是起作用的,被用来
定义对于反转公差计算的可接受结果的限制。例如,假设评价是RMS半径 尺寸,一个系统的名义RMS 为.035mm。如果最大标准被设为0.050,那么 ZEMAX 将计算每个公差的最小值和最大值,它将结果降低称为一个值为 0.050 的RMS 斑点尺寸。最大标准必须表现出比名义系统所要求的更差 的结果。当使用MTF 作为一个评价,则最大标准是更低的MTF 范围,因 为更低的数值象征着更差的结果。可以通过按下在最大标准编辑窗口附 近“?”来计算当前选择的标准的名义评价函数。

视场:通常来讲,用作优化和分析的视场定义对于公差规定是不适合
的。例如,一个旋转对称镜头可以使用0、7、和10 度的视场定义。 对于公差规定目的,当分析倾斜或者偏心公差时,视场定义的对称性 的缺乏可能会导致错误的结果。当为公差规定而构建一个评价函数时, ZEMAX 可以使用三个不同的视场设置:

Y 对称:ZEMAX 计算最大的视场坐标,然后仅仅在Y 方向上的+1.0、 +0.7、0.0、-0.7、和-1.0 乘以最大视场坐标处定义新的视场点。X 方 向的所有值全都被设为零。这对于旋转对称镜头是默认的。 XY 对称:类似于Y 对称,只不过这里要使用9 个视场点。那5个Y 对 称点被使用,仅仅在X 方向上增加了-1.0、-0.7、+0.7、和+1.0。 用户自定义:使用在当前镜头文件中存在的视场定义。当使用渐晕因 子、规定多重结构镜头的公差、或者使用公差过程时,需要这个选项。 当规定非旋转对称镜头或者带有复杂的视场权重的镜头时,也高度推荐 使用用户自定义视场。 如果用户自定义视场被使用,则将不执行权重的调节。对于Y 对称情 况,中心点有一个2.0 的权重,其它所有的点都有一个1.0 的权重。 对于XY 对称,中心点有一个4.0 的权重,其它所有的点为单位量。

采样:采样被用来设置在计算公差评价函数时要追迹多少条光线。越
高的采样追迹越多的光线,给出越好的结果。然而,执行时间也将增加。 通常,一个3 的采样对于光学系统的质量来说时足够了的。有高的象差 数量的系统要求的采样比低象差的系统要高。 决定最好的采样设置的最可靠的方法是先在采样为3 的情况下运行, 然后再在采样为4 的情况下运行。如果结果有适度的改变,则使用高的 设置。如果它们有较大的改变,则要检查更高的采样设置。如果结果改 变不多,则返回到较低的采样。设置比要求更高的采样只会增加计算的 时间,而不会增加结果的精确性。

执行灵敏度:如果这个选项被选中则将执行灵敏度(或者反转灵敏
度)分析。如果这个选项没被选中,则它将绕过灵敏度部分和过程,直 接到Monte Carlo 模拟。

优化循环#:这决定了ZEMAX 将如何严格地努力去优化补偿值。如果
被设为自动,则ZEMAX 将调用“自动”模式的优化,它将运行优化,直 到补偿的优化已会聚于一点了。对于粗略的公差规定,可以使用低的数 值,如1、2、或者3。如果补偿是很难优化的,则一个较高的设置将会提 高精度。如果选择了太少的优化循环,则公差将是比较讨厌的;预知的 结果将比实际结果要差。“自动”设置用起来是最安全的。较高的设置 是以运行时间为代价来提高精度的。仅仅在快速模式被关闭时采用这个 选项。

显示描述:如果被选中,每个公差操作数的意义的一个完整描述将在
分析报告中被提供。如果没被选中,则仅仅列出公差操作数的缩写。 显示补偿:系统默认,在灵敏度分析过程中补偿不会被打印出来。如 果这个选项被选中,每个补偿值将和每个公差在评价函数中的变化一起 被打印出来。

Monte Carlo:这个控制被用来指定将要执行多少Monte Carlo 模拟。
20 的默认设置值将产生20 个符合指定的公差的随机镜头。更详细的 内容可参见“Monte Carlo 模拟”部分。Monte Carlo 运转的数目可以 被设为零,这将从摘要报告中省略Monte Carlo 分析。

统计:选择高斯“正态”分布、“均匀”分布、或者“抛物线”分布。
这个设置仅仅被Monte Carlo 分析使用;参见关于统计模式和“STAT” 命令的详细说明,这个命令提供了对使用的统计模式的详细控制。

保存MC 运行:这个选项被用来保存在Monte Carlo 分析过程中产生
的指定数目的镜头文件。这个值指定了被保存的镜头文件的最大个数。 例如,假设选择了20。在产生第一个Monte Carlo 镜头之后,这个镜头 文件将被保存到文件MC_T0001.ZMX 中。第二个MonteCarlo 镜头文件将 被产生,然后被保存到文件MC_T0002.ZMX 中,等等。仅仅开始的20 个 Monte Carlo 镜头被保存(最后一个是MC_T0020.ZMX)。如果少于20 个 的Monte Carlo 运行被要求,则保存少于20 个的镜头。要确保你没有名 为MC_Txxxx.ZMX 的镜头文件,因为当这些文件被保存时ZEMAX 将覆盖这 些文件,而没有警告。 这个特性的目的是为了进一步研究由Monte Carlo 特性产生的镜头。

结构#:对于多重结构镜头,这指出了哪个结构将被用来规定公差。
仅仅选择的结构才被考虑,这个结构的编号将在最后的报告中被打印 出来。如果选择了“所有”,则所有的结构将被同时考虑;在这种情况 中,仅仅允许使用一个用户自定义评价函数和用户自定义视场。 隐藏除最差外的其它所有:如果选择了,则所有的灵敏度数据的打印 都将被关闭。这对于减小输出报告的尺寸是很有用的。“隐藏”选择栏 通常与“显示最差”控制联系起来使用。“显示最差”控制可以被设置 来仅仅分类和显示一定数量的公差操作数;这允许仅仅打印输出最严格 的公差的限制。

显示最差:参见上面的“隐藏除最差外的其它所有”。 单独列出视场:当被选择时,ZEMAX 将分别对每个视场点列出预报
结果。这允许将镜头结果作为一个视场位置的函数来详细检查。对于每

个视场点在Monte Carlo 分析中的标准、最好、最差、平均、和标准偏 离都将被列出。

强制光线瞄准:如果被规定公差的镜头已经使用了光线瞄准,则在
估计公差时将使用光线瞄准。如果光线瞄准没有使用,则仅当选择了这 个选择栏时才使用光线瞄准。通常,光线瞄准的使用将产生更精确的结 果,但计算速度也更慢。对于初步或者粗略的公差工作,将这个开关拨 向默认值“关闭”,但对于最后或者精确的公差工作,则将这个开关设 为“打开”。

覆盖MC 图表:如果被选择了,对于每个Monte Carlo 产生的镜头,
每个打开的分析图表窗口(如光线特性图或者MTF 曲线图)都将被更新 和覆盖。对于显示模拟镜头的结果的总的范围,这个最后图表是很有用 的。那些不会自动改变比例的分析图形是最有用的,如MTF、MTF vs. 高 度、能量圈、和其它允许用户定义固定比例的图表,如光线特性图。静 态、文本、和编辑窗口不会被更新。在公差分析完成以后,被覆盖的图 形窗口将被标记作为静态窗口。对于每个MC 镜头来计算每个分析图表的 时间将明显地减慢公差分析的速度。

状态:在公差分析的计算过程中,公差法则用这个控制被来提供状态
信息。 在这个对话框的底部也有六个按钮: OK:使用当前的选项来执行公差分析。 Cancel:不执行公差分析而退出这个对话框。 Terminate:终止公差分析。

Save:保存当前选择的选项,以供进一步使用。 Load:恢复前面保存的设置。 Reset:将设置恢复为默认值。 一旦所有的选项都被选择好了,按下OK 以开始公差分析。关于计算方 法的详细内容在下一节中被提供。

ZEMAX 是如何计算公差分析的
ZEMAX 通过将这个镜头保存到一个临时文件中来开始公差分析, 在公差分析完成以后这个临时文件将被用来恢复这个镜头。在公差规定 中所作的所有改变最后都将被丢弃,最初的镜头文件将不作修改地被恢 复。例外情况是在反转灵敏度分析过程中,在那里公差数据最小和最大 限制可以被改变。 然后ZEMAX 将取消所有的变量。求解可以被留下来,然而,求解可能 会在公差规定过程中导致一些问题;更多的信息可参见这一章后面的“带 有求解的公差规定”部分。 公差操作数被读取,以及由指定的COMP 和CPAR 定义的补偿参数被设 为变量。如果使用了一个公差过程,则在这个公差规定过程中定义的补 偿可以被修改。 如果在被规定公差的镜头中,光线瞄准是被打开的,或者如果“强制 光线瞄准”开关被选择了,那么在公差的估计中将使用光线瞄准,否则, 光线瞄准将被关闭。使用光线瞄准计算的公差是更准确的,但执行速度 也较慢。关于光线瞄准的详细内容可参见“系统菜单”一章。 然后ZEMAX 使用在公差对话框上的评价、视场、MTF 频率、和采样设 置来为公差规定定义一个适当的评价函数。由于这是仅仅对这个临时文 件所做的,所以为这个镜头所作的原始评价函数不会被扰乱。 边界约束被加到评价函数中来将补偿限制到使用COMP 和CPAR 命令指

定的最小和最大边界内。如果使用了一个用户自定义评价函数,或者如 果快速模式是打开的,则关于补偿的边界约束被忽略。 然后ZEMAX 调用优化函数对于定义的补偿来查找最好的值。然后保存 最后的镜头文件,以供公差规定法则后面使用。如果快速模式是打开的 (见下),则仅仅调整后焦距,而不是优化这个镜头。 这个镜头的评价函数被认为是“名义”评价函数。注意,这个名义评 价函数值与在优化或者评价函数编辑窗口中被报告的评价函数值通常是 不一样的,因为ZEMAX 仅仅为公差规定的使用构建了一个新的评价函数。 然后ZEMAX 继续运行灵敏度、反转灵敏度、或者Monte Carlo分析,如 下所述。

模式 快速公差规定模式
对于公差的评估,ZEMAX 有两种方法:快速和标准。如果“快速公差” 模式被选择,则要采取几个假设,这将大大加快公差评估的速度。首先, 所有定义的补偿和补偿边界约束全都被忽略掉。使用一个简单的焦距误 差求解来将后焦距作为一个补偿来执行。这意味着这个焦距要被调整来 保持这个名义镜头设计中离焦数量,而不会努力将后焦距重新优化地正 好。 这些假定大大加速了公差评估,导致这个分析提高了大约50 倍的速 度。如果后焦距是唯一被要求的补偿,则快速模式是高精度的;具有代 表性的是,快速模式的结果在慢得多的标准模式的结果的几个百分数。 如果快速模式没有被打开,则ZEMAX 将使用优化法则来寻找所有补偿 的最好的值。 如果后焦距是唯一的补偿,则快速公差模式是非常快的、正确的、而

且应该被使用,这个系统可以被近轴光线描述得很好,如果那些旋转对 称的系统。如果系统是高度非对称的或者有多个补偿,则不应该使用快 速公差。当搞不清楚时,则可运行两种模式,然后比较结果。 在快速模式打开或者关闭时,灵敏度、反转灵敏度、或者MonteCarlo 分 析法则都可以工作。由于快速模式不能很好地优化补偿,所以快速模式 的结果通常比标准模式的结果要麻烦一点。

分析法则 灵敏度分析
对于灵敏度分析,将使用下面的法则对每个公差进行独立求值:恢复 临时镜头。 将其公差要被评估的参数调整到极小值。例如,如果被评估的公差是 TRAD,其名义值为100mm,有一个为-0.1 的最小公差值,则这个半径被 设为99.9。如果这个公差是一个倾斜或者偏心公差,则要按要求插入虚 TSTY、TIRX 或者TIRY,如果这个表面开始是一种标准类型,则将使用不 规则表面类型。 调整补偿。使用的方法依赖于快速模式是否被打开,详细内容可参见 这一节的前面部分。 最后的评价函数将被打印到报告上。 对于最大公差值重复这个过程。 对于每个公差操作数来说,这个基本法则是重复的。 灵敏度分析的评价是在增加评价函数值方面,太宽松的公差通常比其 它公差要有更大的贡献。这个技巧允许设计者来识别对于某些误差,如 倾斜或者偏心,有高灵敏度的表面。通常,对于不同的误差,不同的表 面也将有不同的灵敏度。灵敏度分析帮助来识别哪个公差需要被加紧,

拟坐标断点来模拟这个波动。对于表面倾斜和偏心,如TSDX、TSDY、TSTX、

哪个公差需要被放松。这对于寻找最佳(和最小)的补偿的数量和调整 的要求范围也是有利的。实际上,对于这个特性有更多的应用程序;例 如,设计装配镜头来最佳化补偿杠杆。 灵敏度分析帮助来识别哪个公差需要被加紧,哪个公差需要被放松输 出的数量可以是最重要的,尤其对于有许多元件和相应的许多公差的镜 头。通常,在所有可能的公差范围内,公差灵敏度的变化是非常大的。 “显示最差”控制对于总结最差的事故是非常有用的,因为它可以根据 对评价函数的贡献将公差分类,然后以递减的次序打印出来。如果只关 心最差的事故,则“隐藏除最差外的其它所有”可以控制打印的大小。 在计算完所有单独的公差以后,ZEMAX 然后将计算统计的变化,其最 重要的是在评价函数标准中可估计的变化和相应的可估计的结果。对于 结果中可估计的变化的计算,ZEMAX 采用了一个平方根的和的平方(RSS) 的假设。对于每个公差,结果相对于名义值的变化被平方,然后在最小 和最大公差值之间取它们的平均值。然后将所有的公差的这个最后被平 均的平方值加起来,再取这个结果的平方根。 采用最小和最大公差值的平均值是因为最小和最大公差值不能同时出 现,因此平方值的总和将导致一个非常讨厌的预报。而这个最后的RSS 是 结果的可估计的变化。

反转灵敏度分析
如果执行一个反转灵敏度分析,则将以和灵敏度分析所采用的一样的 方法来计算公差。然而,当在最小和最大公差值之间作调整时,将在一 个循环体内重复地执行这个计算。这个调整将一直做,直到最后的评价 函数值近似等于在公差对话框中定义的最大标准值。 例如,如果评价为RMS 斑点尺寸,名义评价值为0.035,最大标准为 0.050,则ZEMAX 将一直调整最小和最大公差值,直到在这两个极值处这

个评价值为0.050。这里有一些这个规则的异常情况: 最大标准必须象征比名义结果更差的结果。如果名义结果比最大标准 差,则将出现一个错误信息,公差分析不再被执行。 如果最小和最大公差值调整导致了比名义系统更好的结果,则这个公 差设置不能被修改,将报告这个最后的更好的结果。在规定半径公差的 时候,当系统由于F/#的增加而改善时,这种情况可能会发生。 如果公差的起始值产生了比最大标准值更好的结果,这个公差不再被 调整。这意味着在反转灵敏度分析过程中,公差不会被放松,只能被收 紧。例如,如果名义值为0.035,最大标准为0.050,最初的公差产生一 个0.040 的结果,则这个公差不会被增加。为了计算准确的限制,首先 必须在公差数据编辑界面中放松公差,然后重复反转灵敏度分析。这样 做是为了防止公差比必要的公差还要松。通常,比一些合理的数值更松 的公差不会降低制造成本。 使用新调整的公差值来计算可估计的结果变化,其方法与对灵敏度分 析所用的是相同的。反转灵敏度分析有利于收紧单独的公差,所以没有 一个缺点对于结果降低有太大的贡献。 反转灵敏度分析有利于收紧单独的公差,所以没有一个缺点对于结果 降低有太大的贡献 注意,对于每个公差独立计算它的反转灵敏度的最大标准限制。 结果估计的总体降低仍将有所有独立增加的RSS 给出。

Monte Carlo 分析
与灵敏度分析和反转灵敏度分析不同,Monte Carlo 分析将同时模拟 所有波动的效果。 Monte Carlo 分析将同时模拟所有波动的效果对于每个Monte Carlo 循环,所有已指定公差的参数都可以由其定义的参数范围和那个参数对

于整个指定范围的一个分布的统计模式来随机设定。系统默认,假设所 有公差都遵循相同的正态分布,它在最大和最小允许极值之间有一个四 倍标准偏离大小的总宽度。例如,公差为+4.0/-0.0mm、值为100mm 的半 径将被赋予在100.00mm与104.00mm 之间一个随机值,一个居中的在 102.00mm 处的名义贡献,和一个1.0mm 的标准偏离。 可以使用STAT 命令来改变这个默认的模式。每个公差操作数对于这个 统计分布可以有一个独立的定义,或者有相同统计分布形式的操作数可 以被分成一组。所有跟有一个STAT 命令的公差操作数将使用由那个STAT 命令定义的统计分布。可以在公差数据编辑界面中放置和你想要的一样 多的STAT 命令。 STAT 命令采用两个自变量,Int1 和Int2。Int1 将被设为:0 代表正 态;1 代表均匀;2 代表抛物线;3 代表用户自定义统计。仅仅对于正 态统计,Int2 值将被设为那个参数的平均值和极值之间的标准偏离值。 有效的统计分布介绍如下。

统计分布 正态统计分布
默认的分布是一个可修改的高斯“正态“分布,其形式为:

这个修正是随机选择的值x(由到两个极值公差值之间的中点的一个偏 移来测定)被限制在“n”个为零标准偏离之内。默认的“n”只为2,然 而,“n”可以使用前面定义的STAT 命令的Int2 自变量来改变。这样做 是为了确保选择的值不会超出指定的公差。这个标准被设为“n”的倒数 乘以这个公差的最大范围的一半。例如,如果“n”为2,厚度的名义值

为100mm,公差为+3 和-1mm,则应该从一个平均值为101mm、范围为正负 2mm,标准偏离为1.0mm 的正态分布中摘取这个选择值。如果“n”为5, 则这个标准偏离为0.4。“n”越大,选择的值靠近公差极值的平均值的 可能性就越大。“n”越小,正态分布看起来就越象均匀分布。

均匀统计分布
均匀分布的形式为:

Δ值为最小和最大公差值之间的差值的一半。注意,这个随机选择的 值将以相同的概率分布在指定的公差极值之间的任意地方。

抛物线统计分布
抛物线分布的形式为:

这里Δ的定义与均匀分布的完全相同。抛物线分布产生的选择值看起 来更象在公差范围的极值处得到的,而不是象正态分布那样在中值附近。

用户自定义统计分布
用户自定义统计分布是由一个带有列成表格的分布数据的ASCII码文 件来定义的。一个普通的概率函数可以被定义为: 这里T 值相对于离散的x 值被列成表格。这个普通的分布可以在数学

上被结合起来,以及从这些表格值的整体来说,一个可估计的x 值可以 与表格分布象匹配的统计形式随机产生。这个文件的格式是两栏数据, 如下:
X1 T1 X2 T2 X3 T3 ……等等。

这里X 值是0.0 和1.0 之间的单调递增的浮点数,包括这两个数,T 是对应于X 值而得到的概率。注意,ZEMAX 使用了一个覆盖从0.0到1.0 的范围的一个概率分布,因此第一个定义的X1 值必须等于0.0(它可以 有任意的概率T1,包括零),最后一个定义的值必须是值为1.0 的Xn。 最多可以使用200 个点来定义X=0.0 和X=1.0 之间的分布。如果列出了 太多的点,则将出现一个警告。 对于后面定义的每个公差操作数(直到到达另一个STAT 命令),这个 定义的最小和最大公差值将决定这个随机变量X 的实际范围。例如,如 果一个为100.0 的值有一个-0.0 和+2.0 的公差,则这个概率分布将扩 展到100.0 到102.0 的范围。 一旦在一个文件中定义数据,则这个文件必须被放在与ZEMAX程序相同 的目录中,这个文件名(以及扩展名)必须被放在公差数据编辑界面中 的与STAT 命令同行的注释栏中。这个STAT 类型必须被设为“3”。 这个文件名(以及扩展名)必须被放在公差数据编辑界面中的与STAT 命令同行的注释栏中一个可能的分布为:
0.0 0.0 0.1 0.5 0.2 1.0 0.3 0.5 0.4 0.0

0.5 0.5 0.8 4.0 1.0 5.0

注意,X 数据值不需要被均匀隔开;在概率快速变化的区域内可以用 更精密的间隔。这个分布有两个波峰,较高的波峰更高度倾斜向分布的 最大值一边。 用户自定义统计分布是非常灵活的,可以被用来模拟任意一种概率分 布,包括歪斜的、多个波峰、或者被测量的统计概率数据。在一个相同 的公差分析中可以定义和使用多个分布。

Monte Carlo 分析方法 说明
注意,从正态分布到均匀分布再到抛物线分布,将连续产生一个更讨 厌的分析,因此将产生更保守的公差。 注意,从正态分布到均匀分布再到抛物线分布,将连续产生一个更讨 厌的分析,因此将产生更保守的公差对于每个循环,将调整补偿,然后 将这个评价函数和补偿的数值打印出来。在所有的Monte Carlo 试验之 后,将提供一个统计概要。 Monte Carlo 分析的值将同时考虑所有的公差来估计镜头的性能。与 在系统中指定了“最差事故”的灵敏度分析不同,Monte Carlo分析估计 一个系统的符合指定公差的真实结果。提供的统计概要对于那些被大量 生产的镜头系统是非常有用的。那些是一种性质的镜头,由于不合理的 采样,当然不会遵循这些统计。然而,Monte Carlo 分析仍然是有用的, 因为它指出了一个单一镜头符合要求的规格的概率。

Monte Carlo 分析嵌套规则

当执行Monte Carlo 分析时,将同时考虑所有公差。如果不遵循一定 的规则,可能发生的情况是,定义的元件的倾斜和偏心操作数是相冲突 的或者是不明确的。 公差,如TEDX、TEDY、TETX、或者TETY,要求ZEMAX 在表面组的前面 和后面插入坐标断点,然后将这个表面组作为一个整体来倾斜或者偏心。 由第一个坐标断点所作的倾斜或者偏心必须由第二个坐标断点来撤消。 仅仅当第一个和第二个坐标断点的顶点在3D 空间的相同位置时才能做 到这一点。ZEMAX 通过拾取和位置求解来保证这个条件。 如果由多个公差操作数指定的表面范围交迭一起,则这个方法将失败。 例如,如果在表面3~8 上有一个TETX,在表面5~12 上有后一个TETX,则 倾斜了5~12表面组的第一个坐标断点将改变表面5~8的位置,第一个表面 组的第二个坐标断点将被移动。在这种情况中,ZEMAX 不能保证坐标断 点能象事先想好的那样工作。实际上,交迭的坐标断点没有一个统一的 解释,因此要去想象一个光学系统,在这个系统中它们有一个有意义的 物理解释,这是很难的。 然而,公差是可以被嵌套的,因为嵌套对于倾斜和偏心意味着一个明 确的顺序。例如,在表面5~12 上的TETX 后面跟着在表面5~9上的TETX 和 在表面10~12 上的TETX,是可以很好被执行的。这个顺序可以模拟一个 有多个元件组成的装配的倾斜,每个元件可以在这个装配中自行倾斜。 嵌套规则是非常简单的: 1) 所有元件的倾斜和偏心公差必须被嵌套。 2) 在每个嵌套组中的最外面一对表面必须是第一个。 这是一套有效的操作数的例子:
TETX 5 12

TETX 5 10

TETX 11 12 这是一套无效的操作数: TETX 5 12 TETX 9 15 TETX 5 15 第二个操作数是无效的,因为它部分与第一个操作数交迭(这违反了规则1)。 第三个操作数是无效的,因为虽然它与操作数1 相嵌套,但它是两个操作数的 最外面的范围(这违反了规则2)。第二个操作数必须被删除或者修改,而第三 个操作数可以被放在第一个操作数的前面来构造一个合法的列表: TETX 5 15 TETX 5 12

注意,尽管一个操作数与前面的一个操作数分享一个或者两个表面限 制,但它被认为是嵌套的,因此TETX 5-15 后面可以跟另一个TETX 5-15 或者TETX 5-12 或者TETX 13-15,但不能跟TETX 4-13。

公差过程的使用
这个特性仅对ZEMAX 的EE 版本才有效

公差过程概述
公差过程是一个简单的宏,象一个命令文件,它定义了一个过程,按 照它在公差规定过程中来评估一个镜头的性能。过程允许模拟一个镜头 的一个复杂校准和评估过程。使用过程,可以采用下面的行动来一个有 问题的镜头: —增加或者删除补偿。 —载入一个新的评价函数。 —使用任意的评价函数来优化定义的补偿。 —监控和报告ZEMAX 通过一个评价函数能计算的任意一个值(由于这 个评价函数调用了ZPL 宏指令,所以这实际上包括了ZEMAX 可以计算任

意一个值)。 —将在分析的任意一个阶段中的镜头保存为一个ZMX 文件。 可以将任意多的这些操作组合到过程中;因此可以定义多个评价函数 和补偿组。在公差分析的评估过程中可以多次执行这个过程,包括: —一次计算名义数据。 —对于在灵敏度分析中的每个公差操作数计算两次(一次对于最小公 差,一次对于最大公差)。 —对于在反转灵敏度分析每个公差操作数计算多次(反转灵敏度分析 可能需要反复计算)。 —对于产生的每个Monte Carlo 镜头计算一次。 公差过程文件必须是以扩展名TSC 结尾的ASCII 码文件,必须被放在 与ZEMAX 程序相同的目录中。任意一个引用的评价函数(有MF 扩展)也 必须被放在这个目录中。

公差过程命令
公差过程命令被定义和说明如下。 ! 语法结构:!一个注释行! 符号“!”被用来在过程的执行过程中被忽略的过程中定义注释。 CEDV 语法结构:CEDV surf param CEDV 定义了一个新的特殊数据值补偿。值“surf”是在初始镜头文件 中的表面编号。如果公差程序插入了另外的坐标断点或者其它虚拟表面, 则ZEMAX 将自动给表面重新编号。值“param”对应于这个表面的某个特 殊数据值的编号。 CLEARCOMP 语法结构:CLEARCOMP

CLEARCOMP 取消了当前所有的补偿。在调用命令OPTIMIZE 之前必须定义新的补偿。 CMCO 语法结构:CMCO operand config CMCO 定义了一个新的多重结构操作数补偿。值“operand”是在原始 镜头文件中的操作数(行)编号。值“config”对应于结构编号。 COMP 语法结构:COMP surf code COMP 定义了一个新的补偿。值“surf”是在原始镜头文件中的表面编 号。如果公差程序插入了另外的坐标断点或者其它虚拟表面,则ZEMAX 将 自动给表面重新编号。值“code”为:0 代表厚度;1代表曲率;2 代表 圆锥常数。 CPAR 语法结构:CPAR surf param CPAR 定义了一个新的参数补偿。值“surf”是在原始镜头文件中的表 面编号。如果公差程序插入了另外的坐标断点或者其它虚拟表面,则 ZEMAX 将自动给表面重新编号。值“param”对应于这个表面的某个参数 的编号。 LOADMERIT 语法结构:LOADMERIT filename.mf MF 文件必须驻留在与ZEMAX 相同的目录中。这个文件的格式应该是和 使用评价函数编辑界面的工具、保存选项保存的一样的正确的文件格式。 当评价函数被载入时,它取代了任意一个已存在的评价函数。如果公 差程序插入了另外的坐标断点或者其它虚拟表面,则ZEMAX 将自动给那 些涉及到表面的操作数重新编号。任意涉及到表面编号的操作数应该是 原始的、未被改变的镜头的表面编号。然后对新的评价函数进行评估。

最后的评价函数值是要作为“评价函数”被返回到公差分析程序的值, 除非后面执行了一个LOADMERIT 或者OPTIMIZE命令。 OPTIMIZE 语法结构:OPTIMIZE n OPTIMIZE 调用了最小阻尼二乘法优化程序,并执行“n”个优化循环。 如果n 为零或者被忽略,则优化程序将以自动模式运行,当探测到收敛 时终止优化。 REPORT 语法结构:REPORT “text” operand REPORT 将把任意用户定义的文本和当前载入的评价函数中任意操作 数的值打印到公差输出窗口中。值“operand”是一个对应于要被打印的 值的操作数(行)编号(注意,任意一个值都可以在一个评价函数中被 计算,如果它不需要优化,则可以将它的权重设为零,但对于报告仍然 有效)。如果操作数为零,那么整个评价函数的值将被打印出来。 SAVE 语法结构:SAVE n SAVE 将把当前镜头文件保存到一个ZMX 文件中;其名称为 TSAVnnnn.ZMX,这里nnnn 是表示数值“n”的一个四位数整数。 如果,如果“n”为6,则这个文件将被保存为TSAV0006.ZMX。

公差过程的例子
作为一个例子,假设一个光学系统是由多个镜头元件组成的。作为校 准和评估过程的一部分,这个系统被调整如下: 将编号为2 的元件偏心,直到一个轴上测试光束在象的中间。 然后将编号为4 的元件沿轴偏移,直到得到合适的放大率。 最后,调整后焦距,仅仅用来最佳化轴上MTF。 然后测量和记录畸变。

求出在5 个视场点的MTF。 假设使用一个已存在的坐标断点,表面3 的参数1 和参数2 来偏心编 号为2 的元件。元件4 的位置为厚度10,以及后焦距为厚度15。 此外,假设使一个轴上光线在象面中间的一个评价函数被定义在文件 为文件MTF.MF , 评估的评价函数为文件EVALUATION.MF。相应的过程如 下: ! 清除所有已存在的补偿,作为一个新的开始 CLEARCOMP ! 载入中心评价函数 LOADMERIT CENTER.MF ! 定义两个补偿来偏心元件2 CPAR 3 1 CPAR 3 2 ! 优化4 个循环 OPTIMIZE 4 ! 清除偏心,载入放大率评价函数,调整厚度10 CLEARCOMP LOADMERIT MAGNIFY.MF COMP 10 0 OPTIMIZE 4 ! 现在,载入MTF 评价函数,并调整后焦距 CLEARCOMP LOADMERIT MTF.MF COMP 15 0 OPTIMIZE 4

CENTER.MF 中,放大率约束的评价函数为文件MAGNIFY.MF,MTF评价函数

! 最后,载入评估评价函数,并报告畸变和5 个MTF 值 ! 这些应该是EVALUATION.MF 文件中的前6 个操作数 CLEARCOMP LOADMERIT EVALUATION.MF REPORT “Distortion =” 1 REPORT “MTF at field 1 =” 2 REPORT “MTF at field 2 =” 3 REPORT “MTF at field 3 =” 4 REPORT “MTF at field 4 =” 5 REPORT “MTF at field 5 =” 6 在这个过程的最后,由最后的LOADMERIT 或者OPTIMIZE 命令中引出的 整个评价函数值将作为ZEMAX 报告和使用的“评价函数”被返回。

多重结构(变焦)镜头的公差规定
可以对一个多重结构镜头的每个结构进行公差分析。可以简单地从“结 构#”的下拉框选择要求的结构。通常,是没有必要去规定所有结构的公 差,但是这当然也是一个选项。当使用反转公差时,在每个结构中的连 续公差分析将产生共同应用于所有结构的最紧的公差。

带有求解的公差规定
通常来说,你应该在对一个镜头进行公差规定之前删除所有的求解和 变量。如果你有许多以后可能要用到的求解或者变量要删除,则更便利 的方法是将这个镜头文件保存到一个临时文件中,以供公差规定使用。 如果你将求解留在你的镜头文件中,则虽然公差规定仍然可以工作,但 是其结果可能不是你所预期的那样。其原因是当这个光学系统包含了倾 斜的和偏心的元件时,某些求解,如近轴边缘光线高度求解,将不再有 意义了。尽管一个系统最初是旋转对称的,但大多数公差命令,如TETX 和

TETY,将强制使这个系统变成非旋转对称。 拾取求解也可能导致奇怪的结果,因为当插入或者删除坐标断点时, 公差规定法则有时将用到表面描述数据(如厚度)。对于位置求解也有 同样的限制,当镜头数据被公差规定法则改变以后,它可能不再工作。 然而,在有些场合里一个拾取求解是你真的想要的。例如,如果你正 在以双通过模式使用一个镜头,一个元件的倾斜意味着后面一个镜头的 倾斜,那么可以使用一个拾取求解来拾取前一个元件的倾斜。 对于这种特殊情况,你必须使用命令TUTX 和TUTY,而且默认公差将不 再工作。如果在系统中你有这些类型的求解,则要忽略警告“在公差规 定之前要删除求解”。

公差结果的故障
参见关于SAVE 命令部分的说明。 如果任意一个被计算的公差数据,如评价函数和百分数变化,显示了 一个“无穷大”的值,那么这意味着对于指定的公差,这种评价函数不 能被评估。通常这种评价函数是不能被评估的原因是由于一些光线目标 的全反射。如果任意公差有一个无穷大的评价函数,则遵循灵敏度分析 的统计数据通常是没有意义的。一个解决方案要去掉两个或者多个公差 值的因子,然后再重复这个分析。

公差规定的缺陷
当使用倾斜公差,如TETX 和TETY 时,一个可能的错误是光线的非物 理传播。如果两个元件是由一个非常小的空气间隙或者虚拟表面隔开的, 则默认公差将独立包括每个元件的倾斜。如果元件的间隔是小的,则一 个元件绕着它与其它元件“相接触”的点倾斜是可能的。 然而,这实际上是不可能发生的,对于少量的倾斜,这个公差值仍然 是性能的一个好的指示。 因为公差程序倾斜和偏心了一个镜头,则这个法则将自动将光线瞄准

变成“打开”(关于光线瞄准的详细内容可参见“系统菜单”一章)。 如果公差法则报告的名义评价函数与预期值是不一样的,则可检查来看 看在这个镜头文件中,光线瞄准是否“关闭”。试着使用“打开”的光 线瞄准,再重新优化。通常,如果当光线瞄准打开和关闭时的评价函数 有很大的差别,那么就让它打开。

摘要
公差程序是非常灵活和强大的。ZEMAX 不使用近似值、推断法、或者 估计来计算公差。由于这个原因,它对于传统的和复杂的系统两者都给 出了有用的结果。要认识到公差规定是一个非常复杂的过程,ZEMAX 用 来操作镜头数据的法则不是确实可靠的,这一点非常重要。 因此,检验程序是否在计算一个合理的结果,这是设计者的责任。

第二十章 多重结构
介绍
ZEMAX 提供了一个非常普通的功能,用来定义、分析、和优化在多重 结构中使用的光学系统。多重结构用来设计变焦镜头,或者优化在不同 波长上测试和使用的镜头,或者指定一些用在不同结构的光学系统。和 其它ZEMAX 特性一样,多重结构被结合得很好。然而,像公差一样,精 通它需要更多一点的注意和实践。 ZEMAX 使用一个简单的说明来学习定义多重结构的输入过程。这些结 构通过同一个参数的不同值来区分。例如,在一个变焦镜头中,不同透 镜组之间的间隔可以取多于一个的值。每一批一起使用的值形成了一个

结构。 到目前为止最重要的步骤是,先用普通的ZEMAX 模式来定义一个结构。 先以最复杂的结构开始是一个好的主意。如果所有的结构都有着同样数 量的单元,则可以选取其中的任何一个结构。一旦你有了定义好的基本 结构,现在应该定义新的结构,他们是第一个的变异形式。 第一个结构也不需要被优化,你可以后面一起来优化这些结构。 从主菜单条中选择编辑,多重结构。显示的电子表格是多重结构编辑 界面(MCE)。使用MCE 的菜单条,结构(列)和操作数(行)都可以被 插入和删除。这个插入和删除键也可以增加和删除新的操作数行。只要 你保存你的镜头文件,输入到MCE 中的数据将被自动保存。 为了改变操作数类型,在类型列上双击。将显示一个对话框,在这里 多重结构操作数的类型和数值都可以被改变。这些操作数也在下面的表 格中被概述。 多重结构操作数的概述

结构数目的定义
结构数目(也称变焦位置的数目)可通过使用编辑菜单选项插入或者 删除结构来改变。

每个结构的定义
为了定义一个多重结构操作数,在你想要改变的操作数的名称上双击 (这些名称在最左边一列中列出)。例如,假设你想要给表面5 的厚度 输入一个多重值。假定你想要三个不同的结构。使用编辑菜单插入2 个 新的结构。在第一行的最左边一列上双击。在对话框的下拉表中选择 “THIC”作为操作数类型。选择“5”作为表面编号,然后点击OK 按钮。 现在在每个结构列中输入那个结构所需要的厚度。

增加和删除单元
多重结构特性的一个应用是去设计用或者不用现存的某些单元来操作 的系统。这可以通过手动在一些结构中构造“幻影”单元来实现。 其诀窍是将单元(实际上是单元的第一表面)定义成有一个随结构而 变化的玻璃类型。假设在结构1 中一个单元是存在的,由玻璃BK7构成; 在结构2 中,这个单元不存在。使用操作数GLSS,对于结构1 输入“BK7”, 让结构2 的这个区域空着。虽然定义这个单元的表面在镜头指示中仍然 存在,但是它们是无效的,因为它的玻璃已被删去(这个单元变成一对 虚拟的表面)。注意,在所有的结构中表面的编号必须保持是一常数。

结构的改变
执行任何分析,这和平常一样。对于所有的计算和图表,这个程序将 使用当前的结构。为了改变结构,在MCE 中该列的标题上双击,这个标 题在你想要改变的结构的顶部。快捷键是Ctrl-A,shift-Ctrl-A 也能起 作用。

利用多重结构的优化

ZEMAX 优化多重结构数据与优化其它常规电子表格数据一样容易。为 了将一个多重结构参数变成变量,可以将光标放在那个参数上,然后按 下Ctrl-Z。这是一个切换器;再次按下Ctrl-Z 将除去其可变性。 当调用优化程序时,优化程序将自动将这个新的变量计算在内。你想 定义多少个多重结构变量,就可以定义多少个。 为了同时优化全部的结构,可以从评价函数编辑界面的工具菜单中简 单地选择“默认评价函数”,ZEMAX 将会为你建立一个适当的评价函数。 使用操作数CONF 将执行对全部结构同时优化。在评价函数的求值过程中 这个特殊的操作数将改变当前结构。这意味着在CONF后面定义的所有操 作数将与这个新的结构有关。在操作数序列中可以 多次使用CONF 来对不同参数进行求值。 边界约束和用户输入的优化操作数将在那些它们被定义的结构中被强 制求值。例如,如果操作数CONF 1 后面跟着多个操作数,如EFFL或者 REAY,那么它们仅仅在结构1 中被求值。为了在结构2 中强制执行这些 同样的操作数,在操作数CONF 2 下将重复这些同样的操作数。 这个体制的优点是,在每个结构中那些输入操作数和它们各自的目标 值和权重可以是不同的。其缺点是要将应用于多个结构的操作数复制到 每个结构中。

对于初始化多重结构的评价函数的建议
这里有两个不同的普通方法来初始化一个多重结构的评价函数。第一 个方法是在默认评价函数的每个CONF 组中添加用户自定义的操作数: CONF1 对于结构1 的用户操作数… 对于结构1 的默认操作数… CONF 2

对于结构2 的用户操作数… 对于结构2 的默认操作数… CONF 3 …等等 另一个方法定义默认评价函数,然后在这个评价函数的上面添加所有 的用户操作数,以保持它们都在一起: CONF 1 对于结构1 的用户操作数… CONF 2 对于结构2 的用户操作数… CONF 3 对于结构3 的用户操作数… 等等… DMFS CONF 1 对于结构1 的默认操作数… CONF 2 对于结构2 的默认操作数… CONF 3 对于结构3 的默认操作数… 等等… 两个评价函数都将完成同样的工作,但是第一种方法执行得更快一些, 因为它减少了结构间转变的操作。第二种方法易于编辑和保持。 注意在用户自定义操作数后面的操作数DMFS 的使用。这个操作数用来 作为一个标记,以至于当默认评价函数被重新构建时,它将被添加在操 作数DMFS 的后面,而用户输入的操作数将不会丢失。

注意,如果你改变了在多重结构界面上的视场的 角度、高度或权重, 或者波长的数值或权重时,你应该重新构建默认评 价函数。当默认评价 函数被重新构建时,它将使用每个结构的这些数据 来决定被追迹的光线 和适当的权重。 注意,如果你改变了在多重结构界面上的视场的 角度、高度或权重, 或者波长的数值或权重时,你应该重新构建默认评 价函数

多重结构数据的求解的使用
在多重结构界面上支持两种求解:从其它操作数 和结构中拾取,它带 有随意的比例因子和补偿,以及热拾取求解。

MCE 拾取求解
假设有三种结构,在其中两个结构中某一行(比 如说是THIC 或GLSS) 的值必须是同一个值。在其中一个结构的该操作数 上使用拾取求解来确 保它们总是相同的。 为了设置拾取求解, 要放置这个求解的行和结 在 构的交叉点上双击。

将出现一个对话框,它允许定义求解类型,目标结 构和操作数,以及比 例因子和补偿。新的单元格的值被定义为:新的值 =目标值*比例因子+ 补偿。注意,只要这个目标结构编号和操作数编号 分别小于当前的结构 编号和操作数编号,则这个目标值可以是MCE 中 的任意其它的单元格的 值。

MCE 热拾取求解
ZEMAX-EE 也支持“热拾取求解”, 它结合了热膨 胀效果;详细内容可 参见“热分析”一章。



更多相关文章:
【ZEMAX光学设计软件操作说明详解】
【ZEMAX 光学设计软件操作说明详解】第二章 用户界面 概述 本章介绍了对 ZEMAX 用户界面进行操作的一些习惯用法, 以及一些常用的窗口操作的快 捷键。一旦您学会了...
实验一_光学设计软件ZEMAX的安装和基本操作
实验一 光学设计软件 ZEMAX 的安装和基本操作一. 实验目的学习 ZEMAX 软件的安装过程,熟悉 ZEMAX 软件界面的组成及基本使用方法。 二. 实验要求 a) b) c) d)...
zemax光学设计软件的使用说明_图文
zemax光学设计软件的使用说明_工学_高等教育_教育专区。光学设计软件简介 光学...2)图形窗口 Layout 生成 dxf 文件 Ray Fan MTF 将物分解为各种空间频率的谱,...
ZEMAX光学设计软件应用训练实验报告
图: 2. 优化及光学性能分析:选择“Editors” ,“ Merit Function” 显示...【ZEMAX光学设计软件操作... 28页 1下载券 喜欢此文档的还喜欢 zemax光学设计...
光学设计软件ZEMAX简明教程
光学设计软件ZEMAX简明教程_信息与通信_工程科技_专业资料。光学设计软件ZEMAX简明...下面将详细介绍各菜单及其子项的使用方法和功能: §2.2 文件菜单的各子项 文件...
光学设计软件zemax中文教程_图文
光学设计软件zemax中文教程_计算机软件及应用_IT/计算机_专业资料。zemax中文教程 注:此版本 ZEMAX 中文说明由光学在线网友 elf 提供!目录第1章 引第2章 用户界面...
光学设计软件Zemax汉语翻译及软件操作说明
(Prescription Data); Boresight erro 视场差 第部分介绍 ZEMAX 光学设计软件操作详解 ZEMAX 使用的大部分习惯用法和术语与光学行业都是一致的,但是还是 有一些...
ZEMAX操作手册 中文说明书 光学 必备软件
ZEMAX操作手册 中文说明书 光学 必备软件_电脑基础知识_IT/计算机_专业资料。第...安装过程 2 在安装 ZEMAX 软件之前,请检查一是否具备上一节所要求的硬件...
ZEMAX中文说明
ZEMAX中文说明_金融/投资_经管营销_专业资料。【ZEMAX 光学设计软件操作说明详解】目录第1章 引第2章 用户界面 第3章 约定和定义 第4章 教程 教程 1:单透镜 ...
zemax光学设计书_图文
应用光学光学工程教研组 2013/9/2 1 前言广东省...课程设计》主要讲解光学系统设计,性能分析和优化方法...设计教 学中完全使用 ZEMAX 软件作为分析和优化工具...
更多相关标签:

All rights reserved Powered by 甜梦文库 9512.net

copyright ©right 2010-2021。
甜梦文库内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图