新浪博客

Matlab与Adams联合仿真的实现(3-2)

2011-06-10 10:30阅读:
下面来创建ADAMS控制系统模型。如下图,ADAMS和Matlab联合仿真,它们之间要有信息的交换,ADAMS要把模型的当前位置、速度等信息告诉Matlab,而Matlab要根据控制算法,告诉ADAMS电机要转动多少角度来尽快达到稳定。对于ADAMS模型来说,就要有相应的输入和输出。
image_thumb34
这里把雷达摆动的驱动力矩azimuth_actuaror作为输入,把雷达天线仰角的方位角azinuth_position和马达的转速rotor_velocity作为输出,而ADAMS程序与控制程序之间是通过相互传递状态变量进行信息交换,所以要将模型的输入输出变量及其输入输出函数用一组状态变量来表示。在这个ADAMS的例子中,它们已经被定义好了,现只来查看一下。

查看输入变量:
选择Build|System Elements|State Variable|Modify
image_thumb37

双击main_olt,选择control_torque,OK,查看此状态变量
image_thumb41 image_thumb42
可以看到它的控制力矩为0.0,因为控制力矩取自控制程序的输入,而不是此处定义的值,所以在系统仿真过程中,程序会自动根据控制程序的输出实时刷新控制力矩的值。
image_thumb44

查看输入函数:
在这里输入函数就是驱动力矩azimuth_actuaror与上面定义的输入变量之间的关系,ADAMS与Matlab通过输入变量和函数联系在了一起。
右击驱动力矩azimuth_actuaror,选择Torque:azinuth_actuator|Modify
image_thumb46
可以看到Function的表达式为VARVAL(control_torque),而VARVAL()是一个ADAMS函数,它返回状态变量control_torque的值,也就是说,给雷达天线输入的控制力矩azinuth_actuator是从状态变量control_torque处获得的力矩值。
image_thumb49

查看输出变量:
同理,可以查看方位角azinuth_position和马达的转速rotor_velocity的状态变量,如下,其中AZ(MAR70,MAR26)表示函数返回轴承上标记点MAR70绕大地上标记点MAR26的z轴旋转的转角角度值,从而将雷达天线俯角的方位定义为输出变量,传递给控制程序;WZ(MAR21,MAR22,MAR22)表示函数返回马达上标记点MAR21绕大地上标记点MAR22的z轴旋转的角速度值,从而将马达转速定义为输出变量。
image_thumb51 image_thumb53

上面定义了用于机电联合仿真的输入输出变量,但是在ADAMS/Control模块的输入输出设置中还不能直接使用这些变量,需要将这些状态变量定义为输入输出宏
输入宏的定义方法为
选择Build|Controls Toolkit|Plant Input
image_thumb60
如下图,定义输入宏
image_thumb58
输出宏同理可定义,但实际上,雷达天线的输入输出宏在导入时已经定义好了,无需再定义,可以在Edit|Modify…中可以查看
image_thumb62 image_thumb64
image_thumb67
而那个PINPUT_2是我们刚才定义的。

然后就是设置ADAMS/Controls模块,导出相应文件:
选择Controls|Plant Export,选择相应的输入输出宏
image_thumb72
File Prefix可以修改为你想要的名字,Control Package改为MATLAB,如下
image_thumb73
OK,完成设置,在ADAMS的当前目录下就产生了3个用于联合仿真的文件:一个是保存ADAMS/Controls输入输出信息的MATLAB程序文件GJTest.m,一个是ADAMS/View命令文件GJTest.cmd,一个是ADAMS/Solver命令文件GJTest.adm。

我的更多文章

下载客户端阅读体验更佳

APP专享