在HFSS中快速建模/创建天线阵的方法 您所在的位置:网站首页 喇叭怎么建模 在HFSS中快速建模/创建天线阵的方法

在HFSS中快速建模/创建天线阵的方法

2023-11-03 19:12| 来源: 网络整理| 查看: 265

目录 写在前面的话有关的资料和视频链接 关于脚本文件vbs脚本文件的简单展示 创建阵列使用Matlab的函数的注意事项建模的目标编程的简单介绍 结论

写在前面的话

时隔两周,我又回来啦!这次主要带来一个在软件学习过程中的一个额外收获,就是基于Matlab创建天线阵的方法。其实HFSS自带的3D模型创建已经可以满足日常使用所需,但是在一些特殊结构(比如满足某个函数的天线阵列)的创建中,建模的操作会变得无比繁琐。这时候就不得不提到HFSS的脚本文件vbs了。我们可以使用Matlab丰富的库函数来帮助我们生成vbs文件,然后在HFSS中将模型快速的建立。

有关的资料和视频链接

这边推荐一下B站up主shygeyang的视频,我也是从这里面了解到这个的: MATLAB,HFSS, API表面阵列的设计: link. 视频中提到的吴迪(无敌?)大佬的文件:link. 视频中up主的演示文件:link

关于脚本文件vbs

VBScript 是 Microsoft Visual Basic Script Edition 的缩写,是微软公司可视化 BASIC的脚本版。而VBS是VBScript的简写。是基于 Visual Basic 的脚本语言设计的。换言之, Microsoft Visual Basic 是微软公司,推出的一套可视化编程工具, 语法基于 Basic 模式。在此环境下,脚本语言, 不编译成二进制文件, 直接由宿主解释源代码并执行, 在此条件下所写的程序不是直接编译成.exe 格式可执行文件,而是直接给用户发送信息到.vbs 的源程序, 用户能直接执行,而不需了解其中很多繁杂的环节。也就是说,它可以实现各种各样的任务自动化,可以使我们从重复琐碎的工作中解脱出来,极大的提高工作效率,节省大量的时间和精力。(这段是我复制的,O(∩_∩)O哈哈~) 在这里而言,我们只要知道可以通过编写vbs文件来实现天线的快速创建就可以了,而Matlab就是我们可以快速创建vbs文件的工具。实际上Python也可以的,而HFSS也可以直接读取py格式的脚本文件。只是对我而言还是Matlab更加熟悉一些,这就看个人的喜好了。

脚本文件的简单展示

打开可爱的海飞丝,左键单击工具栏tools->record script to file,选择好存储路径,文件类型为vbs。之后软件就开始记录你的操作了,这边我们创建一个贴片Patch: 在这里插入图片描述 然后单击tools->stop script recording,操作的记录就停止了。当然可以选择更为复杂的操作,这边只为演示。这边可以把原来的图形删掉。此时在保存的路径下,会出现一个比较复古的图标: 在这里插入图片描述 这时双击它,软件会创建一个一模一样的贴片。此时如果用记事本打开脚本文件: 在这里插入图片描述 这边可以简单分析一下,创建一个贴片的步骤可以分为四步(实际上是三步)。其中第一段是vbs文件的申明,这个可以不用管。第二段算是接口的申明?(这个我不太懂)。第三段是我一开始画的贴片,而第四段是修改参数的脚本。其实对计算机而言,第四段就不是必须的了。

创建阵列

我学习这个的根本目的在于,在可以预见的将来,我会面对不少天线阵的建模。虽然主从边界条件很方便,但是还是有很多它无法顾及的地方,比如边缘效应,还有一些非周期的天线阵。

使用Matlab的函数的注意事项

啊,这边就是调用啊,你甚至不太用懂函数是怎么运作的,只要知道输入和输出就好……而且吴迪大佬的函数名都很直接的,只要HFSS建模的操作会用基本不存在使用障碍。,就是使用之前注意一下HFSS版本会不会有冲突——毕竟海飞丝的换代还是挺频繁的,有时候脚本文件的一些命名也会发生改变,这边2018,2019版本的HFSS基本都可以运行。 还有就是吴迪的工程下有很多文件夹,这边只要使用3dmodeler,analysis和boundary三个文件夹下的就可以了。还有就是这些函数其实不能完整的覆盖所有建模的工作,比如有一些边界条件(RLC什么的)是没有的,喜欢的大兄弟可以自己写写,懂了之后其实相对还是比较简单的。

建模的目标

就拿我手头上的一个仿真工作来说吧,基本目标就是这个玩意,基本单元并不复杂,具体细节在’‘Circuit-based nonlinear metasurface absorbers for high power surface currents’'这篇文章中可以看到。因为要在超表面上添加电路元件,所以每一个电路元件要留两个集总端口,而光是一个单元就有两个电阻,两个电容还有一个二极管!更不要说其他的一些相减操作了。其实这个仿真后续还涉及到路的仿真,我现在还在琢磨,再过段时间可以抽空写一写心得。 在这里插入图片描述

编程的简单介绍

可以创建文件:

fileName = ['absorb_surface',num2str(N),'_',num2str(fc),'G_',num2str(arraynum)]; tmpScriptFile = ['路径'.vbs'];

Matlab中也可以添加HFSS的变量,使用’hfssaddVar’

hfssaddVar(fid, 'f0', f, []);

这边编程的时候可以使用相对坐标系:这边给出一部分代码吧

for n=1:N for m=1:M i=N*(m-1)+n; %%%%add local CS CSName = ['CS', num2str(i)]; Origin = {['(',num2str(m),' -(M+1)/2)*p'],['((N+1)/2-',num2str(n),')*p'],'0'}; XAxisVec = [1 0 0 ]; YAxisVec = {0, 1, 0}; hfssCreateRelativeCS(fid, CSName, Origin,XAxisVec, YAxisVec, units); hfssSetWCS(fid, CSName); %%%%%%%Array of metasrface(square loop) squarebig{i} = ['squarebig_',num2str(i)]; Start_squareloop = {'-te/2','-te/2','h'}; hfssRectangle(fid, squarebig{i}, 'Z', Start_squareloop, 'te', 'te', units); squaremedium{i} = ['squaremedium',num2str(i)]; Start_squareloop1 = {'-tc/2','-tc/2','h'}; hfssRectangle(fid, squaremedium{i}, 'Z', Start_squareloop1, 'tc', 'tc', units); hfssSubtract(fid, squarebig{i}, squaremedium{i}); cut_square{1,1}= squarebig{i}; PEbig{i}=['PEbig_',num2str(i)]; hfssAssignPE(fid, PEbig{i},cut_square, false); ………………………… hfssSetWCS(fid, 'Global'); end end

集总端口创建,不过这个函数好像不接受相对坐标系,必须使用原本的坐标系计算起点和终点的坐标。

hfssAssignLumpedPort(fid, Port1{i}, squareport1{i}, [-20+(m-1)*p, 36-(n-1)*p, h],…… [-20+(m-1)*p, 36-(n-1)*p-port_l, h], Units, 50, 0);

大概就是这些吧,其实我没有写完,有一些设置编程反而麻烦了。 在这里插入图片描述 这个就是大概的样子了,gif还挺好做的,原以为要折腾一会儿。

结论

这个就没什么好结论了吧,就是蛮方便的,O(∩_∩)O哈哈~。此外文章中的文件就不上传了,我是个代码苦手,不是很喜欢编程,文件也没写注释,就不脏了大家的眼了,之前的链接里面的实例是可以运行的,可以去github上下载,还不要积分。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有