ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差

本文介绍如何使用 Zemax 编程语言 (ZPL) 创建宏来计算和绘制用户自定义的性能指标。在本示例中,系统的环带垂轴色差 (Zonal Transverse Chromatic Aberration, ZTCA) 将被分析。在解释了需要使用的基本算法之后,本文将描述如何将宏通用化以允许用户进行更加灵活的使用,包括用户输入和错误捕获。 (联系我们获取文章附件)

简介

假设我们要计算系统的环带垂轴色差 (ZTCA)。ZTCA  作为光瞳区域的函数,定义为两个波长在像平面上的光线高度差

ZTCA = YF - YC

基本算法如下:

  1. 定义步进式光瞳区域

  2. 对应追迹每个波长的边缘光线

  3. 减去 y 坐标

  4. 输出结果
我们建议在编写 ZPL 宏时将采用以下编程规范,使宏更易于阅读:
  • 将所有变量写成小写形式
  • 将所有 ZPL 函数和关键字写成大写形式

  • IFFOR循环采用文本缩进

  • 赋予变量有意义的名称 (例如 ray_angle  而不是 a

  • 使用描述性注释(例如使用  ! 或 #

为了使宏更易于阅读,OpticStudio 具有内置的文本编辑器,将语法突出显示:

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图1

初版宏的编写

对于此示例,我们将使用示例文件<Documents>\Zemax\Samples\Sequential\Objectives\ Doublet.zmx。将此文件加载到 OpticStudio 中,然后单击“ 编程“ ( Programming)... 新建宏 (  New Macro)”:

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图2

输入以下代码,以根据之前描述的算法流程来计算环带垂轴色差 (ZTCA) :

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图3

使用功能区上的第二个按钮将宏另存至 <Documents>\Zemax\Macros folder,命名为 “ZTCA1.zpl“。

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图4

然后,从“编程 (The  Programming tab) ”选项卡中,从“宏列表 ( Macro List) ”下拉菜单中选择已保存的宏,或者从“编辑/运行  ( Edit/Run) ”中选择它,然后单击“运行 ( Run) ”。

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图5

运行宏时,将出现一个新的文本窗口,其中包含宏的输出。在本示例中,输出结果为环带垂轴色差 ZTCA ,作为光瞳区域的函数:

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图6

请注意,此宏文件需要基于许多假设,确保宏能够正常运行:
  • 边界波长是 1 和 3

  • 步进数为 10

  • 它仅计算轴上视场的环带垂轴色差 ZTCA

  • 无错误检查功能

    • 如果只有一个波长怎么办?

让我们改进宏,使其可以与其他文件一起使用。

通用宏的编写

用户自定义的步进数

我们可以使用  INPUT 关键字提示用户输入步进数,而不是使用固定值 10。在宏的开头,删除赋值“numsteps = 10”并按如下方式使用  INPUT 

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图7

运行宏时,“ ZPL 宏输入 (ZPL Macro Input) ”窗口将出现:

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图8

IF 语句通过函数  INTE() 测试 numsteps 是否为正整数,该函数将会对数值进行四舍五入。
GOTO 命令 OpticStudio 使用指定的 LABEL 命令将程序跳至某一行(向前或向后)。在这种情况下,我们使其跳到程序的结尾:

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图9

尽管  END 在使用子例程时才被严格要求,但是使用它来指示宏的执行在何处终止是一个良好的编程习惯。

适应不同的波长

接下来,我们可以要求宏确定临界波长(最小和最大),并将其用于光线追迹中。如果文件中仅定义了一个波长,我们也可以要求宏返回错误消息:

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图10

现在,用于光线追迹的波长是 minwav 和 maxwav,因此在  FOR 循环中,将行:
RAYTRACE 0, 0, 0, py, 1
RAYTRACE 0, 0, 0, py, 3
用以下两行替换:
RAYTRACE 0, 0, 0, py, minwav
RAYTRACE 0, 0, 0, py, maxwav

错误检查

最后,我们可以使用  RAYE() 检查光线追迹期间的错误。因此,代码变为:

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图11

将宏另存为 ZTCA2.ZPL 并测试代码正确性,确保您测试了每种错误情况:
  • 用户定义的步进 < 1 或非整数

  • 仅1个波长

  • 光线错误

以下是20个光瞳区域的宏输出:

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图12

绘制数据

除了输出数据外,我们还可以使用  PLOT 或  PLOT2D 关键字来绘制数据。  PLOT 支持一个自变量和一个因变量,而  PLOT2D 支持两个自变量和一个因变量。这两个关键字都允许用户充分控制绘图格式,例如:
  • 标题,坐标轴图例

  • X,Y 轴刻度

  • 注释

  • 数据点和拟合线:颜色、样式、大小

  • 窗口纵横比

为了能够绘制数据,首先需要声明两个数组变量:一个用于光瞳坐标,一个用于环带垂轴色差 ZTCA。在用户输入和错误检查代码之后添加数组声明:

DECLARE pupil, double, 1, (numsteps + 1)

DECLARE ztca, double, 1, (numsteps + 1)

然后,在主循环内,您需要将值存储在先前声明的数组中,而不是将其输出到屏幕上。 这意味着将此行:

PRINT "Pupil zone = ", py, " ZTCA = ", yf-yc

用下两行替换:

pupil(i+1) = py

ztca(i+1) = yf-yc

最后,在主循环之后添加代码以创建绘图:

PLOT NEW

PLOT BANNER, "ZTCA vs Py"

PLOT TITLE, "Zonal Transverse Chromatic Aberration"

PLOT TITLEX, "Normalized Pupil Coordinate (Py)"

PLOT TITLEY, "ZTCA (mm)"

PLOT RANGEX, 0, 1

PLOT RANGEY, -0.005, 0.005

PLOT DATA, pupil, ztca, (numsteps + 1), 1, 2, 0

PLOT GO

PLOT DATA 用于定义要绘制的一系列数据点。它需要以下参数:

  •  x_array, y_array, #points, color, style, options

在本例程中颜色 1 = 蓝色 (Color 1 = blue), 样式 2 = 虚线 (style 2 = dashed), 可选项 0 = 无数据点标记 (option 0 = no data point markers)。
PLOT 语法的完整说明可以在帮助文件部分的编程选项卡 (The Programming Tab) > 关于 ZPL (About the ZPL) > 关键字(关于zpl) (KEYWORDS (about the zpl) ) > 绘图 (PLOT) 中进行了描述。
现在将宏另存为 ZTCA3.zpl 并运行它。该宏将产生以下绘图:

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图13

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图14· 扫码关注我们 ·

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图15


如果您对产品感兴趣,或需要技术支持,欢迎致电垂询!

电话:027-87878386

邮箱:market@ueotek.com 



近期活动

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图16

免费领取视频 | 在 OpticStudio 中模拟全息

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图17

【限时抢购】Zemax 价格上调通知!

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图18

惊喜特惠 | Zemax 永久授权以旧换新!


宇熠精选

关注武汉宇熠视频号 查看更多精彩视频 



推荐阅读

· ZEMAX | 如何使用米氏散射模型模拟环境中的散射现象

· ZEMAX | 如何使用 ISO 元件制图工具

· ZEMAX | 如何使用快速调整工具和滑块

· ZEMAX | 如何使用光学制造全息图修正像差

· ZEMAX | 将二进制文件光源转换为 ASCII

· ZEMAX | 多模光纤耦合

· ZEMAX | 如何共享 OpticStudio 文件

· ZEMAX | 使用 Project Directory 组织 OpticStudio文件

· ZEMAX | 内窥镜物镜系统初始结构的优化提升Ⅰ

· ZEMAX 内窥镜物镜系统初始结构的优化提升Ⅱ

· ZEMAX | 如何使用 ZPL 创建用户自定义求解



武汉宇熠科技是 ZEMAX 中国区官方指定代理商,提供 ZEMAX 光学设计软件的培训、销售、技术支持、二次开发、解决方案及 ZEMAX 软件相关全方位定制服务。有关 ZEMAX ,您可以点击文末“阅读原文”了解更多信息,或致电垂询武汉宇熠工作人员:

销售热线:027-87878386

咨询邮箱:sales@ueotek.com




技术交流

光机解决方案

电话:027-87878386

邮箱:sales@ueotek.com

网址:www.ueotek.com

长按识别二维码关注

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图19

新闻咨询

Zemax 中国区代理

Solidworks 增值经销商

MCGrating 光栅设计软件

OOFELIE::Multiphysics 多物理场仿真分析软件

Optiwave 光通信设计软件

nPower 软件

ASLD 高级固体激光器设计及仿真软件

武汉宇熠科技有限公司

ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图20
ZEMAX | 如何编写 ZPL 宏:计算环带垂轴色差的图21
点个“在看”每天收到最新资讯


👇点击阅读原文咨询产品或技术支持。

登录后免费查看全文
立即登录
  • App下载
  • 项目客服
  • 培训客服
  • 平台客服

TOP