NIVeriStand使用手册.docx
- 文档编号:6884631
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:60
- 大小:4.32MB
NIVeriStand使用手册.docx
《NIVeriStand使用手册.docx》由会员分享,可在线阅读,更多相关《NIVeriStand使用手册.docx(60页珍藏版)》请在冰豆网上搜索。
NIVeriStand使用手册
Real-TimeTestingandSimulationSoftware
NIVeriStand2010使用手册
DocumentVersion1.0
By慕慕316395914
1.概述
VeriStand2010是美国NationalInstruments公司专门针对HiL仿真测试系统而开发出的软件环境。
VeriStand2010是一种基于配置的软件环境,它简单易用,无需编程就完成实时测试系统的创建,实现HiL测试中所需的各种功能。
NIVeriStand2010能够配置模拟、数字和基于FPGA的硬件I/O接口;能够配置激励生成、记录数据、计算通道和事件警报;能够从NILabVIEW和MathWorksSimulink®等建模环境中导入控制算法和仿真模型;能够利用操作界面实时在线监控运行任务并与之交互。
本文档介绍了NIVeristand2010各项主要功能的使用方法,并按照通用的开发测试顺序编写,主要内容包括:
●创建软件模型;
●创建MiL测试系统;
●实现自动化测试、记录数据;
●创建HiL测试系统。
2.创建软件模型
NIVeriStand2010可以利用*.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中,指定Systemtarget,点击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
下图中黄色曲线为目标转速(SpeedSetpoint),在5s时由2000rpm跳变为3000rpm,紫色曲线为实际转速。
1.分割、修改ECU模型
1)打开所需的Demo:
EngineTimingModelwithClosedLoopControl
2)提取模型中的Controller子模块
3)添加NIVeriStandIn、NIVeriStandOut和NIVeriStandSignalProbe,另存为Ecu.mdl。
修改后的ECU模型如下所示:
2.设置编译环境并编译,最终生成所需的Ecu.dll文件。
具体配置过程请参考发动机模型转换部分。
3.创建MiL测试环境
在上一章中,我们准备好了Engine和Ecu的软件模型,在本章中,我们会将其导入到NIVeriStand2010中,创建一个MiL(Model-in-the-Loop)测试环境,并介绍如何在WorkSpace中添加控件,控制和观察Engine、Ecu的行为。
1.运行NIVeriStand
Start»ProgramFiles»NationalInstruments»NIVeriStand2010»NIVeriStand.
2.新建一个项目(Createanewproject).
1)选择File»NewProject.
2)在ProjectName中输入项目名称:
ecuhilhandson.
3)指定项目根目录ProjectRootFolder到
4)勾选Createfolderforproject.
5)点击OK确认.
3.点击ConfigureProject,打开项目浏览器ProjectExplorer.
项目浏览器(ProjectExplorer)用于配置测试所需的全部设置。
通过ProjectExplorer可以部署(Deploy)和运行(Run)系统定义文件。
项目浏览器包括所有运行和自动化测试所需关键的参数,同时也可以添加定制文件。
4.展开SystemDefinitionFile节点.
5.鼠标右键单击
系统浏览器(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)选择文件映射文件
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).
14.保存并且关闭系统浏览器SystemExplorer
至此我们已经导入了所需的模型并且将端口映射到了一起,下面就可以将系统定义文件部署到计算机中并开始运行。
通过在Workspace中添加相应控件,可以设定发动机目标转速,然后观察控制器是如何通过调整节气门开度,使发动机达到指定转速的。
15.选择Operate»Run,部署和执行系统定义文件
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
20.从左侧的WorkspaceControls栏中,拖拽一个数字控件NumericControl(Medium)
∙选择通道Channel:
Controller»SimulationModels»Models»Engine»Inports»LoadTorque
∙填写控件名称ControlLabel:
LoadTorque
21.退出编辑模式,选择Screen»EditMode(Ctrl+M).
22.添加对Engine模型运行的控制,从左侧的WorkspaceControls栏中,拖拽一个模型控件Model(ModelControl)
∙Model:
Controller/Ecu
23.添加对Ecu模型运行的控制,从左侧的WorkspaceControls栏中,拖拽一个模型控件Model(ModelControl)
∙Model:
Controller/Engine
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的控制效果,并确定出最佳数值。
4.创建测试激励信号
在第3章中我们学习了如何用NIVeriStand2010的Workspace建立基本的用户界面。
在本章中将介绍如何使用StimulusPro创建测试激励信号,用于自动化测试。
NIVeriStand中还集成了有许多其他工具,包括警报监控,信号错误管理,TDMSFile观测器等,我们将在后面的章节继续介绍。
4.1.使用StimulusPro
使用NIVeriStand2010下的激励信号编辑器StimulusPro可以创建激励信号,常用的如正弦波、方波、三角波、阶跃信号等可直接拖拽、配置。
1.在ProjectExplorer浏览器中,右键单击Profiles,选择Add»NewStimulusProfile…
1)保存到
2.Header标签栏用于指定所记录数据的存放位置Data,可设置分组存放文件夹Groupfolder和指定测试样本编号SampleNumber。
3.转换到Profile标签栏,现在创建一个profile,用于控制发动机的转速
4.首先,我们分配发生器1用于给定目标转速SpeedSetpoint。
初始化为2000rpm,保持20s,增加到3000rpm,保持20s减少到2500rpm,保持10s
1)WithGenerator1选择ed(default),选择AddMappings.
2)选择Controller»SimulationModels»Models»Ecu»Inports»rpmsetpoint.
3)选择Add»Ramp添加一个斜坡函数作为激励.
4)设置斜坡函数,初始2000:
∙EndPoint:
2000
∙RampMode:
FixedDuration
∙seconds:
0
5)选择Add»Dwell并设置,维持20s:
∙Duration:
20
6)选择Add»Ramp并设置,增加到3000:
∙EndPoint:
3000
∙RampMode:
FixedDuration
∙Duration:
0
7)选择Add»Dwell并设置,维持20s:
∙Duration:
20
8)选择Add»Ramp并设置,减少到2500:
∙EndPoint:
2500
∙RampMode:
FixedDuration
∙Duration:
0
9)选择Add»Dwell并设置,维持10s:
∙
Duration:
10
我们可以并行的有多个激励发生器。
我们要将同时使用Generator1和Generator2给控制器设定目标转速和负载
5.我们为LoadTorque新建一个发生器。
负载初始为25,10s后降低到20,维持20s,之后再加大到25,并维持20s.
1)点击+按钮,添加第二个Generator.
2)选择Step-basedGenerator(default),点击OK
3)选择AddMappings.
4)选择Controller»SimulationModels»Models»Engine»Inports»LoadTroque.
5)选择Add»Ramp,设置初始值为25Nm:
∙EndPoint:
25
∙RampMode:
FixedDuration
∙Duration:
0
6)选择Add»Dwell,设置持续时间10s:
∙Duration:
10
7)选择Add»Ramp,设置减少到20Nm:
∙EndPoint:
20
∙RampMode:
FixedDuration
∙Duration:
0
8)选择Add»Dwell,设置持续时间20s:
∙Duration:
10
9)选择Add»Ramp,设置增加到25Nm:
∙EndPoint:
25
∙RampMode:
FixedDuration
∙Duration:
0
10)选择Add»Dwell,设置持续时间20s:
∙Duration:
20
11)点击OK,完成全部激励设置后如下图所示:
6.选择Logging标签栏.
7.点击+按钮为记录数据添加一个新文件
8.配置记录文件
1)点击browse按钮,选择记录文件指定保存路径
9.切换到Channels标签栏,选择需要记录的信号:
目标转速rpmsetpoint以及模型计算出的’实际转速’EngineSpeed
1)切换到Channels标签页.
2)单击AddChannels.
3)选择Controller»SimulationModels»Models»Ecu»Inports»rpmsetpoint.
4)选择Controller»SimulationModels»Models»Engine»Outports»EngineSpeed.
5)点击OK确认.
可以用多个文件分开记录几组不同条件下的激励信号;也可以选择不同的记录速度,分开记录变化比较慢的信号,减少对传输线路和磁盘空间的占用。
10.保存激励信号,点击Save.
11.点击StimulusPro上的菜单Window»FullSize,隐藏编辑界面.
12.点击StimulusPro上的Run按钮,运行定义好的激励文件
1)观察发动机转速和负载扭矩的变化
4.2.使用TMDS
1.当StimulusProfile运行结束后,可使用TDMS文件浏览器查看所记录的数据
1)打开TDMS文件浏览器(TDMS)。
在workspace的菜单中选择Tools»TDMS
2)单击File»Open.
3)找到创建的记录文件(logfile),test_case1
4)在选中test_case1.tdms.
5)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NIVeriStand 使用手册