↑ 点击上方“Amesim学习与应用”关注我们
整理需求可知,其实核心需求就是“元件的变量结果能够被采集出来、元件的固定参数能够被信号端口输入进去”。
关于“元件的变量结果能够被采集出来”,其实相对容易,有很多信息都是可以被传感器引出,例如如下的传感器就是将质量块端口的位移信号引出。
对于传感器无法引出的变量,还可以通过“感应内部变量”的方法,将其转化为信号引出,用于进一步使用。
关于“元件的固定参数能够被信号端口输入进去”,其实仔细查看库中的元件,此类情况比比皆是。例如如下模型中的两个弹簧,差别仅在于:弹性系数是固定值还是信号输入。此类元件非常多,经常是两个相似的元件只是端口数量不同,其实差别就是将部分固定参数改为了信号输入控制。
既然如此,其实我们已经知道,满足此类需求最通用的方法,莫过于“修改模型”。Amesim提供了二次开发工具,通过“工具-子模型编辑器”就可以修改元件,可以重新绘制图标,修改代码,当然也可以把任意变量引出或者把任意参数引入,此工具的详细教学视频见“第5期 Amesim二次开发专题”,在此不再赘述。
通过“子模型编辑器”修改元件,那自由度太高了,各种功能都可以实现,但是对于建模和使用软件的人来说,修改代码啥的挺麻烦的!我一想,咱这公 众号也是几万人关注,我得整个活秀一波,把这事情给简化一下,感觉责无旁贷啊。
我的主要思路,还是利用脚本去做。可谓一人辛苦万人收益,必须简单好用。于是我开发了一个通用工具,意图相当明显,只要填写变量和参数路径,点击开始,则可以在当前仿真模型运行过程中,将任意元件变量结果实时同步到任意元件参数中,岂不妙哉。
界面绘制完毕后,编写代码手到擒来自是不必多提(实际花了一晚上),然后到了令人兴奋的验证环节。我将一个sin信号和一个constant信号放在一个模型中,在整个仿真模型运行过程中,实时提取sin信号的结果填写到constant的参数中,理论上两个元件输出的曲线应当完全一样。
实际上测试也是非常完美,此工具不开各算各的,只要开启了就可以将sin信号的计算结果传递给constant的参数,从而两个元件输出了相同的曲线,有请欣赏如下视频。
上文内容做完,准备发出来给大家用,结果不放心又做了一个复杂的模型测试,结果很遗憾,测试失败!本来已经到了闲庭信步吹牛的时候,被当头一棒,简直是令人心态爆炸。
仔细分析了一遍,发现Amesim支持仿真过程中直接修改参数的,仅限有如下图标的参数,如果参数前面没有这个图标,用脚本写进去的参数完全起不到影响仿真计算的作用。
总之,截止目前还是没有搞定,如果有哪位大侠知道原因,请透露一二。虽然没有取得预期效果,但是积累了一些经验,再接再厉,争取早日搞定。