利用MATLAB控制HFSS联合进行仿真
说明
HFSS是一款三维仿真软件,经常用在天线设计领域,在设计天线时我们经常为了使天线达到需要的性能指标使用各种优化算法来对天线进行优化,但是HFSS自带的optimetrics模块难以满足我们的要求,而MATLAB在优化算法领域强大的计算能力就能够弥补HFSS在这方面的不足之处,可以把HFSS当做我们的数据计算工具,计算出结果后再导出反馈待MATLAB再进行优化。这样利用MATLAB控制HFSS就能够更好的完成优化工作。
录制HFSS的vbs脚本
HFSS可以录制vbs脚本和py脚本,在这里我们使用vbs脚本进行演示
在HFSS的菜单栏中Tools工具栏中打开Record Script to File,然后选中你将要将录制文件存放的文件夹就可以进行操作了,在这过程中,HFSS会将你的所有操作步骤记录在脚本中,这样你就可以知道在HFSS调用某一步操作是如何进行的,然后可能在MATLAB中去控制HFSS完成某一步操作。
比如我们在HFSS中建立一个长方体模型并将长度信息用变量来替代的操作记录在脚本中,所记录的vbs脚本如下:
' ----------------------------------------------
' Script Recorded by ANSYS Electronics Desktop Version 2021.1.0
' 21:24:33 11月 23, 2022
' ----------------------------------------------
Dim oAnsoftApp
Dim oDesktop
Dim oProject
Dim oDesign
Dim oEditor
Dim oModule
Set oAnsoftApp = CreateObject("Ansoft.ElectronicsDesktop")
Set oDesktop = oAnsoftApp.GetAppDesktop()
oDesktop.RestoreWindow
Set oProject = oDesktop.SetActiveProject("bishe")
Set oDesign = oProject.SetActiveDesign("linear_array")
Set oEditor = oDesign.SetActiveEditor("3D Modeler")
oEditor.CreateBox Array("NAME:BoxParameters", "XPosition:=", "-0.8mm", "YPosition:=", _
"-0.8mm", "ZPosition:=", "0mm", "XSize:=", "1.8mm", "YSize:=", "1.6mm", "ZSize:=", _
"1.2mm"), Array("NAME:Attributes", "Name:=", "Box1", "Flags:=", "", "Color:=", _
"(143 175 143)", "Transparency:=", 0, "PartCoordinateSystem:=", "Global", "UDMId:=", _
"", "MaterialValue:=", "" & Chr(34) & "vacuum" & Chr(34) & "", "SurfaceMaterialValue:=", _
"" & Chr(34) & "" & Chr(34) & "", "SolveInside:=", true, "ShellElement:=", _
false, "ShellElementThickness:=", "0mm", "IsMaterialEditable:=", true, "UseMaterialAppearance:=", _
false, "IsLightweight:=", false)
oDesign.ChangeProperty Array("NAME:AllTabs", Array("NAME:LocalVariableTab", Array("NAME:PropServers", _
"LocalVariables"), Array("NAME:NewProps", Array("NAME:dx", "PropType:=", "VariableProp", "UserDef:=", _
true, "Value:=", "10mm"))))
oDesign.ChangeProperty Array("NAME:AllTabs", Array("NAME:LocalVariableTab", Array("NAME:PropServers", _
"LocalVariables"), Array("NAME:NewProps", Array("NAME:dy", "PropType:=", "VariableProp", "UserDef:=", _
true, "Value:=", "10mm"))))
oEditor.ChangeProperty Array("NAME:AllTabs", Array("NAME:Geometry3DCmdTab", Array("NAME:PropServers", _
"Box1:CreateBox:1"), Array("NAME:ChangedProps", Array("NAME:Position", "X:=", "-dx/2", "Y:=", _
"-dy/2", "Z:=", "0mm"), Array("NAME:XSize", "Value:=", "dx"), Array("NAME:YSize", "Value:=", _
"dy"), Array("NAME:ZSize", "Value:=", "10mm"))))
所以模型是一个长宽高各位10mm的正方体,其中x,y用变量dx,dy进行了表示,模型如下:
.
.
.
或者导出天线方向图的操作如下:
' ----------------------------------------------
' Script Recorded by ANSYS Electronics Desktop Version 2020.1.0
' 10:38:43 10月 21, 2022
' ----------------------------------------------
Dim oAnsoftApp
Dim oDesktop
Dim oProject
Dim oDesign
Dim oEditor
Dim oModule
Set oAnsoftApp = CreateObject("Ansoft.ElectronicsDesktop")
Set oDesktop = oAnsoftApp.GetAppDesktop()
oDesktop.RestoreWindow
Set oProject = oDesktop.SetActiveProject("Project")
Set oDesign = oProject.SetActiveDesign("HFSSdesigner")
Set oModule = oDesign.GetModule("ReportSetup")
oModule.ExportToFile "Gain Plot 1", "E:/HFSS/Gain Plot 1.csv"
.
.
.
除了建模之外,其他的所有操作都是可以被记录在脚本文件当中的,然后在HFSS菜单栏Tools中Run Script中选中录制的vbs文件或者py文件运行就可以重复之前录制的所有动作。
.
.
.
MATLAB控制文件编写
在MATLAB中编写文件可以利用fopen和fclose来控制我们需要控制的vbs文件,例如:
fid=fopen('kongzhi.vbs','w+');%kongzhi.vbs文件就是你需要用来控制HFSS的文件
fclose all;
利用fopen就可以打开脚本文件并向其中写入我们需要写入的内容,fid是传输句柄,可以在MATLAB中查看fopen的用法(help fopen或者doc fopen)
想要控制HFSS我们还需要一个初始化的部分,在每次录制的脚本文件的开头部分就是我们的初始部分,然后将初始部分写入我们的控制vbs文件,比如:
fid=fopen('kongzhi.vbs','w+');
fprintf(fid, 'Dim oAnsoftApp\n');
fprintf(fid, 'Dim oDesktop\n');
fprintf(fid, 'Dim oProject\n');
fprintf(fid, 'Dim oDesign\n');
fprintf(fid, 'Dim oEditor\n');
fprintf(fid, 'Dim oModule\n');
fprintf(fid, 'Set oAnsoftApp = CreateObject("Ansoft.ElectronicsDesktop")\n');
fprintf(fid, 'Set oDesktop = oAnsoftApp.GetAppDesktop()\n');
fprintf(fid, 'oDesktop.RestoreWindow\n');
fprintf(fid, 'Set oProject = oDesktop.SetActiveProject("Project")\n');%这里Project是HFSS中的工程文件名称,对于不同的工程文件一定要修改中这个地方MATLAB才能找到相关工程
fprintf(fid, 'Set oDesign = oProject.SetActiveDesign("HFSSdesigner")\n');%HFSSdesigner是设计文件名称,不同的设计文件名称也要记得修改
如果还需要其他的功能,就可以利用fprintf函数将先前录制的不同操作的脚本文件中的内容写入我们的kongzhi.vbs脚本中,最后利用dos就可运行我们的脚本文件。文章来源:https://www.toymoban.com/news/detail-450389.html
dos 'kongzhi.vbs' ;%%运行脚本
这样运行MATLAB就能够控制HFSS进行我们想要的运算并导出相应的结果来完成优化任务。文章来源地址https://www.toymoban.com/news/detail-450389.html
到了这里,关于利用MATLAB控制HFSS进行仿真的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!