前言
作為系列文章的第一篇,本文主要介紹采用 Python 編寫(xiě)一個(gè)圖形化界面的小程序,方便快速根據(jù)波束寬度設(shè)計(jì)出最優(yōu)化喇叭天線,一鍵調(diào)用 HFSS 進(jìn)行仿真,并可打包為 exe 文件方便其他人使用,其效果如下:
初始界面
根據(jù)頻率和波束寬度算出增益最大化的尺寸
一鍵調(diào)用 HFSS 進(jìn)行仿真計(jì)算并自動(dòng)生成 report
打包為 exe 文件
本文的理論部分很淺顯,但編程部分有些許難度,因?yàn)榭紤]到本文的主要讀者是和我一樣從事天線設(shè)計(jì)的工程師或?qū)W生黨,看起來(lái)可能要費(fèi)力一些,故這部分我會(huì)盡量介紹詳細(xì)點(diǎn),主要是為有興趣進(jìn)行類(lèi)似工作的讀者提供一些思路,也是對(duì)自己學(xué)習(xí) Python 一年來(lái)的一個(gè)總結(jié)。
正文
在我設(shè)計(jì)過(guò)的所有天線中,喇叭(Horn)是我最為偏好的形式,也是用的最多的形式,其主要好處有結(jié)構(gòu)簡(jiǎn)單、性能可靠、設(shè)計(jì)方便,且規(guī)整的口面使其成為完美之口徑天線,便于利用教科書(shū)里的各種理論公式進(jìn)行快速計(jì)算,因而時(shí)常作為設(shè)計(jì)第一備選,就算最終沒(méi)能用上,也常作為最初估算對(duì)象,或者性能對(duì)標(biāo)對(duì)象。
時(shí)常出現(xiàn)的工作場(chǎng)景是:
總體:“我們需要一個(gè)天線,工作于 X 頻段,方位覆蓋 90 度,俯仰覆蓋 30 度,你估計(jì)下尺寸多少?增益能到多少?要快!!也要準(zhǔn)確?。∽詈媚芊孪?!我正在和用戶談,盡快答復(fù)??!”
我:“......”
這個(gè)時(shí)候,最快速的方法是用喇叭口面公式估算尺寸,再用口面效率公式估算增益,當(dāng)然估算結(jié)果不會(huì)太精確,如果要進(jìn)一步做到更準(zhǔn)確的估算,就要祭出電磁仿真神器海飛絲(HFSS)跑一把了。
對(duì)于喇叭這種簡(jiǎn)單天線,HFSS 當(dāng)然可以輕松搞定,仿得準(zhǔn),算得也快,但建模啥的好歹也要花些時(shí)間,如果恰好仿出來(lái)與預(yù)想結(jié)果偏差較多,免不了又要迭代個(gè)一兩輪才能得到滿意結(jié)果,于是我就想:能否更快更好地解決問(wèn)題呢?
想到了之前收藏的一篇講最優(yōu)喇叭設(shè)計(jì)的論文:
《Pyramidal-Horn Design Under Constraints On Half-Power Beamwidth》(IEEE Antenna and Propagation Magazine, Vol. 44, No. 1, February 2002 )
這篇文章給出了完備的公式、參數(shù)和設(shè)計(jì)步驟,我用 Mathcad 寫(xiě)入公式并試著算了下,確能得到較為可靠的最優(yōu)喇叭尺寸,并非一篇灌水之文,于是就花了幾天時(shí)間用 Python 寫(xiě)了個(gè)更完備的程序,包括標(biāo)準(zhǔn)波導(dǎo)查值、簡(jiǎn)單圖形交互界面(GUI)和調(diào)用 HFSS 進(jìn)行仿真,最后還能打包成 exe 發(fā)給其他人使用。
在程序編寫(xiě)過(guò)程中,由于 Python 知識(shí)還比較淺薄,遇到了相當(dāng)多的難點(diǎn),克服的過(guò)程免不了反復(fù)試錯(cuò)和網(wǎng)上搜索,這個(gè)過(guò)程比較枯燥繁瑣,但也挺有意思,過(guò)后來(lái)看自己的編程技術(shù)也長(zhǎng)進(jìn)了不少,具體來(lái)講,難點(diǎn)主要有以下:
功能似乎很簡(jiǎn)單,但實(shí)現(xiàn)起來(lái)發(fā)現(xiàn)有好幾個(gè)子功能模塊,主要包括參數(shù)計(jì)算模塊、標(biāo)準(zhǔn)波導(dǎo)查詢模塊、GUI 模塊、HFSS 調(diào)用模塊,如何進(jìn)行分而治之,然后有效調(diào)用?
第一次寫(xiě)圖形交互界面,Python 的圖形包很多,有名的包括 Tkinter、PyQt、wxPython 等,該選用哪一種?如何實(shí)現(xiàn)?
如何在圖形界面中調(diào)用 HFSS 建模、仿真、生成報(bào)告?
如何打包成 exe 文件并在不同的電腦上順利運(yùn)行?
后續(xù)文章將會(huì)從每個(gè)模塊進(jìn)行介紹,并附上完整的代碼,希望提供一些思路,對(duì)各位的設(shè)計(jì)工作有所幫助。
轉(zhuǎn)自:知乎@況澤靈 2018 年 11 月