社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

利用Python与HFSS联合仿真设计一个微带天线(附详细代码)

微波射频网 • 6 年前 • 955 次点击  

我们知道HFSS是一款电磁仿真商用软件,用其进行天线的设计十分方便。而该软件也预留了可以运行脚本的接口,使用者可以使用脚本对软件进行控制,实现模型的建立、求解等等。由于后期可能会用到联合仿真,而大多数联合仿真的脚本都是使用的Matlab进行编程,网上也有不少现成的api,因为对python比较熟悉,且python除了数值计算其他的功能也相当强大,并且免费开源,于是决定用python写一个建模的脚本(其实是我matlab学得太烂了),折腾了两天,终于把微带天线的模型建立与仿真的过程搞定了,当然是基于有Matthew Radway这位大牛的基础上。这个例子也是接触HFSS时手绘天线做的第一个例子,现在用代码做一遍,也是很有意思的事情。下面分享给大家。

1、连接软件

第一步当然要用脚本实现打开软件了。关于这个步骤,HFSS帮助文档中是这样写的

GetAppDesktop

Use:  GetAppDesktopis a function of    oAnsoftApp. This function does not take an input and it returns an object. The object is assigned to the variable   oDesktop.

Syntax:  GetAppDesktop()

Return Value:  Object.

Parameters:  None

Example:     

Set oDesktop = oAnsoftApp.GetAppDesktop()

给出了函数名,参数值,返回值,以及一个实例(这个帮助文档写得很不错,但是后面阅读过程中也发现了一些小错误,当然很可能是因为我用的是daoban)。这个返回值oAnsoftApp就是后面进行一系列操作要使用的对象,所有的操作的形式都是下面这样:

oAnsoftApp. 

python中编写了一个接口函数把这个函数封装在里面。代码如下(不是我写的):

作者用了win32com.client.Dispatch()这个函数,这个函数是专门用来连接接口的,返回值中的那个oDesktop就是生成的对象。

实际调用代码:

[oAnsoftApp, oDesktop] = hfss.setup_interface()

2、新建一个project

oProject = hfss.new_project(oDesktop)

这里就是用了上面生成的oDesktop对象新建了一个object,具体查阅help文档和编写api的工作和上一步一致,并且平时使用时直接使用接口调用即可。注意,下面进行的操作都在这个project中,所以下面操作的对象就是oProject了。这个时候HFSS里应该长这样了。

3、保存project

养成良好习惯,新建的文件之后先保存,在编写过程中因为没有先保存,生成了一堆临时文件,挺讨厌的。这个传人的参数可以包含路径。

hfss.save_as_project(oDesktop,"E:/dj/test/microstrip_antenna.hfss")

4、新建一个design

这里传人的参数为design的名字,设计模式。

oDesign = hfss.insert_design(oProject, "HFSSDesign1", "DrivenModal")

新建完成后发现和我们手动操作是一样的。

5、建立模型

教程中首先新建了一个地板,并设置为PEC。这里也分别调用了这两个函数,尺寸可以用字符串输入,很方便灵活,不需要自己转换为一堆小数点的数字。设置PEC表面首先需要获得平面的faceid,再给这个表面设置边界条件。

由于建模过程比较类似,这里就不逐个给出了,模型建立完毕如下图(包括了设置边界条件和设置端口):

6、设置求解和扫频

这里求解函数传人了中心频点;扫频传入了扫频方式,起始频率和终止频率,频率间隔。

7、求解

对于每个setup进行求解。是不是和手动操作是一样的?

hfss.solve(oDesign,setuplist)

8、退出HFSS

hfss.quit_application(oDesktop)

结束语:今天暂时研究到这儿,还有很多比如查看求解完成后的驻波、增益曲线等等还有设置主从边界啦很多的api还没有编写,有时间会继续完善。

做了个有趣的小玩意儿,分享给大家~

完整主函数源码(api部分还不是很完整,哦,相当不完整,就先不给出了):

说明:本文中的微带线设计案例来自李明洋老师的《HFSS电磁仿真设计应用详解》一书的第10章----HFSS微带天线设计实例。

部分api设计参考使用了Matthew Radway在github中分享的Interact with ANSYS HFSS via the HFSS Windows COM API。地址:http://mradway.github.io/hycohanz/

作者:努力小菜籽

相关阅读:

Ku波段高速宽带射频通信系统设计与实现

解读直接RF采样架构及优势

太赫兹高速通信系统前端关键技术

基于照片对天线进行全波分析(详细分解步骤)

微波射频行业人士 | 相聚在这里

10大细分领域的微信技术交流群

微波射频网已建立射频、天线、雷达、毫米波、手机射频、RFIC、功放、SDR等细分领域的技术交流群,提供一个互相交流的平台,促进技术进步。

长按识别上方二维码加群主为好友,说明:单位+技术方向,邀请您加入相应技术群


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/xxVNzpeSzB
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/27807
 
955 次点击