ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)


ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖1

繼上次的內容ZEMAX | 旋轉對稱不規則性(RSI)簡介,在這篇文章中,我們將展示 Zemax 應用程序編程接口(ZOS-API)與 Matlab 的強大功能如何用于模擬關鍵制造缺陷,例如拋物面鏡上的旋轉對稱不規則性(RSI)。


ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖2


旋轉對稱不規則性(RSI) 是指光學表面形狀中的一組旋轉對稱誤差。誤差由 Zernike 多項式表示,具有三階球差和高階球差的形式。

拋物面鏡示例

我們將演示如何向拋物面鏡添加 RSI 和總不規則性。示例為F/3,有效焦距為150 mm的反射鏡。

ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖3
ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖4

為了演示,我們將根據以下規范在表面上添加總不規則性和 RSI :

ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖5

關于此規范的更多信息請查看,旋轉對稱不規則性(RSI)簡介

這將在表面上放置1個完全不規則的P-V波,以及0.3個P-V波的PSI。以納米為單位,這將是500 nm的總表面不規則性和150 nm的RSI。

代碼結構

我們創建了示例 Matlab 代碼來對 RSI 進行建模。此代碼包括與建模不規則性和RSI 相關的函數。函數 prepare surface 將標準或均勻非球面表面更改為 Zernike  標準凹陷表面。還包括幾個基本的支持功能,例如用于顯示來自.ZMX文件的鏡頭數據編輯器 (LDE) 信息的顯示LDE。


最重要的函數是 AddBC(表面數,波長,B,C),其中B是最大總表面不規則度,C是最大允許 RSI。AddBC 函數的工作原理如下:

  • 為RSI項分配隨機值:Z11、Z22、Z37和Z56。

  • 檢查RMS表面誤差。

  • 縮放以達到C的正確值。

  • 這僅需要一次縮放,因為將每個Zernike系數縮放一個常數會使RMS縮放相同的常數。

  • 將隨機值分配給模型B的其他Zernike多項式,完全不規則。

  • 在不干擾RSI項的值的情況下使用:Z11、Z22、Z37和Z56。

  • 使用Z5 – Z37模擬總不規則性。

  • 迭代縮放Zernike項以達到正確的總不規則性。


在交互模式下運行Matlab示例代碼

與Matlab的API交互模式很方便,因為您可以使用 Matlab 命令行控制 API。這使您可以即時嘗試新命令和更改命令。


您可以從編程選項卡中選擇 Matlab,然后選擇交互式擴展,以交互模式進行連接,如下所示:

ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖6

連接代碼將自動打開:

ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖7

回到 OpticStudio,單擊變成選項卡上的“交互式擴展”將使 OpticStudio 進入“偵聽”模式。

ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖8

在 Matlab 中,現在可以使用以下命令進行連接:

>> TheApplication = MATLABZOSConnection9(7)

請注意,您的 MATLABZOSConnection 編號和實例可能與此處給出的不同。例如,如果這是您第一次連接,您可能有 MATLABZOSConnection(1)。

ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖9

使用Matlab模擬RSI

建立連接后,我們可以從 Matlab 命令行加載 .ZMX 文件并從文件中收集信息,如下所示:

>> primary system = TheApplication.PrimarySystem

>> theLDE = primarySystem.LDE

>> theMFE = primarySystem.MFE

>> systemData = primarySystem.SystemData

>> savefilename = System.String.Concat

(pwd,'\LensFileForTesting.zmx')

>> primarySystem.SaveAs(savefilename)


所有必需的函數都包含在文件 ErinsABCFunctions.m 中。通過在 Matlab 中打開它,我們可以加載各個函數。

>> abc = ErinsABCFunctions


我們通過將其更改為 Zernike 標準凹陷表面來預設表面。

>> ldetable = abc.displayLDE(primarySystem); disp(ldetable);

>> surfacetable = abc.prepareSurface(primarySystem,3);

disp(surfacetable);


上述兩個命令的輸出如下所示:

ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖10
ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖11

稍后,我們將設定鏡面的起始缺陷。

>> startingsag = abc.getSag(primarySystem,3);
>> figure(); imagesc(startingsag); axis square;

ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖12

現在我們可以使用 AddBC 添加 B和C 的表面不規則性。

>> bctable = abc.AddBC( primarySystem, 3, 500.0, 1, 0.3);
>> disp( bctable);

ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖13

請注意,此時,如果我們正在運行公差,我們可以在調用 AddBC 時為 B和C 選擇隨機值。收集鏡子的擾動缺陷,并減去起始缺陷,使表面誤差擾動可見。

>> bcsag = abc.getSag( primarySystem, 3);
>> sagdiff = bcsag-startingsag;
>> figure(); imagesc( sagdiff ); axis square;

ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖14

我們也可以檢查這些表面誤差的最終P-V。

>> abs(max( sagdiff(:))-min( sagdiff(:)) 

/ (500*10^-6))

該值為0.995,而不是我們要求的B = 1.000。這是與縮放 Zernikes 的迭代期間使用的精度設置有關。更嚴格的精度設置將返回更接近1.000的結果,但計算時間會更長。

完成模擬后,我們關閉交互模式。

>> TheApplication.CloseApplication()


ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖15

點擊圖片查看培訓詳情


相關閱讀 - 編程

ZEMAX | 旋轉對稱不規則性(RSI)簡介

ZEMAX | 如何用 ZOS-API 創建用戶自定義分析

ZEMAX | 在 Mathematica 中與 OpticStudio 交互

ZEMAX | 在MATLAB或Python中使用ZOS-API進行光線追跡的批次處理

ZEMAX | ZOS-API、ZPL 和 DLL 之間的區別

ZEMAX  | 如何使用 ZOS-API 創建飛行時間自定義分析

ZEMAX | 如何使用 ZPL 創建用戶自定義求解



歡迎掃碼添加宇熠工作人員微信,

進入 zemax 微信交流群。

一起來學習光學設計吧!

ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖16

掃碼邀您入群


如果您對產品感興趣,或需要技術支持,歡迎致電垂詢!
電話:027-87878386
郵箱:market@ueotek.com
關注武漢宇熠視頻號 查看更多精彩視頻 

ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖17
ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖18

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

銷售熱線:027-87878386

咨詢郵箱:sales@ueotek.com

ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖19
ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖20

ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖21
ZEMAX | 使用API模擬旋轉對稱不規則性(RSI)的圖22
??點擊 閱讀原文 咨詢產品或技術支持。
登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP