qinstein 发表于 2013-3-7 11:49:37

求助ADAMS与联合仿真问题,motion值否设为变量

大家好,我是中科院光机所的博士研究生,现在在做联合仿真遇到了问题,我想建立一个转角变量和一个位移变量,然后把motion值设置为VARVAL(.MODEL_1.zhuanjiao)。然后指定转角为输入变量,位移为输出变量,导出控制参数,在matlab中联合仿真,但是总是报错,提示MOTION should only be function of Time。
我想问,是不是输入变量不能是转角?或者motion值不能为变量??谢谢~

xuhcheng 发表于 2013-3-7 12:40:21

可能是Motion函数的类型选错了。
检查一下Adams中Motion编辑框中函数的类型,默认输入的是位移,此时,matlab中给的输入也应该是位移,而不是速度。如果你想在Matlab中输入速度的话,需要将类型改为速度。

qinstein 发表于 2013-3-7 15:28:31

xuhcheng 发表于 2013-3-7 12:40 static/image/common/back.gif
可能是Motion函数的类型选错了。
检查一下Adams中Motion编辑框中函数的类型,默认输入的是位移,此时,matl ...

我在Adams创建了旋转副,然后在此添加了旋转驱动,来模型舵机的角位移控制,这里Motion选的是位移,在它的Function栏里我填入了状态变量VARVAL(.MODEL_1.zhuanjiao),然后在Matlab对此变量输入定常值时,联合仿真能运行,输入正弦信号,结果就报错了,请问Matlab如何改为位移信号,它不就是数值么

xuhcheng 发表于 2013-3-7 19:05:29

根据帮助文件:
The following describe what happens to the Adams Plant inputs (i.e., outputs from Easy5 or MATLAB/Simulink) when Simulink or Easy5 leads the co-simulation.

?
If the Plant Input interpolation order is set to zero:


Adams/Controls holds the Easy5/Simulink inputs, U, as constant values. In other words, apply a zero-order hold to the Plant Input values of Easy5 coming into Adams. For example, specify that the sample times occur at time = 0, 1, 2... If the current sample time is time = 2, and the last communication interval is time = 1, the Plant Inputs are sampled at time = 2, and held constant while Adams integrates from the last time (t1) to the current time (t2) to provide the Plant Outputs to Easy5.

?
If the Plant Input interpolation order is set to one:


Adams/Controls uses linear interpolation between the current and past values from Easy5 or MATLAB/Simulink. For example, if the current sample time is time= 2 (t2), and the last sample time is time = 1 (t2), the Plant Inputs are sampled by Adams/Controls at time = 2, and linearly interpolated from t1 (saved from the previous communication time) to t2, as shown below while Adams integrates from the last time (t1) to the current time (t2) to provide the Plant Outputs to Easy5.


在Matlab中,双击adams_sub中的ADAMS Plant,将下图红框中的数值改为1。这样就可以了,你试试。

peter_evi 发表于 2013-3-7 20:27:06

本帖最后由 peter_evi 于 2013-3-7 13:31 编辑

提示错误motion should only be the function of time, 所以你motion中的函数除了包括你定义的变量外,还应该包括时间,比如设置为角速度乘以时间,而不是设置为转角,所以需要你考虑你的系统变量该如何设置,这样子你再试试,我没试过联合仿真。
我应该说错了,楼上的应该是正解……不好意思

qinstein 发表于 2013-3-11 15:11:17

xuhcheng 发表于 2013-3-7 19:05 static/image/common/back.gif
根据帮助文件:
The following describe what happens to the Adams Plant inputs (i.e., outputs from Eas ...

亲,我用了你说的方法,将数值改为1,结果还是不行啊,依旧提示Motion should only be function of time。大哥,很感激你的帮助,你还有什么方法么~

xuhcheng 发表于 2013-3-12 15:11:54

本帖最后由 xuhcheng 于 2013-3-15 20:55 编辑

qinstein 发表于 2013-3-11 15:11 static/image/common/back.gif
亲,我用了你说的方法,将数值改为1,结果还是不行啊,依旧提示Motion should only be function of time ...
错误的原因可能是位移突变了,Adams无法进行微分。

snoweryt 发表于 2013-5-6 14:50:09

请问你试过motion的函数设置为初值非0的数值曲线,比如cos函数,在matlab里输入该信号,然后联合仿真

snoweryt 发表于 2013-5-27 23:40:53

楼主可以看下我的帖子,可能和你的有类似之处。
http://forum.simwe.com/forum.php ... %3D90%26typeid%3D90

后来我把驱动换成point motion,再进行联合仿真,在matlab里输入正弦信号,然后就出现有的模型可以,有的模型还是存在信号丢失的情况。

snoweryt 发表于 2013-5-27 23:43:17

我看有的帖子说,adams里最好是输入力矩,输出角速度和角度,再在matlab里设计一套控制系统。因为adams里直接输入位移,如果有突变什么的,会出现问题
页: [1]
查看完整版本: 求助ADAMS与联合仿真问题,motion值否设为变量