前言

作为系列文章的第一篇,本文主要介绍采用Python编写一个图形化界面的小程序,方便快速根据波束宽度设计出最优化喇叭天线,一键调用HFSS进行仿真,并可打包为exe文件方便其他人使用,其效果如下:

初始界面



python blinker支持多种智能音响控制 python控制喇叭_python建模与仿真

根据频率和波束宽度算出增益最大化的尺寸



python blinker支持多种智能音响控制 python控制喇叭_Python_02

一键调用HFSS进行仿真计算并自动生成report



python blinker支持多种智能音响控制 python控制喇叭_python建模与仿真_03

打包为exe文件



python blinker支持多种智能音响控制 python控制喇叭_python建模与仿真_04

本文的理论部分很浅显,但编程部分有些许难度,因为考虑到本文的主要读者是和我一样从事天线设计的工程师或学生党,看起来可能要费力一些,故这部分我会尽量介绍详细点,主要是为有兴趣进行类似工作的读者提供一些思路,也是对自己学习Python一年来的一个总结。


正文

在我设计过的所有天线中,喇叭(Horn)是我最为偏好的形式,也是用的最多的形式,其主要好处有结构简单、性能可靠、设计方便,且规整的口面使其成为完美之口径天线,便于利用教科书里的各种理论公式进行快速计算,因而时常作为设计第一备选,就算最终没能用上,也常作为最初估算对象,或者性能对标对象。

时常出现的工作场景是:

总体:“我们需要一个天线,工作于X频段,方位覆盖90度,俯仰覆盖30度,你估计下尺寸多少?增益能到多少?要快!!也要准确!!最好能仿下!我正在和用户谈,尽快答复!!”

我:“......”

这个时候,最快速的方法是用喇叭口面公式估算尺寸,再用口面效率公式估算增益,当然估算结果不会太精确,如果要进一步做到更准确的估算,就要祭出电磁仿真神器海飞丝(HFSS)跑一把了。

对于喇叭这种简单天线,HFSS当然可以轻松搞定,仿得准,算得也快,但建模啥的好歹也要花些时间,如果恰好仿出来与预想结果偏差较多,免不了又要迭代个一两轮才能得到满意结果,于是我就想:能否更快更好地解决问题呢?

想到了之前收藏的一篇讲最优喇叭设计的论文:

《Pyramidal-Horn Design Under Constraints On Half-Power Beamwidth》(IEEE Antenna and Propagation Magazine, Vol. 44, No. 1, February 2002 )



python blinker支持多种智能音响控制 python控制喇叭_python建模与仿真_05

这篇文章给出了完备的公式、参数和设计步骤,我用Mathcad写入公式并试着算了下,确能得到较为可靠的最优喇叭尺寸,并非一篇灌水之文,于是就花了几天时间用Python写了个更完备的程序,包括标准波导查值、简单图形交互界面(GUI)和调用HFSS进行仿真,最后还能打包成exe发给其他人使用。

在程序编写过程中,由于Python知识还比较浅薄,遇到了相当多的难点,克服的过程免不了反复试错和网上搜索,这个过程比较枯燥繁琐,但也挺有意思,过后来看自己的编程技术也长进了不少,具体来讲,难点主要有以下:

  1. 功能似乎很简单,但实现起来发现有好几个子功能模块,主要包括参数计算模块、标准波导查询模块、GUI模块、HFSS调用模块,如何进行分而治之,然后有效调用?
  2. 第一次写图形交互界面,Python的图形包很多,有名的包括Tkinter、PyQt、wxPython等,该选用哪一种?如何实现?
  3. 如何在图形界面中调用HFSS建模、仿真、生成报告?
  4. 如何打包成exe文件并在不同的电脑上顺利运行?

后续文章将会从每个模块进行介绍,并附上完整的代码,希望提供一些思路,对各位的设计工作有所帮助。