advisor原创教程
- 格式:pdf
- 大小:873.04 KB
- 文档页数:15
ADVISOR2002基础到高级引导教程(原创)By Scofision From NJUST
第一部分:
软件安装及使用
ADVISOR是基于matlab/simulink开发的先进电动汽车软件,主要功能是用于分析,而不是
设计,从我对其help的阅读了解,ADVISOR需要且最好安装在matlab6.1上,当然matlab6.5+
需要安装补丁(补丁由mathworks提供的),当然还有网传的matlab在更高版本上运行,
可信度不高(后面分析,还有弊端),并有人以此为牟利,我和另一个朋友ID:继续潜水,
不提倡网上朋友花钱购买那个,而继续潜水也根据他的研究,提供了一种方法可以在高版
本上运行,但对于有二次开发需求的朋友,高版本上二次开发貌似还有缺陷,需要继续研究。
上面这个是advisor2002的安装程序包,它其实是一个压缩包类型的文件,Extract T o指,文
件展开(安装到)Drivers那个驱动器上。
比如,我文件安装到D:\advisor2002,我选择D:\ADVISOR2002然后点击extract解压.。
你会发现系统创建并把文件解压到advisor2002中了。
好,这里我们先来认识下张开后文件夹个文件夹的含义:
Data文件夹(不是Dota,呵呵)里面是车辆部件数据文件,包括很多,在这不逐个解释,后面需要的时候在解释。
Documentation文件夹是帮助文件夹,里面都是帮助文件,当然你可以在软件开启的时候,打开,有些浏览器问题可能会打不开,你可以在浏览器地址栏输入:
D:\advisor2002\documentation\advisor_ch1.htm
上句地址的含义是在你所安装的advisor文件夹中找到advisor_ch1.htm文件而已。
Extras文件夹是扩展文件夹,包含着,电池模型扩展;发动机模型扩展;发动机map图转成数据图(image2map,这里的2代表to(two=to),转换的意思,开发的人为了方便,写成这样,后面有好多都是这样的表示);还有简单的数据比较文件夹;发动机比例转换;还有第三方优化软件VSOLE的文件夹。
GUI文件夹,很重要,二次开发的注意:
里面包换的都是Guide GUI开发的fig文件和m文件,这2部分组成了用户界面,控制着程序的运行,相应用户的操作。
新手可以关注下。
Gui_graphics 顾名思义,就是GUI开发需要用到的图片什么的,当然也有声音。
(有趣的修改:比如你自己录个声音保存成wav格式‘welcome to advisor!’,然后替换advisor.wav,软件开启的时候,就是自己的声音,这个比较个性化,有趣的东西,很简单。
)Interactive文件夹:是用户交互式仿真,大家如果英文好,其实advisor学起来也快。
Models文件夹:里面都是advisor内置的车辆模型,是simulink开发的,需要注意的是library,即库文件夹,里面是个部件的simulink模型。
对于2次开发,也需要认真关注。
Optimization是优化文件夹。
vdoc_matlab是优化程序,具体怎么用,可以看看它的help。
Tmp是临时文件夹,计算时候临时存放数据的
Save_vehicles,保存的车辆整个数据的文件夹,等界面的时候再说。
其他的文件用到时再说。
首次开启软件,如下,打开matlab/然后在当然目录下选择安装advisor的软件文件夹,然后在command中输入advisor,会有首次安装组件设置,点yes。
Ok如下。
第二部分
GUI初步引导(需要软件界面开发的,自己研究下,有需要再讨论,我对GUI认识也很浅,一起进步)
网上经常有人问:是否有汉化版本?我在文献中看到有中文版的!种种问题,在此我初步解释,
Advisor的GUI开发是通过guide GUI开发的,所以界面控件很容易改。
这里,我可以公布简单的汉化过程:
首先,打开matlab 在命令行输入;guide,熟悉下开发界面,一般的matlab基础知识的书
都会有讲。
需要的人找本相应的书看看,建议(GUI设计学习手记,好像是北航学生自己出的,当然其他书也行,不深入的人看个大概就行)
然后点击菜单-file,找到advisor.fig开启界面,仔细看看,双击控件,或者控件属性
需要懂各部分左边属性意义,举个例子,第一个backgroundcolor,指控件背景颜色,你修改下红色,重新保存advisor.fig文件,然后命令行输入advisor时,开启的界面那个颜色就会改变。
OK基于简单原理,我们去寻找一个每个控件的string值,把他翻译成中文。
比如:‘start’修改成‘启动’,重新保存,就ok,后面如上试验下。
所以,我们汉化的主要工作就是把每个控件的string的英文值修改成中文值,就ok,之后,我们需要做的只是重复工作,前面部分说过的GUI文件夹中,找到以fig为后缀的文件,比如inputfig.fig,就是输入界面,请依次修改,汉化就ok。
(特别注意几个问题:1,控件的属性值callback是回调函数,不深入的朋友勿动,他是响应控件操作的属性,第二tag属性值,新手也勿动,它相当于控件的ID,有点像c语言的指针,不晓得这样说对不对,我c语言还在自学中。
)
第三部分:软件的熟悉
首先,说明在软件开启的过程,请注意matlab命令行,还有workspace。
(workspace后面再说。
)
1,vehicle input是车辆输入的模型,只是一张图片,每个固定区域双击,都有响应。
如:点击发动机那部分,打开发动机模型数据文件选择的GUI界面
2,左下部分,是图片是车辆部件的数据转化成图片,如:燃料转换器(fc_converter,可以有三种:一种是汽油机,柴油机,还有燃料电池)里面的数据,转速,转矩,和燃油消耗率,转化成map图。
软件开启默认是并联结构,fc默认是fc_SI41_emis.
如果觉得图看的不清楚,你可以点击以下图,然后电机菜单edit,然后里面有3个copy….,n你点击,然后可以在打开图,在matlab中修改,放大,等等操作,动手试试。
3,中上,load file,是选择已有的车辆整个数据的m文件,仔细认识下,你点击load file,
打开界面
选择需要的文件,双击view/edit m-file
部分解释:global vinf,代表全局变量vinf的声明,全局变量通俗的讲指,matlab的创建的函数,包括子函数及其他函数,都能用这个变量。
,特别注意其中的“.”这代表它是个结构变量,(c语言类似),后面的'PARALLEL_defaults_in'是这个变量的赋值,“''”这个形式代表是个字符串。
如果以上不了解,请先看看matlab基本知识的书。
懂上面的,余下的好解释了:
='parallel',指驱动链名为parallel,(并联形式)
vinf.XXX.ver,指XXX部件的模型(version的缩写ver,注意advisor很多都是缩写)vinf.XXX.type,指XXX部件的类型
,值XXX部件的名字
(注意:试试把parallel改成series其他不变,会出错)
4 drivetrain config,代表驱动链结构,分别有(串联,并联,纯电动,传统汽车,自定义,pruis形式和insight形式),这里是和上面的有关联,如果第3点吧parallel改成‘ABC’,当载入车辆文件的时候,matlab会发现没有对应的驱动链ABC,matlab提示错误。
5 在之后的都是车辆结构数据文件,部件数据文件,vehicle里面有风阻系数,重力加速度,车重,车的重心高,等等
Fc_converter值燃料转换器的数据文件,点击ic旁边的倒三角选择fc的simulink模型(它
会自动选择的),点击is,选择模型的形式(汽油or柴油),后面的41代表最大功率,0.34代表最高效率,131代表fc的重量。
(注意,这里的数据都太老了,因为本身advisor开发的年代较早,发动机的一些数据都太老,如果用advisor建模需要现在发动机的实验数据,如果没有,有一种方法是通过内置发动机的map图,比例换算,但这是在没办法的情况下——这里我指的是数据建模,不是simulink建模,后面再说明)
6 ok,其他部分自己琢磨,自己研究出来的东西,才记得清楚,懂的明白。
如果不懂欢迎来汽车工程师之家/advisor版区讨论,看教程做的,如果多了,我就后面单独另附教程,如果不多,我就写到这篇教程了)
7,view block diagram,代表浏览advisor整车的顶层simulink模型,如下:
(注意:advisor是前向后向模型建立的模型,后向指——从工况模型到车辆模型,再到轮胎,依次下去,最后一个部件反向计算,是需求功率等的计算,从上图中可以看出,是向右的方向,反之,向左的方向是前向模型,后向建模个人认为对于分析性能很好,向前模型对于设计很好,请品味这句话。
还有前向模型的软件一般会有驾驶员模型,指驾驶员的操作-加速踏板,制动踏板信号等)
7 中下的variable,是变量值的修改,只要部件数据文件中含有的变量都可以通过这里修改,比如fc_acc_mass,(发动机附件质量,默认的,是32.8kg,点击Edit Var,修改为35kg,点击ok,仿真的就已35kg计算。
这里必须要说的:个人非常不建议这种方法来修改变量保存仿真,这里修改的变量,你需要逐个修改,可能你会修改了一个忘了哪个没修改,还有修改了只有仿真一次有效,也就是说,除非你修改之后每次都要点击save 按钮把新的车辆的全部数据保存成m-file,才能多次仿真有效。
而且在这里改还不容易了解各部件的内部数据结构,不建议,不建议,最好你建模的时候是一打开部件m-file,比如电池,ess_PB25,你打开,逐个认识变量,了解结构,当你懂了内部结构,然后根据实验数据,依次修改为你的数据,仿真
准确度相对较高。
(当然没实验数据,特别是国内做论文,只能以相近的电池数据比例计算来得到。
)
8 auto size 自动尺寸计算,个人认为它是有点前期优化性质,
它有2种方法,一种是用matlab自动计算,一种是第三方软件visualDoc计算,指的是满足约束的情况下,自己计算以下部件的参数,约束有2个,一个是爬坡度,一个是加速性,设计的部件名有:燃料转换器,ESS个数(电池个数),motor size电机尺寸,还有其他等等,对于visualdoc,还可以有设计目标。
和设计循环。
9 设置好所有部件的参数之后,点击contisue,继续进入工况选择,和仿真性能要求设置。
左上是工况的数据图,横轴是time,纵轴是speed,(oh,前面忘了说,软件开启的时候,有单位选择,国内用metric米制,国外用的是US英制,如果前面忘了选,可以在菜单栏还有机会修改)。
10 drive cycle,是行驶工况,点击它可以编辑对应的工况,点中不放CYC_UDDS旁的倒三角,可以选择其他工况,trip builder 是多工况集合,可以选择多工况模拟,比如,CYC_UDDS和CYC_ECE,然后重命名,选中之后,ok,可以对2工况的模拟,time step 是时间步长,# of cycles 代表工况数据,比如输入在这输入10,代表10个UDDS的模拟,因此可以用这个进行行驶里程仿真。
11 ) SOC correction 值,电池SOC(电量)纠正,一个是线性纠正,一个是0值纠正,cyc filter指没几秒过滤一次纠正。
(这部分我理解不够深,如果错误,谢谢指出。
)
12 initial condition,指初始条件设置,里面有初始温度,初始电量等设置。
它和GUI里
面的这几个文件有关系,后面讨论。
13 constant road grade 是指恒定的道路坡度,一般道路的坡度值
14 interactive simulation 值交互式仿真,没用过,从我的研读来看,他是根据外部信号(加速踏板信号,制动踏板信号,模拟出工况,然后仿真,有点类似前向仿真。
)
上图是models文件夹里面的interactive模型,特别注意Altia_off和Altia_off,然后再
看工况,里面的这2个值,后面有时间细说。
14 test procedure,是指测试工况模拟。
点击右边会出来解释,仔细读读。
15 accel option和grade option,
细说下,
1)shift delay,换挡延迟,默认0.2秒,
2)enable/disable systems 下的,all system enable 代表发动机组输出(FC到GC输出)
和ESS(电池组)一起工作输出,即2者同时有效时进行加速性测试。
Energy storage disabled,电池组不工作时的加速性测试,fuel converter disable 然后在选initial SOC,发动机无效,然后初始多大电量时,加速性测试。
3)mass parameters,三个选择,指使用当前质量,超越当前质量,(这和软件参数输入
界面的override mass,效果一致,如果选择,代表仿真只用这个质量,不会考虑其他部件质量,总质量等;第三个是当前质量上增加多大质量来模拟加速性。
4)test results 主要加速性时间测试(3个可选),多少秒内行驶的距离测试(默认5s
内行驶距离);行驶多长路程需要的时间(默认0.402km,需要的时间模拟);max accel rate指加速度模拟;max speed,最高车速模拟。
5)下面有个load PNGV,指载入美国定的一个标准叫PNGV,(据我了解,要求达到100
公里3L燃油消耗的要求,当然还有其他要求)
爬坡度模拟设置界面
基本参数:
如果grade不勾,speed打钩,duration也勾,gear number 勾代表,在speed速度的要求下,持续10秒,1档时候的爬坡度模拟。
如果grade也勾,则代表该车速下,该爬坡度的验证!
举个例子可能更容易懂:
Grade=无,speed=5/1.609(因为单位换算,从mph2kmh为1.609代表5km/h的爬坡速度,然后duration=10s,gear number =1档
如果grade=20%,speed=5/1.609代表5km/h能否爬20%的爬坡的验证。
下面2个和加速性解释一致,在后面的solution condition,坡度要求上下限,爬坡度最初步骤,车速的容忍度,坡度容忍度,最大迭代次数,模拟时和是否显示在matlab界面。
工况选择界面中得Parametric study是参数研究,代表几个参数研究,最多可选3个参数,上下边界,然后取几个点(#Pts),如果选择3个参数,输出的是一个map图,代表这三个参数的改变,燃油经济性或者排放等其他的改变,可以得出比较直观的结果。
16 电子附件载入及控制策略参数优化,后面单独做教程。
17 结果界面
左边是仿真结果之后,可选择的输出参数变量随时间变化的图,最多可选4个图输出,右上角component是选择要输出的结果的部件选择,它的下面是该部件所能输出的变量选择。
比如,我需要输出电池的SOC随时间变化图,你选energy storage ,选择ess_soc_hist,,就能输出电池SOC随时间变化。
Fuel consumption(L/100km)代表工况百公里燃油消耗量,gasoline equivalent 代表等效汽油消耗量,distance代表行驶里程,emission代表排放(主要是HC,CO,NOx ,PM),在此之下是加速性和爬坡性测试的结构,energy use figure,是能量具体使用细化图表,包含有能量损失图和制动回收图(以柱形图输出),output check plots 代表具体输出主要部件的运行效率点等。
点Sim data可以输出多个仿真结果的比较,(注意:通过菜单保存的数据文件名字不能以数字开头,否则不能进行比较)同理test data。
Replay是重放功能。
第四部分:高级引导
工况的修改或者再开发可以3种方法:
第一种:对于恒速工况模拟,很多时候,我们需要恒定车速模拟,advisor中是以CYC_constant,为基础修改,如果你读了懂工况的数据m文件。
请看如下部分:
解释:if ~exit(‘vel’)为真(1)则vel=10(车速为10),cyc_mph是2列的矩阵,第一列是代表时间,第二列代表车速,以上矩阵代表,0-5s内车速是0 ,5-50s车速是10(vel=10),
所以你需要特定的恒定车速仿真,你可以设置vel值,为了单位转算(mph2kmh)最好在end之前加一句,vel=vel/1.609
第二,工况在开发:
对于特定工况,比如CYC_UDD,看工况数据文件,35行有一句load CYC_UDDS.mat 从这句出发,你去寻找这个mat文件,它在data文件夹的drive_cycle ,通过matlab载入cyc_UDDS.mat 文件,里面有cyc_mph,同样也是2列,第一列代表cyc_mph(:,1)时间,第二列cyc_mph (:,2)代表车速,基于这考虑,我们可以通过matlab,或者增加,行数,或者比例换算可以放大缩小工况cyc_mph=[cyc_mph(:,1)*0.5 ,cyc_mph(:,1)*2],这里*后面的是比例系数。
当然还有第三种方法:如果有真实的实车行驶工况数据,你可以通过excel把它改成2列,然后运行cyc_mph=xlsread(‘X.xls’),X.xls代表含有2列的excel文件名。
(注意:在工况开发的时候,matlab的workspace只能有cyc_mph变量,也就是说你advisor 不能打开,举个例子,你先clear all,然后找到data/drive cycles中的UDDS.mat文件,打开他,然后cyc_mph=xlsread(‘X.xls’),当然x.xls要在当前文件夹中,然后重新保存这个变量,取名CYC_XXX.mat,然后再修改UDDS的m文件,35行load CYC_UDDS.mat改成load CYC_XXX.mat)
二次开发步骤及方法的引导:
第一步:在了解load file部分的知识,上面讲到驱动链结构名字,因为advisor内置驱动链形式不多,(相对来说advisor开发很难,本身模型太固定了)假如说你要见一个ABC形式的驱动链的车辆结构(ABC是自己娶的名字,具体驱动链结构根据自己的研究定义去)我们需要把修改为‘ABC’然后另存为DEF.in文件,放在saved_vehicles 的文件夹中,的但是对应simulink没有ABC模型(models文件夹中没有),怎么办?
第二步:因为没有,所以我们只能创建以ABC命名的顶层模型,当然,我们可以运用已有的模型修改而成,命名成BD_ABC.mat
第三步:在理解GUI/optionlists里面的all_menus.mat,这个文件,所以文件菜单文件,(如果你对它不了解,你可以在高版本的matlab中打开这个文件,看看,它内部的数据。
)Ok,如何增加文件和驱动链形式
在matlab中输入2句命令:
options.input_file_names=optionlist(‘add’,’input_file_names’,’DEF’)
options.drivetrain=optionlist(‘add’,’drivetrain’,’ABC’)
第四步:在GUI文件夹下,找到block_diagram_name.m,需要修改
找到switch drivetrain行
增加一句
Case ‘ABC’
Bd_name=BD_ABC(注意: 这句是选择语句,当选择到ABC驱动链时候,advisor自动寻找在models文件夹中寻找BD_ABC,如果没有,仿真100%出错。
所以有第三步操作。
)
以上操作可以在advisor中定义自己需要的结构。
但是,如果你选择点击drivetrain config,选择自己的ABC驱动链,但是可能仿真会出错。
是因为advisor没有ABC结构的默认车辆文件,所以出错
如果第一步车辆文件,直接命名为DEF_default_in,(everything is ok!!!)
如果是单独部件的2次开发:
首先要了解库文件,即(models/library里面的模型,你要建立自己部件的模型,需要对
advisor自带的模型非常了解,需要了解自带模型的输入输出接口。
你自建的模型,必须也有对应的输入输出。
不然你可能接不上去与后面的模块)
举个例子,如果你自建一种新型电池模型,放在lib_energy_storage的库文件中(ess choises 中),然后在template中选中,打钩,然后重新保存。
第二步是在adjust_config_bds.m文件(GUI文件夹里面的)函数下,找到电池选择语句(232行)
Case ‘ess config’ case 'ess config'
BlockChoices={'Ultracapacitor System';%%%在这里需要增加电池模型的类型'energy storage <ess>';
'energy storage <ess> RC';
'energy storage <ess> nnet';
'energy storage <ess> Saber';
'energy storage <ess> fundamental model';
'energy storage <ess> optima fundamental model'};
%make sure block choices exist in memberblocks
CheckBlocks(BlockChoices,memberblocks,i)
if strcmp(vinf.energy_storage.ver,'rc') %%在这里增加你的模型的version
if strcmp(vinf.energy_storage.type,'cap'),在这里增加你模型的类型
%Ultra Cap RC model
set_param(x,'BlockChoice',BlockChoices{1})
else %all other types are assumed to be RC battery models
%RC battery model
set_param(x,'BlockChoice',BlockChoices{3})
end
elseif strcmp(vinf.energy_storage.ver,'rint')
%rint battery model
set_param(x,'BlockChoice',BlockChoices{2}
余下代码不在载入,请大家自己看看,同理,当然还有其他模型可以改,如控制策略,那就在控制策略的case 那部分增加。
第三优化,优化部分不写了,主要涉及自己论文,本人论文还在写中,所以占时不介绍使用方法,可以告诉大家的是,仔细研读adv_no_gui.m文件
此PDF为学习交流之用,主要是学习和经验分享,任何拿此盈利的人BS之。
文中有错的地方和我交流,可能学浅没有考虑到,欢迎指出,谢谢。
Advisor2002博大精深,还有其他部分的东西,以后有空再做!
如有不懂的地方,希望来汽车工程师之家的advisor讨论,当然也欢迎进群之后能够帮助新
人朋友,一起研究讨论,貌似群人数快到100了。
最后希望大家学术工作顺利!
Yours scofision。