dSPACE-RTI知识介绍.pdf
《dSPACE-RTI知识介绍.pdf》由会员分享,可在线阅读,更多相关《dSPACE-RTI知识介绍.pdf(28页珍藏版)》请在冰豆网上搜索。
![dSPACE-RTI知识介绍.pdf](https://file1.bdocx.com/fileroot1/2022-10/30/3242ce62-429c-4e5c-8a6c-4ba7861194f9/3242ce62-429c-4e5c-8a6c-4ba7861194f91.gif)
RTI知识介绍dSPACE培训教程2?
RTI基础知识?
RTI高级应用?
总结3?
实现使用dSPACE硬件功能的模块库?
与普通的Simulink模块的使用无异?
通过GUI界面配置I/O通道RTI:
dSAPCE与RTW的接口RTW/RTIRTW/RTIRTIRTI4RTI:
用户接口界面5RTI:
启动?
如何打开RTI库:
在MATLAB命令行下键入rti,图(a)打开Simulink,使用Simulink浏览器,图(b)?
如何开始生成代码:
(b)(b)(a)?
dSPACE处理器和I/O板模块库所有的模块都是MATLAB/Simulink库中的模块板卡和处理单元的名称作为模块名字的关键字(不允许改动)?
中断处理模块库HW(硬件)中断处理模块SW(软件)中断处理模块(a)6RTI在代码生成中的作用?
自动产生包含RTI模块的Simulink框图模型代码,应用于?
RapidControllerPrototyping(RCP)快速控制原型?
Hardware-In-The-Loop-Simulation(HIL)硬件在回路仿真?
支持的系统类型?
连续系统(Continuous)?
离散时间系统(Discretetime)?
混合系统(Hybrid)?
为ControlDesk进行准备?
自动创建SDF文件(和TRC文件)?
Host_service(x,y)?
仿真控制?
错误处理操作Errorhandling?
将生成的实时代码载入到处理器系统上TargetLanguageCompilerRTWfile(database)Systemtargetfile:
rti1003.tlcRTWFunctionLibraryRTIFunctionLibrary.c.h.prm.reg.io.trc.sdf.tlc.tlcBlock-levelTLCfilesBlock-levelTLCfilesRTWRTITargetLanguageCompilerRTWfile(database)Systemtargetfile:
rti1003.tlcRTWFunctionLibraryRTIFunctionLibrary.c.h.prm.reg.io.trc.sdf.tlc.tlcBlock-levelTLCfilesBlock-levelTLCfilesRTWRTI7RTW选项对话框:
Targetconfiguration模型的积分算法和基本计算步长(固定步长),选择单任务(single)或多任务(Multitasking)模式make_rti(M文件):
调用TLC编译器基于makefile模板生成模型专属的makefile调用make工具用户也可以制定build选项Build:
执行编译、连接代码并下载生成的实时代码rtixxxx.tlc:
选择控制模型所生成代码样式的Targetlanguagecompiler文件rtixxxx.tmf:
控制代码编译和连接过程的模板makefile8作用于Build过程的本地RTI选项9I/O操作可以包含在触发和使能子系统中的I/O模块友好,易用的对话框界面Ground和terminator模块用于标明未被使用的通道不同通道运行在不同采样速率10典型的应用开发流程创价被控对象的原理模型创价被控对象的原理模型形成初步的控制算法设计形成初步的控制算法设计通过离线仿真测试设计的控制算法通过离线仿真测试设计的控制算法生成模型的实时代码生成模型的实时代码在在ControlDesk中进行设定以采集数据,观察并改变变量中进行设定以采集数据,观察并改变变量在模型中设定在模型中设定I/O11Real-TimeFrame实时构架?
RTI:
rti_sim_engine.c(DSPACE_ROOTMATLABrti1005c)?
Simulink模型实时执行的C代码构架?
基于Simulink仿真的数据类型(SimstructS)?
主函数?
硬件(HW)/软件(SW)初始化?
后台任务Backgroundtask?
实时模型运行的控制(START,PAUSE,STOP)?
定时器驱动中断服务例程程序?
I/O调用(actioncalls)?
多速率模型运行的调度(dSPACE实时内核)?
用于进行参数设置和信号采集的ControlDesk服务?
Turnaroundtimeprofiling?
PHS-总线中断驱动?
软件中断驱动(Softwareinterruptdriven)12?
RTI基础知识?
RTI高级应用?
总结13RTI:
TaskLibLibraryITimerATimerB?
实现第二个定时器任务:
?
应用:
?
创建第二个任务,其采样时间间隔不是第一个任务的整数倍?
创建具有较高优先级的慢任务?
模块:
?
TimerInterrupt(A,B,C)14RTI:
TaskLibLibraryII?
如何创建一个硬件中断触发的任务:
?
应用:
?
计算,处理系统中与定时器中断不同步的部分?
由外部信号驱动的任务?
可以指定任务的优先级(见TaskHandling对话框)?
使用模块:
?
HWInterruptBlock(I/O模块库)模块库)当软件中断发生时触发执行?
如何创建一个软件中断触发的任务:
?
应用:
?
创建一个具有细分调度的系统?
为系统的不同部分指定不同的运行优先级15RTI:
TaskLibLibraryIII?
如何将一个子系统设置成后台任务:
?
应用:
?
优化或其他计算进程,他们无需实时运行(在系统中优先级最低)子系统的执行可能依赖于当前的simState?
如何实现合法的任务内容传递?
所有在不同中断驱动子系统之间,不同定时器任务之间,或两类系统之间传递的数据必须通过一个合法的任务转换进行。
?
应用:
?
数据一致性要求并不严格时?
使用模块:
?
Non-BufferedTaskTransition16RTI:
TaskLibLibraryIV?
如何使用外部事件触发整个系统:
?
应用:
?
使模型运行与外部事件同步,例如用于交流电机的PWM信号?
使用模块:
?
TimerTaskAssignment模块模块?
如何保证在中断驱动子系统间矢量数据传递的一致性:
?
使用模块:
?
BufferedTaskTransition(Read)?
BufferedTaskTransition(Write)17时间触发的任务?
应用:
在发动机火花塞点火后n毫秒后进行一次测量?
n的量值取决于几个参数,例如发动机转速和加速度。
使用定时器触发任务可以实现这一过程。
?
用一个时间表可以实现若干次测量。
?
TimeTriggerSetBlock?
设定一个或多个任务触发延迟时间,在延迟后相应的时间触发任务被调度执行。
?
TimeTriggeredTaskBlock?
Time-TriggerSetblock设定的任务触发延迟时间到达时,执行其所连接的function-call子系统。
?
TimeTableStartBlock?
用来指明记录开始延迟计时的时刻的列表,和对应时间列表的任务模块。
?
TimeTableTaskBlock?
用于设定任务触发延迟时间并在任务触发延时到达时(加上另外可选的TimetableStart模块设定的启动延时时间)执行与其连接的function-call子系统。
18RTI:
ExtrasLibraryI?
如何读出系统的simState值:
?
模块:
?
simStateREAD:
?
读出当前的simState值?
0:
STOP?
1:
PAUSE?
2:
RUN?
该模块应置于设为后台执行任务的子系统中?
如何设置模型的仿真状态:
?
模块:
?
simStateSET?
配置触发或使能端口?
模块被执行时设置simState的值19RTI:
ExtrasLibraryII?
在一个实时模型里如何实现不同的数据采集服务:
?
应用:
?
与不同的任务同步来采集数据,例如硬件中断,第二个定时器,等等。
?
PPC平台上(DS1005,DS1401,DS1103):
可以使用时戳Time-stamping?
x-轴单位是秒20实时构架:
单定时器和多定时器任务模式?
单任务模式Single-taskingmode(缺省)?
单速率系统(只有一个任务)?
使用单任务模式效率最高?
多速系统(多于一个任务)?
生成的代码在一个时间步长里被中断服务例程调用?
所有模块的采样时间必须是基本采样时间的整数倍?
采样点控制的运行机制?
多任务模式Multitaskingmode(可选)?
Simulink/Simulation/Parameters/Solver?
多速率系统(超过一个任务)?
不同任务都被赋予不同任务优先级?
只有一个定时器中断服务程序(ISR)运行在基本采样时间上?
任务调度?
决定哪一个任务要被执行?
进行超时检查(超时:
某个任务在前一个任务完成之前被要求执行)?
提前Overhead?
1.非多速率模型2.高优先级的速率任务运算负荷高低优先级的速率任务运算负荷低1.高优先级的速率任务运算负荷低低优先级的速率任务运算负荷高B1B2B2B1B1定时器中断T1T2B1B1B1B1B2B2B2B221Ts1=1msTaskT1Ts2=2msTaskT2Ts3=4msTaskT3Timemsec01234PriorityInterruptT1T2T3定时器驱动的任务?
通过以下方式有效的处理多速率系统?
任务抢占式多速率?
按速率编排纯连续系统:
SignalGeneratorScope1/sIntegratorTz-1T=0.002Tz-1T=0.001SignalGenerator2SignalGenerator1Scope2Scope1Tz-1T=0.002Tz-1T=0.001SignalGenerator3SignalGenerator2SignalGenerator1Scope3Scope2Scope11/sIntegrator纯离散系统(多速率):
连续/离散混合系统:
22混合任务类型?
基于优先级的任务调度?
不同的中断类型具有不同的优先级?
只有一个连续采样任务23RTI:
TaskHandlingDialog?
为每个任务指派优先级(不同任务可以具有相同的优先级)?
显示中断源,中断模块和任务名称信息?
在TRC文件中可以找到变量overruncount(改变量对任务队列和忽略超时选项非常有用)?
停止仿真:
?
当出现超时simState被设置为STOP(0)?
任务队列:
?
安排新的任务实例?
任务将尽可能快的被执行?
设定允许队列的最大任务实例数量?
忽略超时:
?
中断请求被拒绝24?
关闭ControlDesk?
保持MATLAB打开,切换到d:
dspace-trainingExercise9目录下,打开模型pidrtdu.mdl?
添加一个softwareinterrupt模块驱动的中断驱动子系统?
在这个中断驱动的模块种添加一个计数器模型(为memory模块设置合适的采样时间),设置软件中断子系统的优先级最高并生成实时代码?
在模型根层次和子系统中分别添加HostService?
开始Build进程,然后打开ControlDesk,调入“vcfp_control.lay”并载入他的数据连接“vcfp_control.con”(仪表数据连接关系)?
添加PlotterArray以测量各个turnaround时间?
改变任务的优先级,再次分析turnaround时间?
使用CaptureSettings仪器检查HostServices的设定?
把所有的layouts和.sdf文件保存在实验d:
dspace-trainingExercise9中ExerciseIX:
使用软件中断25?
关闭ControlDesk?
保持MATLAB打开,切换到d:
dspace-trainingExercise9目录下,打开模型pidrtdu.mdl?
添加一个由DS4001定时和数字I/O板的userinterrupt