NIVeriStand使用手册.docx
- 文档编号:371270
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:64
- 大小:4.32MB
NIVeriStand使用手册.docx
《NIVeriStand使用手册.docx》由会员分享,可在线阅读,更多相关《NIVeriStand使用手册.docx(64页珍藏版)》请在冰点文库上搜索。
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中,指定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
下图中黄色曲线为目标转速(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.鼠标右键单击〈ProjectName>。 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)选择文件映射文件〈PublicDocuments>\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建立基本的用户界面。 在本章中将介绍如何使用StimulusProfileEditor创建测试激励信号,用于自动化测试。 NIVeriStand中还集成了有许多其他工具,包括警报监控,信号错误管理,TDMSFile观测器等,我们将在后面的章节继续介绍。 4.1.使用StimulusProfileEditor 使用NIVeriStand2010下的激励信号编辑器StimulusProfileEditor可以创建激励信号,常用的如正弦波、方波、三角波、阶跃信号等可直接拖拽、配置. 1.在ProjectExplorer浏览器中,右键单击Profiles,选择Add»NewStimulusProfile… 1)保存到〈PublicDocuments>\NationalInstruments\NIVeriStand2010\Projects\ecuhilhandson\StimulusProfiles文件夹 2.Header标签栏用于指定所记录数据的存放位置DataFilePath,可设置分组存放文件夹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.点击StimulusProfileEditor上的菜单Window»FullSize,隐藏编辑界面。 12.点击StimulusProfileEditor上的Run按钮,运行定义好的激励文件 1)观察发动机转速和负载扭矩的变化 4.2.使用TMDSFileViewer 1.当StimulusProfile运行结束后,可使用TDMS文件浏览器查看所记录的数据 1)打开TDMS文件浏览器(TDMSFileViewer)。 在workspace的菜单中选择Tools»TDMSFileViewer
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NIVeriStand 使用手册
![提示](https://static.bingdoc.com/images/bang_tan.gif)