學個Antenna是以天線仿真和調試為主,理論原理為輔的干貨天線技術專欄,包括天線入門知識以及各類天線的原理簡介、仿真軟件建模、設計、調試過程及思路。如有想看到的內容或技術問題,可以在文尾寫下留言。
摘要:
HFSS作為高頻結構設計的首選工具和行業標準,能從幾何結構、材料特性到分析、控制及所有后處理進行全參量化設計。可對于仿真設計相關的工程師來說,利用HFSS軟件進行3D可視化建模容易,但是后期的模型維護和傳閱卻難以為繼。
本文使用的電磁仿真軟件為ANSYS Electronics Desktop Version 2017.2.0
HFSS腳本錄制
下圖所示環形器的HFSS建模不難,但是工程師們建模習慣不同,最后各自的仿真模型在進行傳閱時,其可讀性就難免參差不齊。有的喜歡預估好初始值后進行純數字建模,有的喜歡variables和數字混用,即使是有些人采用全參量化建模,由于大家命名習慣大相徑庭,最終拿到別人的仿真文件進行參數微調時,也會對模型的建立邏輯和某些結構對應的變量有所困惑。
特別是在別人已經建立好的模型上進行調試優化時,面對“一磚一瓦”構成的復雜結構時,想通過Delete Last Operation操作來窺視開發者的模型確實比較麻煩。
這里提供一種最簡單的方法:HFSS自帶的Record Script To File功能進行vbs腳本的錄制。可能大家聽說過這個功能,但是在實施過程中遇到一些困難。比如明明錄制好了,再次Run Script進行重構模型為什么報錯呢?
如下圖所示,隨便建立一個文件進行模型的繪制,對其進行vbs腳本錄制:
Run Script后,HFSS軟件提示報錯,很多人第一次使用這個可能都會遇到這種問題。
其實只需要在錄制腳本前,軟件處于空文件狀態(Project Manager下無Project和Design),這樣從零開始錄制的腳本執行起來就不會報錯。
經過上述操作后錄制的vbs代碼如下(可直接復制到txt文件里,將文件類型后綴改為.vbs,在HFSS軟件中的Tool->Run Script載入執行即可):
1 ' ---------------------------------------------- 2 ' Script Recorded by ANSYS Electronics Desktop Version 2017.2.0 3 ' ---------------------------------------------- 4 Dim oAnsoftApp 5 Dim oDesktop 6 Dim oProject 7 Dim oDesign 8 Dim oEditor 9 Dim oModule 10 Set oAnsoftApp = CreateObject("Ansoft.ElectronicsDesktop") 11 Set oDesktop = oAnsoftApp.GetAppDesktop() 12 oDesktop.RestoreWindow 13 Set oProject = oDesktop.NewProject 14 oProject.InsertDesign "HFSS", "HFSSDesign1", "DrivenModal", "" 15 Set oDesign = oProject.SetActiveDesign("HFSSDesign1") 16 Set oEditor = oDesign.SetActiveEditor("3D Modeler") 17 oEditor.CreateRegularPolyhedron Array("NAME:PolyhedronParameters", "XCenter:=", _ 18 "-0.4mm", "YCenter:=", "-0.4mm", "ZCenter:=", "0mm", "XStart:=", "0.2mm", "YStart:=", _ 19 "0.2mm", "ZStart:=", "0mm", "Height:=", "1.2mm", "NumSides:=", "12", "WhichAxis:=", _ 20 "Z"), Array("NAME:Attributes", "Name:=", "RegularPolyhedron1", "Flags:=", "", "Color:=", _ 21 "(143 175 143)", "Transparency:=", 0, "PartCoordinateSystem:=", "Global", "UDMId:=", _ 22 "", "MaterialValue:=", "" & Chr(34) & "vacuum" & Chr(34) & "", "SurfaceMaterialValue:=", _ 23 "" & Chr(34) & "" & Chr(34) & "", "SolveInside:=", true, "IsMaterialEditable:=", _ 24 true, "UseMaterialAppearance:=", false) 25 oEditor.CreateCylinder Array("NAME:CylinderParameters", "XCenter:=", "0.8mm", "YCenter:=", _ 26 "1.8mm", "ZCenter:=", "0mm", "Radius:=", "0.2mm", "Height:=", "1mm", "WhichAxis:=", _ 27 "Z", "NumSides:=", "0"), Array("NAME:Attributes", "Name:=", "Cylinder1", "Flags:=", _ 28 "", "Color:=", "(143 175 143)", "Transparency:=", 0, "PartCoordinateSystem:=", _ 29 "Global", "UDMId:=", "", "MaterialValue:=", "" & Chr(34) & "vacuum" & Chr(34) & "", "SurfaceMaterialValue:=", _ 30 "" & Chr(34) & "" & Chr(34) & "", "SolveInside:=", true, "IsMaterialEditable:=", _ 31 true, "UseMaterialAppearance:=", false) 32 oEditor.CreateBox Array("NAME:BoxParameters", "XPosition:=", "0.6mm", "YPosition:=", _ 33 "-2.6mm", "ZPosition:=", "0mm", "XSize:=", "0.8mm", "YSize:=", "0.4mm", "ZSize:=", _ 34 "0.8mm"), Array("NAME:Attributes", "Name:=", "Box1", "Flags:=", "", "Color:=", _ 35 "(143 175 143)", "Transparency:=", 0, "PartCoordinateSystem:=", "Global", "UDMId:=", _ 36 "", "MaterialValue:=", "" & Chr(34) & "vacuum" & Chr(34) & "", "SurfaceMaterialValue:=", _ 37 "" & Chr(34) & "" & Chr(34) & "", "SolveInside:=", true, "IsMaterialEditable:=", _ 38 true, "UseMaterialAppearance:=", false) 39 oEditor.CreateCone Array("NAME:ConeParameters", "XCenter:=", "2.2mm", "YCenter:=", _ 40 "-0.2mm", "ZCenter:=", "0mm", "WhichAxis:=", "Z", "Height:=", "0.6mm", "BottomRadius:=", _ 41"0.447213595499958mm", "TopRadius:=", "0.4mm"), Array("NAME:Attributes", "Name:=", _ 42 "Cone1", "Flags:=", "", "Color:=", "(143 175 143)", "Transparency:=", 0, "PartCoordinateSystem:=", _ 43 "Global", "UDMId:=", "", "MaterialValue:=", "" & Chr(34) & "vacuum" & Chr(34) & "", "SurfaceMaterialValue:=", _ 44 "" & Chr(34) & "" & Chr(34) & "", "SolveInside:=", true, "IsMaterialEditable:=", _ 45 true, "UseMaterialAppearance:=", false) |
除了錄制建模的腳本,我們還可以進行繁瑣的數據處理、導出步驟的錄制,如下面代碼就是為了實現S11和3D方向圖數據的一鍵式導出。
1 ' ----------------------------------------------' 2 Script Recorded by ANSYS Electronics Desktop Version 2017.2.0 3 ' ---------------------------------------------- 4 Dim oAnsoftApp 5 Dim oDesktop 6 Dim oProject 7 Dim oDesign 8 Dim oEditor 9 Dim oModule 10 Set oAnsoftApp = CreateObject("Ansoft.ElectronicsDesktop") 11 Set oDesktop = oAnsoftApp.GetAppDesktop() 12 oDesktop.RestoreWindow 13 'dipole_simu:項目名稱 Project Name 14 Set oProject = oDesktop.SetActiveProject("dipole_simu") 15 'veeDipole_idealFeed1:設計名稱 Design Name 16 Set oDesign = oProject.SetActiveDesign("veeDipole_idealFeed1") 17 Set oModule = oDesign.GetModule("ReportSetup") 18 'oModule.ExportToFile "Results下的報告名稱", "csv保存路徑+csv文件名" 19 oModule.ExportToFile "S11", "C:/Users/Administrator/Desktop/S11.csv" 20 oModule.ExportToFile "Gain Plot 1", _ 21 "C:/Users/Administrator/Desktop/Gain Plot 1.csv" 22 |
HFSS API腳本化建模
前文已經介紹了如何錄制腳本,便于模型的重建和數據的導出。但是對方收到vbs文件后,要進行模型的修改,沒有注釋其實看起來也是一團糟的。雖然可以通過多次刪除部分vbs代碼一步步回構到自己想要的節點,不過這種方法也是有點麻煩。
幸運的是,matlab調用hfss的這項工程早已在Github上模塊化并開源了。
由于Github在境內大概率訪問不了,這里貼了一條鏡像的鏈接:
https://github.com.cnpmjs.org/yuip/hfss-api
如果遇到下面問題,多刷新幾次就好了:
最后我們可以選擇排的最靠前的yuip/hfss-api,對其zip文件進行下載。
因為都是英文注釋,需要使用者有一點英文閱讀水平,通過examples里面的示例進行各模塊function的功能以及參量傳入、調用方法的熟練使用。
有了matlab和hfssapi后,能做的事情就多了,比如下面這個就利用matlab讀入圖像并保存各像素點rgb數值,然后再利用hfssapi中的hfssRectangle和hfssSetColor函數進行圖像在HFSS中的重繪。
想更深一步了解hfss腳本,可以在ANSYS Electronics Desktop Version 2017.2.0及以上版本中的Help中打開HFSS Scripting這個幫助文檔,一千多頁的內容特別詳實。
想象一下,你給別人一個vbs腳本,就幾kB,然后對方就能復構你的HFSS模型,是不是特別酷炫,還節省占用空間?
以上便是要給大家分享的內容,希望對大家有所幫助~~
大家持續關注“微波射頻網”,后續精彩不斷~
本期原創工程師:94巨蟹座少年
本文為MWRF.NET原創文章,未經允許不得轉載,如需轉載請聯系market#mwrf.net(#換成@)