官方淘宝店 易迪拓培训 旧站入口
首页 > 仿真设计 > CST微波工作室 > CST MWS自定义激励源问题

CST MWS自定义激励源问题

05-08
遇到一个问题,自己定义的激励源与画出的图形都对,就是default的波形不对不知道为什么,求指点!
自己定义了一个激励源。vba如下:
' userdefined excitation function
Option Explicit
Function ExcitationFunction(dtime As Double) As Double
   'Assign the excitation signal value for the given time to the function name.
   ExcitationFunction =-3.131*Cos(2*3.14*600*dtime)-2.085*Sin(2*3.14*600*dtime)+0.9779*Cos(4*3.14*600*dtime)-1.684*Sin(4*3.14*600*dtime)+0.6571*Cos(6*3.14*600*dtime)+0.6599*Sin(6*3.14*600*dtime)-0.2716*Cos(8*3.14*600*dtime)+0.3825*Sin(8*3.14*600*dtime)
End Function
Sub Main
    Dim tmax As Double, ntstep As Long
    ' -------------- PLEASE ADJUST THE SETTINGS BELOW ----------------------
    tmax   = 0.2
    ntstep = 100
    ' -------------- PLEASE ADJUST THE SETTINGS ABOVE ----------------------
    Dim signal As Object, n As Long, tstep As Double
    Set signal = Result1D("")
    signal.Initialize ntstep
    tstep = tmax / ntstep
    For n=0 To ntstep-1
        signal.SetXY(n, n * tstep, ExcitationFunction(n * tstep))
    Next n
    signal.Save GetProjectBaseName() + GetProjectBaseNameSeparator() + "excitation function.sig"
    signal.AddToTree "Excitation Signals\Userdefined Functions\default_plot"
    SelectTreeItem  "Excitation Signals\Userdefined Functions\default_plot"
    Resulttree.RefreshView
End Sub
红色部分为改动部分,运行图形如下:



但当保存后,默认的激励信号竟然如下图所示:
  



明显这个图形不是我想要的,不知道原因是什么
另外EXCitation signals设置如下图:
  



求高手解答

难道与Min.Simples有关吗?

可能有单位换算的问题,VBA、Imported和User Defined信号都是以秒为单位的,default显示的信号是以模型内定义的时间单位为准的。
具体有什么影响我也不太清楚,没自定义过。
CST MWS帮助文件《Excitation Functions》和《Excitation Signal》。

我的default信号下面表的单位也是秒,vba的单位我不太清楚,那两个帮助文件我看了,没找到啊

在vba文档里有这么一句话:
Please note that the total time of a user defined signal is always interpreted in the unit seconds.
这是什么意思

用户自定义信号的时间单位固定使用“秒”。

hefang不仅负责解答技术问题还兼职英译汉了

直观的看幅值没有出入,就是频率提高5~6倍,不知道是不是设置问题?

可以设置的地方只有最后一幅图,MIn.simples和total time,不知道这两个有什么设置问题

我还以为,这句话是:无论用户定义的total time 是多少,cst都默认为是单位时间,即1s

我试过多种方法,发现修改最后设置中的 Ttotal,会改变default波形,改的越小,越疏松

没有解决,改动了Ttotal,就跟我定义的信号完全不同了啊

你看solve  units  中的时间单位就是dtime的时间单位  如果是ns的话 你的信号频率w最低有600GHz,最高有2400GHz
Ttotal小了你就只看到了信号的很小一部分,相当于用放大镜放大了当然稀疏啦

恩,有道理
但我的工作室是低频工作室,时间单位是s,vba单位也是s,现在初步怀疑是步长跟simple的问题

感谢moviez、1_968,感谢hefang老大,经过一番调试,终于是出了结果
下面是我的调试思路:
(1)首先找一个cst自带的库激励函数sine,对其进行ttotlal和频率设置
(2)然后用自定义函数重写该函数,从而试出vba中的ntstep跟default中的Minsimples是一一对应关系,而且tmax不要设置的太大
,否则会导致绘制出来的波形与想得到的波形不一致
(3)下面绘制完波形后,运行(之前要将sub main2改成sub main)
(4)返回编程界面,将sub main改回sub main2,点击保存
注:Sub main在vba仅作调试用
(5)返回模型界面,将properties中的ttotal改为与vga中tmax一样的值,Minsimples改为tstep一样的值
(6)点击apply,这点很重要,否则之前的工作都白做,然后点击ok
希望大家遇到这样的问题不会在犯难,谢谢

对了,忘了一个很重要的问题,要确保模型下定义的时间单位与vba的时间单位(默认为秒)一致!1

厉害,学习了,自定义一直不会用,都是用默认的

都是被逼的。其实很简单

做个记号 以后研究

牛哈 学习了

Top