【分享】car与simulink联合仿真大总结
一直困扰我的acar与simulink联合仿真今天终于做通了,以发此贴给大家一些建议。我做的这个例子很简单,主要目的是将acar和simulink调通。使用的软件平台:adams2005r2,matlab7.01 步骤如下:
1,打开car的例子mdi_demo_vehicle_it,在tools/plugin manger中调出controls
安装如下图片设置control:
[ 本帖最后由 duanxc314 于 2006-5-20 15:18 编辑 ] 2,对整车进行仿真,安装如下的图片进行设置,注意mode of simulation选择为files_only.
3,在matlab中用编辑器打开Controls_Plant_1.m
修改ADAMS_prefix = ' Controls_Plant_1' ;为ADAMS_prefix = 'AA_iso_lane_change'
4,打开AA_iso_lane_change.m文件,将ADAMS_outputs修改为'testrig.steering_wheel_angle';
5,将ADAMS_init = 'file/command=Controls_Plant_1_controls.acf' ;改为ADAMS_init = 'file/command=AA_iso_lane_change_controls.acf' ;
6,打开matlab,在光标后输入Controls_Plant_1,出现
%%% INFO : ADAMS plant actuators names :
1 testrig.steering_wheel_torque
%%% INFO : ADAMS plant sensors names :
1 testrig.steering_wheel_angle
再输入adams_sys弹出一个adams_sub的plant
7,新建一个simulink model,将adams_sub放入这个控制系统中系统中,plant的输入是转向力矩(再这里是个正弦函数副值为150),输出是转向角度。
8,设置adams_sub的参数其中output files prefix设置为‘AA_iso_lane_change’其他的参数如图所示。所建立的控制框图如下,注意这是个开环系统
9,个人感觉最重要的的几点就是:将adams_server.py,adams_plant.dll,decode.m这三个文件找到(这三个文件在我的附件中),放入当前的工作目录,这样可以大大减少出错的机会,还有就是adams和matlab的工作目录选为同一个工作目录。Car与simulink仿真 和 view与simulink仿真有点区别的地方就是文件名要一直,否则很容易出问题,这就是为什么要修改m文件的原因所在。
具体的操作见我的附件,图片发上去有点麻烦;adams_server.py,adams_plant.dll,decode.m这几个文件也在附件中。
[ 本帖最后由 duanxc314 于 2006-5-20 15:24 编辑 ] andyxin也忒夸张了点把,一下子给我加了5分:lol 在坛里面确实学到了不少冬冬,这里要感谢各位版大,还有chenjun1638兄,对car可说是玩于股掌之间,还有很多的xdjm。下面一个附件是在msc的vpd上看到的,还是比较经典的,有兴趣的兄弟可以去 http://forums.mscsoftware.com/ 看看,可以大开眼界的,里面的很多人都是大汽车公司的研发人员,还有就是msc的官方技术人员。 能不能说下在adams/view中怎样进行matlab-simulink的联合仿真呀? 原帖由 小豆豆 于 2006-5-29 13:36 发表
能不能说下在adams/view中怎样进行matlab-simulink的联合仿真呀?
在置顶得精华贴里面就有很多呀,先看看版内的帖子把,wxd等高手总结的挺完善的。 非常感谢,我也在做这方面的研究 duanxc314 大虾,我照着你的做了一下,为什么老是最后一步抱错??
还有:
3,在matlab中用编辑器打开Controls_Plant_1.m
修改ADAMS_prefix = ' Controls_Plant_1' ;为ADAMS_prefix = 'AA_iso_lane_change'
4,打开AA_iso_lane_change.m文件,将ADAMS_outputs修改为'testrig.steering_wheel_angle';
5,将ADAMS_init = 'file/command=Controls_Plant_1_controls.acf' ;改为ADAMS_init = 'file/command=AA_iso_lane_change_controls.acf' ;
第五步的ADAMS-INT本来就是ADAMS_init = 'file/command=AA_iso_lane_change_controls.acf,好像不需要改了。会不会是Controls_Plant_1.m中的啊?
小弟不才,望赐教! 谢谢,已经做出来了!
呵呵! ADAMS_outputs = 'testrig.body_disp_x!testrig.body_disp_y!testrig.body_disp_z!testrig.body_velocity_x!testrig.body_velocity_y!testrig.body_velocity_z!testrig.body_acce_x!testrig.body_acce_y!testrig.body_acce_z!testrig.body_roll_angle!testrig.body_roll_rate!testrig.body_pitch_angle!testrig.body_pitch_rate!testrig.body_yaw_angle!testrig.body_yaw_rate!testrig.body_yaw_acce!testrig.body_side_slip_angle!testrig.steering_wheel_angle!testrig.steering_wheel_velocity!testrig.steering_wheel_acce!testrig.steering_wheel_torque!testrig.steering_rack_travel!testrig.engine_speed!testrig.var_dist_travel!testrig.vas_steering_demand.variable!testrig.vas_throttle_demand.variable!testrig.vas_brake_demand.variable!testrig.vas_gear_demand.variable!testrig.vas_clutch_demand.variable' ;
ADAMS_pinput= '.MDI_Demo_Vehicle.Controls_Plant_1.ctrl_pinput';
在adams中的设置输出量为testrig.steering_wheel_angle却在matlab的m文件中出现好多没有要求输出的量。这是为什么!谢谢 原帖由 zhc198111 于 2006-6-21 11:07 发表
ADAMS_outputs = 'testrig.body_disp_x!testrig.body_disp_y!testrig.body_disp_z!testrig.body_velocity_x!testrig.body_velocity_y!testrig.body_velocity_z!testrig.body_acce_x!testrig.body_acce_y!testrig. ...
把那些不需要的变量去掉,留下想要的即可,注意id和变量对应
联合
duanxc314 你好! 我最近也在学习联合仿真,但是我感觉在car下面做整车的联合仿真,不用control plant就行了,本身那个选择了files only之后,仿真就会生成5个文件,里面已经包含了m文件了啊不知道是不是这么回事
请指教
希望得到你的帮助 qq 312248926 希望能加如好友交流 谢谢啦,收藏了慢慢学习 楼主,我按你说的方法一步一步地做了,唯一的不同的是,我用的matlab是6.5,仿真也能进行,但是最后看到testrig_angle显示为什么都是零啊,也就是车子根本就是在直线行驶,这是怎么回事啊?哪位高手做对过,也可以来指导一下了,谢谢了。:) :(哪位高手来看看,给解释一下撒。做对的帮帮忙了。斑竹help!!SOS!!:lol 原帖由 zhxw198023 于 2006-9-12 10:17 发表
duanxc314 你好! 我最近也在学习联合仿真,但是我感觉在car下面做整车的联合仿真,不用control plant就行了,本身那个选择了files only之后,仿真就会生成5个文件,里面已经包含了m文件了啊
不知道是不是这么回事
请 ...
这样做确实也可以仿真,在msc的网站上有一片文章就是这么做的,我也照着试着做了下,仿真结果是,不管我怎么改变输入,输出就是没有变化:(估计可能所进行的仿真只是adams自己的仿真,根本就没有通过matlab的控制。另外有对文件中的*.m文件中的一些语句的含义不是很清楚,希望高手能给讲解一下 请问下载的附件都是php格式的,怎么才能打开看阿?下载php.exe总是特小,不能用,用记事本也打不开。谢谢 自己顶,现在论坛上人好少。希望高手来解释一下了,做不对啊 duanxc314版主:
你说的方法是不是有正确的计算结果啊?好像仿真是完成了,但正如li20183333所述,结果没有变化啊,我试验了很多次都是和li20183333一样,怎么就是搞不好呢?痛苦啊。
实在不行只好通过matlab\real time workshop把控制系统导入car了,还不知道会不会也这样。哎......
请版主再赐教。 帖子一直没有回应,自己顶,期待解决!期待ing。。。。。。:( 不好意思,最近一直比较忙,没怎么来simwe,联合仿真是个比较麻烦的事情,要有耐心。我在做这个例子的时候确实得出结果没有变化,我的课题后来都是用adams2003完成的,官方网上说2005r2做联合仿真缺少一个补丁,而我一直没找到,所以目前只得用2003撮合。