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