ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差

本文介紹如何使用 Zemax 編程語言 (ZPL) 創(chuàng)建宏來計(jì)算和繪制用戶自定義的性能指標(biāo)。在本示例中,系統(tǒng)的環(huán)帶垂軸色差 (Zonal Transverse Chromatic Aberration, ZTCA) 將被分析。在解釋了需要使用的基本算法之后,本文將描述如何將宏通用化以允許用戶進(jìn)行更加靈活的使用,包括用戶輸入和錯(cuò)誤捕獲。 (聯(lián)系我們獲取文章附件)

簡(jiǎn)介

假設(shè)我們要計(jì)算系統(tǒng)的環(huán)帶垂軸色差 (ZTCA)。ZTCA  作為光瞳區(qū)域的函數(shù),定義為兩個(gè)波長在像平面上的光線高度差

ZTCA = YF - YC

基本算法如下:

  1. 定義步進(jìn)式光瞳區(qū)域

  2. 對(duì)應(yīng)追跡每個(gè)波長的邊緣光線

  3. 減去 y 坐標(biāo)

  4. 輸出結(jié)果
我們建議在編寫 ZPL 宏時(shí)將采用以下編程規(guī)范,使宏更易于閱讀:
  • 將所有變量寫成小寫形式
  • 將所有 ZPL 函數(shù)和關(guān)鍵字寫成大寫形式

  • 對(duì)IFFOR循環(huán)采用文本縮進(jìn)

  • 賦予變量有意義的名稱 (例如 ray_angle  而不是 a

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

為了使宏更易于閱讀,OpticStudio 具有內(nèi)置的文本編輯器,將語法突出顯示:

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖1

初版宏的編寫

對(duì)于此示例,我們將使用示例文件<Documents>\Zemax\Samples\Sequential\Objectives\ Doublet.zmx。將此文件加載到 OpticStudio 中,然后單擊“ 編程“ ( Programming)... 新建宏 (  New Macro)”:

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖2

輸入以下代碼,以根據(jù)之前描述的算法流程來計(jì)算環(huán)帶垂軸色差 (ZTCA) :

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖3

使用功能區(qū)上的第二個(gè)按鈕將宏另存至 <Documents>\Zemax\Macros folder,命名為 “ZTCA1.zpl“。

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖4

然后,從“編程 (The  Programming tab) ”選項(xiàng)卡中,從“宏列表 ( Macro List) ”下拉菜單中選擇已保存的宏,或者從“編輯/運(yùn)行  ( Edit/Run) ”中選擇它,然后單擊“運(yùn)行 ( Run) ”。

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖5

運(yùn)行宏時(shí),將出現(xiàn)一個(gè)新的文本窗口,其中包含宏的輸出。在本示例中,輸出結(jié)果為環(huán)帶垂軸色差 ZTCA ,作為光瞳區(qū)域的函數(shù):

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖6

請(qǐng)注意,此宏文件需要基于許多假設(shè),確保宏能夠正常運(yùn)行:
  • 邊界波長是 1 和 3

  • 步進(jìn)數(shù)為 10

  • 它僅計(jì)算軸上視場(chǎng)的環(huán)帶垂軸色差 ZTCA

  • 無錯(cuò)誤檢查功能

    • 如果只有一個(gè)波長怎么辦?

讓我們改進(jìn)宏,使其可以與其他文件一起使用。

通用宏的編寫

用戶自定義的步進(jìn)數(shù)

我們可以使用  INPUT 關(guān)鍵字提示用戶輸入步進(jìn)數(shù),而不是使用固定值 10。在宏的開頭,刪除賦值“numsteps = 10”并按如下方式使用  INPUT 

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖7

運(yùn)行宏時(shí),“ ZPL 宏輸入 (ZPL Macro Input) ”窗口將出現(xiàn):

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖8

IF 語句通過函數(shù)  INTE() 測(cè)試 numsteps 是否為正整數(shù),該函數(shù)將會(huì)對(duì)數(shù)值進(jìn)行四舍五入。
GOTO 命令 OpticStudio 使用指定的 LABEL 命令將程序跳至某一行(向前或向后)。在這種情況下,我們使其跳到程序的結(jié)尾:

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖9

盡管  END 在使用子例程時(shí)才被嚴(yán)格要求,但是使用它來指示宏的執(zhí)行在何處終止是一個(gè)良好的編程習(xí)慣。

適應(yīng)不同的波長

接下來,我們可以要求宏確定臨界波長(最小和最大),并將其用于光線追跡中。如果文件中僅定義了一個(gè)波長,我們也可以要求宏返回錯(cuò)誤消息:

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖10

現(xiàn)在,用于光線追跡的波長是 minwav 和 maxwav,因此在  FOR 循環(huán)中,將行:
RAYTRACE 0, 0, 0, py, 1
RAYTRACE 0, 0, 0, py, 3
用以下兩行替換:
RAYTRACE 0, 0, 0, py, minwav
RAYTRACE 0, 0, 0, py, maxwav

錯(cuò)誤檢查

最后,我們可以使用  RAYE() 檢查光線追跡期間的錯(cuò)誤。因此,代碼變?yōu)椋?

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖11

將宏另存為 ZTCA2.ZPL 并測(cè)試代碼正確性,確保您測(cè)試了每種錯(cuò)誤情況:
  • 用戶定義的步進(jìn) < 1 或非整數(shù)

  • 僅1個(gè)波長

  • 光線錯(cuò)誤

以下是20個(gè)光瞳區(qū)域的宏輸出:

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖12

繪制數(shù)據(jù)

除了輸出數(shù)據(jù)外,我們還可以使用  PLOT 或  PLOT2D 關(guān)鍵字來繪制數(shù)據(jù)。  PLOT 支持一個(gè)自變量和一個(gè)因變量,而  PLOT2D 支持兩個(gè)自變量和一個(gè)因變量。這兩個(gè)關(guān)鍵字都允許用戶充分控制繪圖格式,例如:
  • 標(biāo)題,坐標(biāo)軸圖例

  • X,Y 軸刻度

  • 注釋

  • 數(shù)據(jù)點(diǎn)和擬合線:顏色、樣式、大小

  • 窗口縱橫比

為了能夠繪制數(shù)據(jù),首先需要聲明兩個(gè)數(shù)組變量:一個(gè)用于光瞳坐標(biāo),一個(gè)用于環(huán)帶垂軸色差 ZTCA。在用戶輸入和錯(cuò)誤檢查代碼之后添加數(shù)組聲明:

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

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

然后,在主循環(huán)內(nèi),您需要將值存儲(chǔ)在先前聲明的數(shù)組中,而不是將其輸出到屏幕上。 這意味著將此行:

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

用下兩行替換:

pupil(i+1) = py

ztca(i+1) = yf-yc

最后,在主循環(huán)之后添加代碼以創(chuàng)建繪圖:

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 用于定義要繪制的一系列數(shù)據(jù)點(diǎn)。它需要以下參數(shù):

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

在本例程中顏色 1 = 藍(lán)色 (Color 1 = blue), 樣式 2 = 虛線 (style 2 = dashed), 可選項(xiàng) 0 = 無數(shù)據(jù)點(diǎn)標(biāo)記 (option 0 = no data point markers)。
PLOT 語法的完整說明可以在幫助文件部分的編程選項(xiàng)卡 (The Programming Tab) > 關(guān)于 ZPL (About the ZPL) > 關(guān)鍵字(關(guān)于zpl) (KEYWORDS (about the zpl) ) > 繪圖 (PLOT) 中進(jìn)行了描述。
現(xiàn)在將宏另存為 ZTCA3.zpl 并運(yùn)行它。該宏將產(chǎn)生以下繪圖:

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖13

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖14· 掃碼關(guān)注我們 ·

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖15


如果您對(duì)產(chǎn)品感興趣,或需要技術(shù)支持,歡迎致電垂詢!

電話:027-87878386

郵箱:market@ueotek.com 



近期活動(dòng)

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖16

免費(fèi)領(lǐng)取視頻 | 在 OpticStudio 中模擬全息

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖17

【限時(shí)搶購】Zemax 價(jià)格上調(diào)通知!

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖18

驚喜特惠 | Zemax 永久授權(quán)以舊換新!


宇熠精選

關(guān)注武漢宇熠視頻號(hào) 查看更多精彩視頻 



推薦閱讀

· ZEMAX | 如何使用米氏散射模型模擬環(huán)境中的散射現(xiàn)象

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

· ZEMAX | 如何使用快速調(diào)整工具和滑塊

· ZEMAX | 如何使用光學(xué)制造全息圖修正像差

· ZEMAX | 將二進(jìn)制文件光源轉(zhuǎn)換為 ASCII

· ZEMAX | 多模光纖耦合

· ZEMAX | 如何共享 OpticStudio 文件

· ZEMAX | 使用 Project Directory 組織 OpticStudio文件

· ZEMAX | 內(nèi)窺鏡物鏡系統(tǒng)初始結(jié)構(gòu)的優(yōu)化提升Ⅰ

· ZEMAX 內(nèi)窺鏡物鏡系統(tǒng)初始結(jié)構(gòu)的優(yōu)化提升Ⅱ

· ZEMAX | 如何使用 ZPL 創(chuàng)建用戶自定義求解



武漢宇熠科技是 ZEMAX 中國區(qū)官方指定代理商,提供 ZEMAX 光學(xué)設(shè)計(jì)軟件的培訓(xùn)、銷售、技術(shù)支持、二次開發(fā)、解決方案及 ZEMAX 軟件相關(guān)全方位定制服務(wù)。有關(guān) ZEMAX ,您可以點(diǎn)擊文末“閱讀原文”了解更多信息,或致電垂詢武漢宇熠工作人員:

銷售熱線:027-87878386

咨詢郵箱:sales@ueotek.com




技術(shù)交流

光機(jī)解決方案

電話:027-87878386

郵箱:sales@ueotek.com

網(wǎng)址:www.ueotek.com

長按識(shí)別二維碼關(guān)注

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖19

新聞咨詢

Zemax 中國區(qū)代理

Solidworks 增值經(jīng)銷商

MCGrating 光柵設(shè)計(jì)軟件

OOFELIE::Multiphysics 多物理場(chǎng)仿真分析軟件

Optiwave 光通信設(shè)計(jì)軟件

nPower 軟件

ASLD 高級(jí)固體激光器設(shè)計(jì)及仿真軟件

武漢宇熠科技有限公司

ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖20
ZEMAX | 如何編寫 ZPL 宏:計(jì)算環(huán)帶垂軸色差的圖21
點(diǎn)個(gè)“在看”每天收到最新資訊


??點(diǎn)擊閱讀原文咨詢產(chǎn)品或技術(shù)支持。

登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP