NIVeriStand使用手册.docx

上传人:b****6 文档编号:6884631 上传时间:2023-01-12 格式:DOCX 页数:60 大小:4.32MB
下载 相关 举报
NIVeriStand使用手册.docx_第1页
第1页 / 共60页
NIVeriStand使用手册.docx_第2页
第2页 / 共60页
NIVeriStand使用手册.docx_第3页
第3页 / 共60页
NIVeriStand使用手册.docx_第4页
第4页 / 共60页
NIVeriStand使用手册.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

NIVeriStand使用手册.docx

《NIVeriStand使用手册.docx》由会员分享,可在线阅读,更多相关《NIVeriStand使用手册.docx(60页珍藏版)》请在冰豆网上搜索。

NIVeriStand使用手册.docx

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到\NationalInstruments\NIVeriStand2010\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\NIVeriStand2010\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).

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)保存到\NationalInstruments\NIVeriStand2010\Projects\ecuhilhandson\StimulusProfiles文件夹

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)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 管理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1