CST MWS自定义激励源问题
自己定义了一个激励源。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
厉害,学习了,自定义一直不会用,都是用默认的
都是被逼的。其实很简单
做个记号 以后研究
牛哈 学习了