完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
目录
1. 概述 3 2. 创建软件模型 4 2.1. 创建被控对象模型 4 2.2. 创建控制器模型 9 3. 创建MIL测试环境 11 4. 创建测试激励信号 20 4.1. 使用 StiMULUS PROFILE EDITOR 20 4.2. 使用TMDS FILE VIEWER 26 5. VERISTAND高级功能 28 5.1. 使用USER CHANNELS、PROCEDURES、ALARMS 28 5.2. 使用CALCULATED CHANNELS 33 6. 创建HIL测试系统 39 6.1. 添加实时目标机 39 6.2. 添加NI DAQ设备 41 6.3. 添加NI R系列设备 43 6.4. 添加NI故障注入模块 44 6.5. 添加NI COMPACT RIO 硬件 47 6.6. 添加NI XNET硬件 48 6.7. 添加TDK-LAMBDA可编程电源 53 6.8. 更改软硬件端口映射 57 6.9. 更改模型运行设置 58 1. 概述 VeriStand是美国 National Instruments公司专门针对HiL仿真测试系统而开发出的软件环境。VeriStand 是一种基于配置的软件环境,它简单易用,无需编程就完成实时测试系统的创建,实现HiL测试中所需的各种功能。NI VeriStand能够配置模拟、数字和基于FPGA的硬件I/O接口;能够配置激励生成、记录数据、计算通道和事件警报;能够从NI labview和MathWorks Simulink®等建模环境中导入控制算法和仿真模型;能够利用操作界面实时在线监控运行任务并与之交互。 本文介绍了NI Veristand 各项主要功能的使用方法,并按照通用的开发测试顺序编写,主要内容包括: @创建软件模型; @创建MiL测试系统; @实现自动化测试、记录数据; @创建HiL测试系统。 2. 创建软件模型 NI VeriStand可以利用*.dll文件导入由matlab/Simulink/Stateflow创建的算法或仿真模型,下图所示为Simulink模型导入NI VeriStand的过程: 注意:NI VeriStand 支持的编译器包括Microsoft Visual C++ 6.0, .NET 2003, 2005 (Professional or Express), or 2008 (Professional or Express). 在本章中具体介绍了上述过程的操作步骤,将一个在Matlab/Simulink环境下创建的 *.mdl文件转换为NI VeriStand所支持的 *.dll文件。 下面用到的仿真模型来自Matlab / Simulink的Demos: • 发动机Engine模型:Modeling Engine Timing Using Triggered Subsystems • 控制器ECU模型:Engine Timing Model with Closed Loop Control 2.1. 创建被控对象模型 下面过程将演示如何将Simulink中的发动机Engine模型,转换为VeriStand可用的被控对象模型。 1. 打开Simulink模型: Modeling Engine Timing Using Triggered Subsystem 另存到新建工作目录中,例如 D:NIVS_HandsOn,为避免和原有模型冲突,重命名为Engine.mdl 该发动机模型要求的输入信号为 • Throttle Angle 节气门开度 • Drag Torque 拖拽扭矩(负载扭矩) 输出信号为 • Engine Speed 发动机转速 关于该模型的具体信息,请参考Simulink帮助文档。 运行后结果如下所示,上图为发动机模型所需输入信号,黄色曲线为负载扭矩,紫色曲线为节气门开度;下图中为发动机模型计算的输出信号,黄色曲线为发动机转速。 1) 0~5s,节气门开度不变,负载扭矩在2s时,由25 Nm 下降到20 Nm,发动机转速因负载扭矩变小而提高; 2) 5s时,节气门开度增加,负载不变时,发动机转速快速升高; 3) 8s时,负载扭矩再次增加,节气门开度不变,转速下降。 2. 正确安装VeriStand后,在Simulink Library Browser 中会自动添加 NI VeriStand Blocks,如下图所示: 3. 修改模型 1) 将模型中需要做映射的端口,用相应的NIVeriStand In 和NIVeriStand Out 替代; 2) 在Simulink模型最上层中添加Block NIVeriStandSignalProbe,添加后下层所有模块的参数也都可以通过VeriStand观测或者修改; 3) 取消原Simulink模型中Signal Properties下有关data logging的选项。 4) 完成修改后的发动机模型如下所示: 4. 设置编译环境并编译 1) 打开Simulink模型的Configuration Parameters (快捷键:Ctrl+E), 2) 在Real-Time Workshop中,指定System target file为NIVeriStand.tlc,点击OK确认。 注意:如果实时目标机为cRIO系列,此处要选择NIVeriStand_VxWorks.tlc 3) 回到Solver页面,选择定步长求解器:fixed step-size ordinary differential equation (ODE) solver 注意:NI VeriStand只支持使用定步长的常微分方程求解器 4) 指定步长:Fixed-step size (fundamental sample time)为0.001,也就是1kHz 注意:步长越小仿真模型计算越准确,但相应的会消耗更多技术资源。修改完步长后,要再次运行仿真模型,观察结果,既要避免因步长选择过大,出现如无法收敛,计算精度无法满足要求,又要避免过小的步长造成cpu运算负担过大,影响实时性。 5) 点击Incremental Build图标或者Ctrl + B,开始编译 6) 编译成功后,Matlab的Command Windows中出现下列提示, ### Successful completion of Real-Time Workshop build procedure for model: ModelName, 并生成与Engine.mdl同名的Engine.dll文件,保存在新生成的 Engine_niVeriStand_rtw文件夹内。 2.2. 创建控制器模型 在Simulink提供的Demo Engine Timing Model with Closed Loop Control中包含了控制器ECU的算法。我们需要把其中的控制器(Controller)算法从闭环模型中分割出来,建立单独的ECU模型,并编译为对应的 *.dll文件。 Controller采用PI控制算法,可根据目标发动机转速,结合发动机模型中的负载扭矩,计算出节气门开度,最终使发动机实际转速与目标转速一致。 下图中黄色曲线为发动机负载曲线,紫色曲线为控制器输出的节气门开度 1) 2s时,由25 Nm变为20 Nm 2) 8s时,由20 Nm变为25 Nm 1. 分割、修改ECU模型 1) 打开所需的Demo:Engine Timing Model with Closed Loop Control 2) 提取模型中的Controller子模块 3) 添加NIVeriStand In、NIVeriStand Out和NIVeriStandSignalProbe,另存为Ecu.mdl。 2. 设置编译环境并编译,最终生成所需的Ecu.dll文件。具体配置过程请参考发动机模型转换部分。 3. 创建MiL测试 准备好了Engine和Ecu的软件模型,在本章中,将其导入到NI VeriStand 中,创建一个MiL (Model-in-the-Loop) 测试环境,并介绍如何在Work Space中添加控件,控制和观察Engine、Ecu的行为。 1. 运行 NI VeriStand Start » Program Files » National Instruments » NI VeriStand» NI VeriStand. 2. 新建一个项目(Create a new project). 1) 选择 File » New Project. 2) 在Project Name中输入项目名称:ecu hil hands on. 3) 指定项目根目录 Project Root Folder 到 4) 勾选Create folder for project. 5) 点击OK确认. 3. 点击 Configure Project, 打开项目浏览器Project Explorer. 项目浏览器(Project Explorer) 用于配置测试所需的全部设置。通过Project Explorer可以部署(Deploy)和运行(Run)系统定义文件。项目浏览器包括所有运行和自动化测试所需关键的参数,同时也可以添加定制文件。 4. 展开 System Definition File 节点. 5. 鼠标右键单击 系统浏览器 (System Explorer) 用于创建NI Veristand系统定义文件。系统定义文件是一个配置NI Veristand引擎特性的文件。通过添加,删除和修改位于系统浏览器左部的各项配置可以定义各种属性,包括NI VeriStand引擎的执行方式、硬件端口、计算通道、对仿真模型的控制、报警,执行顺序以及管理通道之间的映射关系。完成系统定义文件的设置后,它将被部署到NI VeriStand 引擎并开始运行。 6. 添加发动机Engine模型 1) 展开Targets » Controller,点击Simulation Models; 2) 添加模型 Add Simulation Model. 3) 将目录转换到Engine.dll所在目录 4) 选择Engine.dll,单击 OK.确认;发动机模型有2个输入 (节气门开度和负载扭矩) 和1个输出(发动机输出)。 7. 添加控制器ECU模型 1) 点击 Simulation Models,添加仿真模型 Add Simulation Model; 2) 选择Ecu.dll,单击 OK 确认。 控制器模型包含2个输入(目标转速rpm和实际转速 rad/s)和1个输出(节气门位置)。目标转速由上位机给定、实际转速来自于发动机模型,ECU计算出的节气门位置再传递给发动机模型。 8. 调整发动机模型和控制器模型的运行顺序 1) 在System Explorer左侧的树状结构中选择Execution Order; 2) 将发动机模型的色条由Group1拖到Group2 9. 现在需要将发动机和控制器模型的输入输出端口映射到一起 1) 从菜单中选择Tools » Edit Mappings 2) 从Sources 来源窗口中选择Simulation Models » Models » Ecu » Outports » throttle angle setpoint 3) 从Destinations目标窗口中选择Simulation Models » Models » Engine » Inports » Throttle Angle. 4) 点击Connect,完成两个信号的相互映射 10. NI VeriStand中也可以实现批量导入导出映射配置文件 1) 在System Mapping的工具条上点击Open. 2) 选择文件映射文件 3) 点击Import,导入剩余的映射配置到VeriStand中. 4) 点击Exit,所有的映射关系会在Mappings的列表中显示出来 11. 添加标定参数,实现在线标定功能 1) 展开 Models » Ecu » Parameters,里面包含了Simulink模型中所有Block的参数 2) 双击 Source窗口中的 Proportional Gain,添加PI控制器的比例系数 3) 双击 Source窗口中的 Integral Gain,添加PI控制器的积分系数 Imported中会出现在Source窗口中双击选定的参数,这些参数可以进行在线的调整参数。 添加完毕后,保存,如果出现下列错误提示。直接选择Continue即可,不会影响后续操作。 12. 在System Explorer的树状节点中选择 Controller 13. 改变目标速率Target Rate 为1000 Hz (1 kHz). 14. 保存并且关闭系统浏览器System Explorer 至此我们已经导入了所需的模型并且将端口映射到了一起,下面就可以将系统定义文件部署到计算机中并开始运行。通过在Workspace中添加相应控件,可以设定发动机目标转速,然后观察控制器是如何通过调整节气门开度,使发动机达到指定转速的。 15. 选择Operate » Run, 部署和执行系统定义文件 16. 点击Screen » Screen Properties…从中可以修改页面(screen)名称 1) Name the screen:MIL. 2) 选择 OK. 17. 切换到编辑模式,可以添加控件。选择 Screen » Edit Mode or CTRL+M. 18. 从左侧的Workspace Controls栏中,拖拽一个图形控件Graph(Simple) 1) 名称Graph Title: Engine Speed 2) 选择通道Channel: Controller » Simulation Models » Models » Engine » Outports » Engine Speed 3) 点击 将Engine Speed添加到Graph中 4) 选择Format & Precision 标签 5) 修改Y轴的显示范围最大值Maximum: 5000 和最小值Minimum: 0 6) 修改Y轴坐标名称scale Label: rpm 7) 修改X轴坐标名称scale label: time 19. 从左侧的Workspace Controls栏中,拖拽一个数字控件Numeric Control (Medium) • 选择通道Channel: Controller » Simulation Models » Models » Ecu » Inports » rpm Setpoint • 填写控件名称Control Label: rpm Setpoint 20. 从左侧的Workspace Controls栏中,拖拽一个数字控件Numeric Control (Medium) • 选择通道Channel: Controller » Simulation Models » Models » Engine » Inports » Load Torque • 填写控件名称Control Label: Load Torque 21. 退出编辑模式,选择 Screen » Edit Mode (Ctrl + M). 22. 添加对Engine模型运行的控制,从左侧的Workspace Controls栏中,拖拽一个模型控件Model (Model Control) • Model : Controller / Ecu 23. 添加对Ecu模型运行的控制,从左侧的Workspace Controls栏中,拖拽一个模型控件Model (Model Control) • Model : Controller / Engine 24. 修改Ecu控制器中的I参数,从左侧的Workspace Controls栏中,拖拽一个模型标定控件Model Calibration Control (Medium) • 需要标定的通道名称Calibration:ECU/Controller/Integral Gain/Gain • 填写控件名称Control Label: I 参数 25. 修改Ecu控制器中的P参数,从左侧的Workspace Controls栏中,拖拽一个模型标定控件Model Calibration Control (Medium) • 需要标定的通道名称Calibration: ECU/Controller/Proportional Gain/Gain • 填写控件名称Control Label: P 参数 26. 至此基本的MiL测试环境创建完成,可以改变目标转速和负载,验证Ecu控制器中的算法是否满足要求,也就是实际转速能否快速、稳定的跟随目标转速。并能通过修改P、I参数,优化Ecu的控制效果,并确定出最佳数值。 |
|
相关推荐
2 个讨论
|
|
只有小组成员才能发言,加入小组>>
有没有大佬知道labview中使用Halcon拍照算子采集图像后,如何把图像传入调用的Halcon算子?
3300 浏览 0 评论
LabVIEW对51单片机电压的采集,用VISA写入函数发送字符串voltage,VISA读取函数也是字符串?
2083 浏览 1 评论
1815 浏览 0 评论
7039 浏览 1 评论
2453 浏览 0 评论
3005浏览 1评论
4187浏览 0评论
有没有大佬知道labview中使用Halcon拍照算子采集图像后,如何把图像传入调用的Halcon算子?
3314浏览 0评论
2074浏览 0评论
2028浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-6 09:03 , Processed in 0.503773 second(s), Total 45, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号