NIVeriStand使用手册概述建模创建MiL环境只是分享.docx
《NIVeriStand使用手册概述建模创建MiL环境只是分享.docx》由会员分享,可在线阅读,更多相关《NIVeriStand使用手册概述建模创建MiL环境只是分享.docx(18页珍藏版)》请在冰豆网上搜索。
NIVeriStand使用手册概述建模创建MiL环境只是分享
NIVeriStand使用手册(概述|建模|创建MiL环境)
目录
1.概述3
2.创建软件模型4
2.1.创建被控对象模型4
2.2.创建控制器模型9
3.创建MIL测试环境11
4.创建测试激励信号20
4.1.使用STIMULUSPROFILEEDITOR20
4.2.使用TMDSFILEVIEWER26
5.VERISTAND高级功能28
5.1.使用USERCHANNELS、PROCEDURES、ALARMS28
5.2.使用CALCULATEDCHANNELS33
6.创建HIL测试系统39
6.1.添加实时目标机39
6.2.添加NIDAQ设备41
6.3.添加NIR系列设备43
6.4.添加NI故障注入模块44
6.5.添加NICOMPACTRIO硬件47
6.6.添加NIXNET硬件48
6.7.添加TDK-LAMBDA可编程电源53
6.8.更改软硬件端口映射57
6.9.更改模型运行设置58
1.概述
VeriStand是美国NationalInstruments公司专门针对HiL仿真测试系统而开发出的软件环境。
VeriStand是一种基于配置的软件环境,它简单易用,无需编程就完成实时测试系统的创建,实现HiL测试中所需的各种功能。
NIVeriStand能够配置模拟、数字和基于FPGA的硬件I/O接口;能够配置激励生成、记录数据、计算通道和事件警报;能够从NILabVIEW和MathWorksSimulink®等建模环境中导入控制算法和仿真模型;能够利用操作界面实时在线监控运行任务并与之交互。
本文介绍了NIVeristand各项主要功能的使用方法,并按照通用的开发测试顺序编写,主要内容包括:
创建软件模型;
创建测试系统;
实现自动化测试、记录数据;
创建测试系统。
2.创建软件模型
NIVeriStand可以利用*.dll文件导入由Matlab/Simulink/Stateflow创建的算法或仿真模型,下图所示为Simulink模型导入NIVeriStand的过程:
注意:
NIVeriStand支持的编译器包括MicrosoftVisualC++6.0,.NET2003,2005(ProfessionalorExpress),or2008(ProfessionalorExpress).
在本章中具体介绍了上述过程的操作步骤,将一个在Matlab/Simulink环境下创建的*.mdl文件转换为NIVeriStand所支持的*.dll文件。
下面用到的仿真模型来自Matlab/Simulink的Demos:
•发动机Engine模型:
ModelingEngineTimingUsingTriggeredSubsystems
•控制器ECU模型:
EngineTimingModelwithClosedLoopControl
2.1.创建被控对象模型
下面过程将演示如何将Simulink中的发动机Engine模型,转换为VeriStand可用的被控对象模型。
1.打开Simulink模型:
ModelingEngineTimingUsingTriggeredSubsystem
另存到新建工作目录中,例如D:
\NIVS_HandsOn,为避免和原有模型冲突,重命名为Engine.mdl
该发动机模型要求的输入信号为
•ThrottleAngle节气门开度
•DragTorque拖拽扭矩(负载扭矩)
输出信号为
•EngineSpeed发动机转速
关于该模型的具体信息,请参考Simulink帮助文档。
运行后结果如下所示,上图为发动机模型所需输入信号,黄色曲线为负载扭矩,紫色曲线为节气门开度;下图中为发动机模型计算的输出信号,黄色曲线为发动机转速。
1)0~5s,节气门开度不变,负载扭矩在2s时,由25Nm下降到20Nm,发动机转速因负载扭矩变小而提高;
2)5s时,节气门开度增加,负载不变时,发动机转速快速升高;
3)8s时,负载扭矩再次增加,节气门开度不变,转速下降。
2.正确安装VeriStand后,在SimulinkLibraryBrowser中会自动添加NIVeriStandBlocks,如下图所示:
3.修改模型
1)将模型中需要做映射的端口,用相应的NIVeriStandIn和NIVeriStandOut替代;
2)在Simulink模型最上层中添加BlockNIVeriStandSignalProbe,添加后下层所有模块的参数也都可以通过VeriStand观测或者修改;
3)取消原Simulink模型中SignalProperties下有关datalogging的选项。
4)完成修改后的发动机模型如下所示:
4.设置编译环境并编译
1)打开Simulink模型的ConfigurationParameters(快捷键:
Ctrl+E),
2)在Real-TimeWorkshop中,指定Systemtargetfile为NIVeriStand.tlc,点击OK确认。
注意:
如果实时目标机为cRIO系列,此处要选择NIVeriStand_VxWorks.tlc
3)回到Solver页面,选择定步长求解器:
fixedstep-sizeordinarydifferentialequation(ODE)solver
注意:
NIVeriStand只支持使用定步长的常微分方程求解器
4)指定步长:
Fixed-stepsize(fundamentalsampletime)为0.001,也就是1kHz
注意:
步长越小仿真模型计算越准确,但相应的会消耗更多技术资源。
修改完步长后,要再次运行仿真模型,观察结果,既要避免因步长选择过大,出现如无法收敛,计算精度无法满足要求,又要避免过小的步长造成cpu运算负担过大,影响实时性。
5)点击IncrementalBuild图标或者Ctrl+B,开始编译
6)编译成功后,Matlab的CommandWindows中出现下列提示,
###SuccessfulcompletionofReal-TimeWorkshopbuildprocedureformodel:
ModelName,
并生成与Engine.mdl同名的Engine.dll文件,保存在新生成的Engine_niVeriStand_rtw文件夹内。
2.2.创建控制器模型
在Simulink提供的DemoEngineTimingModelwithClosedLoopControl中包含了控制器ECU的算法。
我们需要把其中的控制器(Controller)算法从闭环模型中分割出来,建立单独的ECU模型,并编译为对应的*.dll文件。
Controller采用PI控制算法,可根据目标发动机转速,结合发动机模型中的负载扭矩,计算出节气门开度,最终使发动机实际转速与目标转速一致。
下图中黄色曲线为发动机负载曲线,紫色曲线为控制器输出的节气门开度
1)2s时,由25Nm变为20Nm
2)8s时,由20Nm变为25Nm
1.分割、修改ECU模型
1)打开所需的Demo:
EngineTimingModelwithClosedLoopControl
2)提取模型中的Controller子模块
3)添加NIVeriStandIn、NIVeriStandOut和NIVeriStandSignalProbe,另存为Ecu.mdl。
2.设置编译环境并编译,最终生成所需的Ecu.dll文件。
具体配置过程请参考发动机模型转换部分。
3.创建MiL测试
准备好了Engine和Ecu的软件模型,在本章中,将其导入到NIVeriStand中,创建一个MiL(Model-in-the-Loop)测试环境,并介绍如何在WorkSpace中添加控件,控制和观察Engine、Ecu的行为。
1.运行NIVeriStand
Start»ProgramFiles»NationalInstruments»NIVeriStand»NIVeriStand.
2.新建一个项目(Createanewproject).
1)选择File»NewProject.
2)在ProjectName中输入项目名称:
ecuhilhandson.
3)指定项目根目录ProjectRootFolder到\NationalInstruments\NIVeriStand\Projects
4)勾选Createfolderforproject.
5)点击OK确认.
3.点击ConfigureProject,打开项目浏览器ProjectExplorer.
项目浏览器(ProjectExplorer)用于配置测试所需的全部设置。
通过ProjectExplorer可以部署(Deploy)和运行(Run)系统定义文件。
项目浏览器包括所有运行和自动化测试所需关键的参数,同时也可以添加定制文件。
4.展开SystemDefinitionFile节点.
5.鼠标右键单击.nivssdf文件,选择LaunchSystemExplorer.
系统浏览器(SystemExplorer)用于创建NIVeristand系统定义文件。
系统定义文件是一个配置NIVeristand引擎特性的文件。
通过添加,删除和修改位于系统浏览器左部的各项配置可以定义各种属性,包括NIVeriStand引擎的执行方式、硬件端口、计算通道、对仿真模型的控制、报警,执行顺序以及管理通道之间的映射关系。
完成系统定义文件的设置后,它将被部署到NIVeriStand引擎并开始运行。
6.添加发动机Engine模型
1)展开Targets»Controller,点击SimulationModels;
2)添加模型AddSimulationModel.
3)将目录转换到Engine.dll所在目录
4)选择Engine.dll,单击OK.确认;发动机模型有2个输入(节气门开度和负载扭矩)和1个输出(发动机输出)。
7.添加控制器ECU模型
1)点击SimulationModels,添加仿真模型AddSimulationModel;
2)选择Ecu.dll,单击OK确认。
控制器模型包含2个输入(目标转速rpm和实际转速rad/s)和1个输出(节气门位置)。
目标转速由上位机给定、实际转速来自于发动机模型,ECU计算出的节气门位置再传递给发动机模型。
8.调整发动机模型和控制器模型的运行顺序
1)在SystemExplorer左侧的树状结构中选择ExecutionOrder;
2)将发动机模型的色条由Group1拖到Group2
9.现在需要将发动机和控制器模型的输入输出端口映射到一起
1)从菜单中选择Tools»EditMappings
2)从Sources来源窗口中选择SimulationModels»Models»Ecu»Outports»throttleanglesetpoint
3)从Destinations目标窗口中选择SimulationModels»Models»Engine»Inports»ThrottleAngle.
4)点击Connect,完成两个信号的相互映射
10.NIVeriStand中也可以实现批量导入导出映射配置文件
1)在SystemMapping的工具条上点击Open.
2)选择文件映射文件\NationalInstruments\NIVeriStand\Projects\ecuhilhandson\ecuhilmapping.txt.
3)点击Import,导入剩余的映射配置到VeriStand中.
4)点击Exit,所有的映射关系会在Mappings的列表中显示出来
11.添加标定参数,实现在线标定功能
1)展开Models»Ecu»Parameters,里面包含了Simulink模型中所有Block的参数
2)双击Source窗口中的ProportionalGain,添加PI控制器的比例系数
3)双击Source窗口中的IntegralGain,添加PI控制器的积分系数
Imported中会出现在Source窗口中双击选定的参数,这些参数可以进行在线的调整参数。
添加完毕后,保存,如果出现下列错误提示。
直接选择Continue即可,不会影响后续操作。
12.在SystemExplorer的树状节点中选择Controller
13.改变目标速率TargetRate为1000Hz(1kHz).
(一)DIY手工艺品的“多样化”14.保存并且关闭系统浏览器SystemExplorer
加拿大beadworks公司就是根据年轻女性要充分展现自己个性的需求,将世界各地的珠类饰品汇集于“碧芝自制饰品店”内,由消费者自选、自组、自制,这样就能在每个消费者亲手制作、充分发挥她们的艺术想像力的基础上,创作出作品,达到展现个性的效果至此我们已经导入了所需的模型并且将端口映射到了一起,下面就可以将系统定义文件部署到计算机中并开始运行。
通过在Workspace中添加相应控件,可以设定发动机目标转速,然后观察控制器是如何通过调整节气门开度,使发动机达到指定转速的。
15.选择Operate»Run,部署和执行系统定义文件
在上海,随着轨道交通的发展,地铁商铺应运而生,并且在重要商圈已经形成一定的气候,投资经营地铁商铺逐渐为一大热门。
在人民广场地下的迪美购物中心,有一家DIY自制饰品店--“碧芝自制饰品店”16.点击Screen»ScreenProperties…从中可以修改页面(screen)名称
1)Namethescreen:
MIL.
2)选择OK.
17.切换到编辑模式,可以添加控件。
选择Screen»EditModeorCTRL+M.
18.从左侧的WorkspaceControls栏中,拖拽一个图形控件Graph(Simple)
1)名称GraphTitle:
EngineSpeed
2)选择通道Channel:
Controller»SimulationModels»Models»Engine»Outports»EngineSpeed
3)点击 将EngineSpeed添加到Graph中
4)选择Format&Precision标签
5)修改Y轴的显示范围最大值Maximum:
5000和最小值Minimum:
0
6)修改Y轴坐标名称scaleLabel:
rpm
7)修改X轴坐标名称scalelabel:
time
19.从左侧的WorkspaceControls栏中,拖拽一个数字控件NumericControl(Medium)
•选择通道Channel:
Controller»SimulationModels»Models»Ecu»Inports»rpmSetpoint
•填写控件名称ControlLabel:
rpmSetpoint
大学生个性化消费增多是一种趋势。
当前社会、经济飞速发展,各种新的消费品不断增多,流行文化时尚飞速变化,处于校园与社会两者之间的大学生肯定会受影响。
目前在大学校园,电脑、手机、CD、MP3、录音笔被称为大学生的“五件武器”。
除了实用,这也是一种表明自己生活优越的炫耀性的东西。
现下很大一部分大学生中的“负债消费”表现的典型的超前享乐和及时行乐——其消费项目多半是用于奢侈浪费的非必要生活消耗。
如举办生日宴会、打网球、保龄球、上舞厅跳舞、进夜总会唱“卡拉OK”等。
“负债消费”使很多学生耽于物欲,发展严重者轻则引起经济纠纷,动武斗殴,影响同窗友谊,重则引发犯罪事件,于社会治安不利。
20.从左侧的WorkspaceControls栏中,拖拽一个数字控件NumericControl(Medium)
•选择通道Channel:
Controller»SimulationModels»Models»Engine»Inports»LoadTorque
•填写控件名称ControlLabel:
LoadTorque
4、宏观营销环境分析21.退出编辑模式,选择Screen»EditMode(Ctrl+M).
(2)文化优势22.添加对Engine模型运行的控制,从左侧的WorkspaceControls栏中,拖拽一个模型控件Model(ModelControl)
•Model:
Controller/Ecu
Beadwrks公司还组织各国的“芝自制饰品店”定期进行作品交流,体现东方女性聪慧的作品曾在其他国家大受欢迎;同样,自各国作品也曾无数次启发过中国姑娘们的灵感,这里更是创作的源泉。
23.添加对Ecu模型运行的控制,从左侧的WorkspaceControls栏中,拖拽一个模型控件Model(ModelControl)
•Model:
Controller/Engine
上海市劳动和社会保障局所辖的“促进就业基金”,还专门为大学生创业提供担保,贷款最高上限达到5万元。
24.修改Ecu控制器中的I参数,从左侧的WorkspaceControls栏中,拖拽一个模型标定控件ModelCalibrationControl(Medium)
•需要标定的通道名称Calibration:
ECU/Controller/IntegralGain/Gain
•填写控件名称ControlLabel:
I参数
虽然调查显示我们的创意计划有很大的发展空间,但是各种如“漂亮女生”和“碧芝”等连锁饰品店在不久的将来将对我们的创意小屋会产生很大的威胁。
25.修改Ecu控制器中的P参数,从左侧的WorkspaceControls栏中,拖拽一个模型标定控件ModelCalibrationControl(Medium)
•需要标定的通道名称Calibration:
ECU/Controller/ProportionalGain/Gain
•填写控件名称ControlLabel:
P参数
因为是连锁店,老板的“野心”是开到便利店那样随处可见。
所以办了积分卡,方便女孩子到任何一家“漂亮女生”购物,以求便宜再便宜。
26.至此基本的MiL测试环境创建完成,可以改变目标转速和负载,验证Ecu控制器中的算法是否满足要求,也就是实际转速能否快速、稳定的跟随目标转速。
并能通过修改P、I参数,优化Ecu的控制效果,并确定出最佳数值。