CST的VBA语言 & MATLAB调用CST

分享到:

MATLAB调用CST
 
摘要:
 
大家在科研和工作中,往往会遇到如何在CST中构建人工重复性高、建模步骤繁琐的模型,以及多次导出仿真结果数据等问题。和HFSS的vbs脚本一样,CST也自带VBA脚本控制,并支持MATLAB调用。
 
 
0 1CST的VBA语言
 
在CST主界面按F1即可打开官方自带的Help文档。
 
MATLAB调用CST
 
对于微波专业的学生和科研从业者,大部分情况下选用的是CST的MICROWAVE STUDIO (MWS)。因此,查看学习CST MWS VBA语法和对象即可满足日常学习、工作需求。
 
MATLAB调用CST
 
点击Home: Macros > Open VBA Macro Editor,即可打开CST自带的VBA开发环境。
 
MATLAB调用CST
 
 复制粘贴MsgBox行的代码到VBA编辑器中,点击即可弹出信息提示框。(全部复制可能会报错!亲测!)
 
'#Language "WWB-COM"
Option Explicit
Sub Main  MsgBox("Hello World")End Sub
 
 
 
MATLAB调用CST
 
对于初学者而言,若要熟练使用VBA开发环境对CST进行代码式建模开发,还需要掌握两方面知识:VBA语言的基本语法规则和CST的Objects调用规则。
 
前者可以在VBA开发环境下按F1键,调出Help文档。
 
MATLAB调用CST
 
官方帮助文档是学习VBA基本语法规则的一大利器,不需要从头到尾都学一遍。可以秉承边学边用的方法,活学活用。不过学习常用的变量定义、数组、循环、判断、字符等最基础的知识是很有必要的。
 
MATLAB调用CST
 
有了语法基础后,就需要根据自己的学习工作需求,去VBA Objects下找自己需要对象的调用规则。例如下图所示的Brick对象的一个构建。该对象有Reset、Name、Component、Material、Xrange、Yrange、Zrange、Create这么几个方法。
 
MATLAB调用CST
 
 根据Help文档的讲解,我们在VBA开发环境中复制下面6-15行的代码到Sub Main代码块内,点击运行即可在CST中建立一个矩形实体。(全部复制可能会报错!亲测!)
 
'#Language "WWB-COM"
Option Explicit
Sub Main  With Brick    .Reset    .Name ("brick1")    .Component ("component1")    .Material ("PEC")    .Xrange (0, 1)    .Yrange (0, 3)    .Zrange (0, 5)    .Create  End WithEnd Sub
 
不过这种建模方法有一个缺点:和HFSS的自动化建模只有vbs代码一样,建立的模型在CST的History List没有记录,丧失了CST建模的一大利器!
 
MATLAB调用CST
 
好在可以打开CST官方Macro文件进行参考,比如自带的Dipole Antenna这个mcs文件。经过对比,不难发现,只需要将前面的代码变成字符串形式,通过AddToHistory即可将建模代码添加至History List。
 
MATLAB调用CST
 
依葫芦画瓢,Sub Main和End Sub之间的代码替换如下,执行VBA命令后即可在History List下找到本次建模的详细代码:
 
Dim sCommand As String  '@ define brick1  sCommand = ""  sCommand = sCommand + "With Brick " + vbLf  sCommand = sCommand + "  .Reset" + vbLf  sCommand = sCommand + "  .Name (""brick1"")" + vbLf  sCommand = sCommand + "  .Component (""component1"")" + vbLf  sCommand = sCommand + "  .Material (""PEC"")" + vbLf  sCommand = sCommand + "  .Xrange (0, 1)" + vbLf  sCommand = sCommand + "  .Yrange (0, 3)" + vbLf  sCommand = sCommand + "  .Zrange (0, 5)" + vbLf  sCommand = sCommand + "  .Create" + vbLf  sCommand = sCommand + "End With" + vbLf  MsgBox(sCommand)  AddToHistory "define brick1", sCommand
 
MATLAB调用CST
MATLAB调用CST
 
 
0 2MATLAB调用CST
 
MATLAB调用CST有两种方法,一种是通过Shell语言的转移字符!。
例如已经编写好了待执行的vba脚本,文件类型命名为.bas (其他类型文件,比如.mcr,可能不会被识别)。然后按下面的语法结构,修改CST安装路径和bas文件路径即可调用成功。这种方法和通过hfssapi包编写好相应的vbs脚本文件,再用MATLAB调用HFSS执行vbs脚本命令类似。不过这种方法在尝试调用高版本CST2022时,会因为采用了批处理(Batch)脚本调用而需要手动确认license的现象。
 
! "D:\software\CST2018\CST DESIGN ENVIRONMENT.exe" -m E:\test.bas
另一种方法则是通过matlab actxserver创建一个COM服务器,通过invoke调用COM对象或接口上的方法。
 
%如果装了2个CST,不管怎么切换license,其只会创建最新安装的cst对象!cst = actxserver('CSTStudio.application');%创建CST应用对象mws = invoke(cst, 'NewMWS');%调用MWS应用对象app = invoke(mws, 'GetApplicationName');%获取当前应用名称ver = invoke(mws, 'GetApplicationVersion');%获取当前应用版本号invoke(mws, 'FileNew');%新建一个CST文件filename='D:\CSTFile\Dipole_model.cst';invoke(mws, 'SaveAs', filename,'True');invoke(mws, 'Quit');release(mws);release(cst);
 
就通用性而言,第二种方法较优。网上也有很多关于这方面的代码可供参考,个人可以根据需求将代码进行封装,便于后续的传参调用。
 
实例展示
 
MATLAB调用CST
 
本文转载自微波射频网,作者:94巨蟹座少年
 
继续阅读
保护继电器保护什么?

保护继电器是一种智能设备,它能够接收来自电流、电压、电阻、温度、甚至光线等各种输入信号,并通过与预设点的比较来提供视觉反馈、通信输出和控制警报等功能。此外,它还可以关闭或打开电源,用于保护工业环境中的电机和接地故障。而调节继电器则是一种特殊类型的保护继电器,当运行参数超过预设限值时,会被激活以进行调节。

网络分析仪与频谱分析仪究竟有何区别?

网络分析仪和频谱分析仪是电子测试领域中常见的两种仪器。它们虽然可以完成某些相似的测试任务,但在实际使用中却有很大的差别。下面我们来详细了解一下这两种仪器的异同。

为何电解电容会爆炸?

电解电容器因其易发生严重故障而备受关注。在打开普通的 LED 灯泡时,我们常常会发现一个电解电容器在输入交流线路中占据一席之地。虽然照明级 LED 的使用寿命通常可达10,000小时以上,但其底座中的电解电容器可能无法长期维持。此类情况可能由多种原因引发,所造成的后果也是相当恶劣的。

一文详解射频芯片工作原理

传统上,一部手机通常由五个部分组成,包括射频、基带、电源管理、外设和软件。其中,射频部分负责信息的发送和接收,而基带部分则是信息的处理中心。电源管理则是确保手机能够节省电力以延长使用时间的重要组成部分。至于外设,包括LCD屏幕、键盘和机身等;软件则包括系统、驱动、中间件和应用等组成。在这些部件中,最为关键的则是射频芯片和基带芯片。射频芯片主要负责射频收发、频率合成和功率放大等任务;而基带芯片则处理信号和协议的相关操作。因此,射频芯片和基带芯片可以说是手机终端中最为重要的核心部件。

光刻中的掩膜技术与纳米压印

在半导体制造领域中,为了有效地反射EUV光线,通常需要在衬底上覆盖多层Mo/Si薄膜。下图显示了使用石英衬底的EUV掩膜。而为了连接静电夹具,背面还涂有金属涂层。相比机械夹具容易产生颗粒的传统夹具系统,静电夹具系统更加受欢迎。