學(xué)個(gè)Antenna:HFSS腳本建模入門(mén)
學(xué)個(gè)Antenna是以天線仿真和調(diào)試為主,理論原理為輔的干貨天線技術(shù)專欄,包括天線入門(mén)知識(shí)以及各類天線的原理簡(jiǎn)介、仿真軟件建模、設(shè)計(jì)、調(diào)試過(guò)程及思路。如有想看到的內(nèi)容或技術(shù)問(wèn)題,可以在文尾寫(xiě)下留言。
摘要:
HFSS作為高頻結(jié)構(gòu)設(shè)計(jì)的首選工具和行業(yè)標(biāo)準(zhǔn),能從幾何結(jié)構(gòu)、材料特性到分析、控制及所有后處理進(jìn)行全參量化設(shè)計(jì)。可對(duì)于仿真設(shè)計(jì)相關(guān)的工程師來(lái)說(shuō),利用HFSS軟件進(jìn)行3D可視化建模容易,但是后期的模型維護(hù)和傳閱卻難以為繼。
本文使用的電磁仿真軟件為ANSYS Electronics Desktop Version 2017.2.0
HFSS腳本錄制
下圖所示環(huán)形器的HFSS建模不難,但是工程師們建模習(xí)慣不同,最后各自的仿真模型在進(jìn)行傳閱時(shí),其可讀性就難免參差不齊。有的喜歡預(yù)估好初始值后進(jìn)行純數(shù)字建模,有的喜歡variables和數(shù)字混用,即使是有些人采用全參量化建模,由于大家命名習(xí)慣大相徑庭,最終拿到別人的仿真文件進(jìn)行參數(shù)微調(diào)時(shí),也會(huì)對(duì)模型的建立邏輯和某些結(jié)構(gòu)對(duì)應(yīng)的變量有所困惑。
特別是在別人已經(jīng)建立好的模型上進(jìn)行調(diào)試優(yōu)化時(shí),面對(duì)“一磚一瓦”構(gòu)成的復(fù)雜結(jié)構(gòu)時(shí),想通過(guò)Delete Last Operation操作來(lái)窺視開(kāi)發(fā)者的模型確實(shí)比較麻煩。
這里提供一種最簡(jiǎn)單的方法:HFSS自帶的Record Script To File功能進(jìn)行vbs腳本的錄制。可能大家聽(tīng)說(shuō)過(guò)這個(gè)功能,但是在實(shí)施過(guò)程中遇到一些困難。比如明明錄制好了,再次Run Script進(jìn)行重構(gòu)模型為什么報(bào)錯(cuò)呢?
如下圖所示,隨便建立一個(gè)文件進(jìn)行模型的繪制,對(duì)其進(jìn)行vbs腳本錄制:
Run Script后,HFSS軟件提示報(bào)錯(cuò),很多人第一次使用這個(gè)可能都會(huì)遇到這種問(wèn)題。
其實(shí)只需要在錄制腳本前,軟件處于空文件狀態(tài)(Project Manager下無(wú)Project和Design),這樣從零開(kāi)始錄制的腳本執(zhí)行起來(lái)就不會(huì)報(bào)錯(cuò)。
經(jīng)過(guò)上述操作后錄制的vbs代碼如下(可直接復(fù)制到txt文件里,將文件類型后綴改為.vbs,在HFSS軟件中的Tool->Run Script載入執(zhí)行即可):
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) |
除了錄制建模的腳本,我們還可以進(jìn)行繁瑣的數(shù)據(jù)處理、導(dǎo)出步驟的錄制,如下面代碼就是為了實(shí)現(xiàn)S11和3D方向圖數(shù)據(jù)的一鍵式導(dǎo)出。
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:項(xiàng)目名稱 Project Name 14 Set oProject = oDesktop.SetActiveProject("dipole_simu") 15 'veeDipole_idealFeed1:設(shè)計(jì)名稱 Design Name 16 Set oDesign = oProject.SetActiveDesign("veeDipole_idealFeed1") 17 Set oModule = oDesign.GetModule("ReportSetup") 18 'oModule.ExportToFile "Results下的報(bào)告名稱", "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腳本化建模
前文已經(jīng)介紹了如何錄制腳本,便于模型的重建和數(shù)據(jù)的導(dǎo)出。但是對(duì)方收到vbs文件后,要進(jìn)行模型的修改,沒(méi)有注釋其實(shí)看起來(lái)也是一團(tuán)糟的。雖然可以通過(guò)多次刪除部分vbs代碼一步步回構(gòu)到自己想要的節(jié)點(diǎn),不過(guò)這種方法也是有點(diǎn)麻煩。
幸運(yùn)的是,matlab調(diào)用hfss的這項(xiàng)工程早已在Github上模塊化并開(kāi)源了。
由于Github在境內(nèi)大概率訪問(wèn)不了,這里貼了一條鏡像的鏈接:
https://github.com.cnpmjs.org/yuip/hfss-api
如果遇到下面問(wèn)題,多刷新幾次就好了:
最后我們可以選擇排的最靠前的yuip/hfss-api,對(duì)其zip文件進(jìn)行下載。
因?yàn)槎际怯⑽淖⑨專枰褂谜哂幸稽c(diǎn)英文閱讀水平,通過(guò)examples里面的示例進(jìn)行各模塊function的功能以及參量傳入、調(diào)用方法的熟練使用。
有了matlab和hfssapi后,能做的事情就多了,比如下面這個(gè)就利用matlab讀入圖像并保存各像素點(diǎn)rgb數(shù)值,然后再利用hfssapi中的hfssRectangle和hfssSetColor函數(shù)進(jìn)行圖像在HFSS中的重繪。
想更深一步了解hfss腳本,可以在ANSYS Electronics Desktop Version 2017.2.0及以上版本中的Help中打開(kāi)HFSS Scripting這個(gè)幫助文檔,一千多頁(yè)的內(nèi)容特別詳實(shí)。
想象一下,你給別人一個(gè)vbs腳本,就幾kB,然后對(duì)方就能復(fù)構(gòu)你的HFSS模型,是不是特別酷炫,還節(jié)省占用空間?
以上便是要給大家分享的內(nèi)容,希望對(duì)大家有所幫助~~
大家持續(xù)關(guān)注“微波射頻網(wǎng)”,后續(xù)精彩不斷~
本期原創(chuàng)工程師:94巨蟹座少年
本文為MWRF.NET原創(chuàng)文章,未經(jīng)允許不得轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)聯(lián)系market#mwrf.net(#換成@)