您好,欢迎访问三七文档
dSPACE培训教程RTI使用RTI使用;RTI初步;RTI初步标准I/O功能RTI高级功能RTI高级功能多速率任务和中断任务和中断附加库2RTI概述 RealTimeInterface实时接口接实时统 连接dSPACE实时系统与MATLAB/Simulink之纽带 从Simulink模型到dSPACE实时硬件代码的无缝自动下载MATLABSimulinkRTWStateflowReal-TimeInterfaceRT-SoftwareRT-Hardware3从离线到实时的工作过程概述第一步:打开离线模型,去掉将被真实硬件代替的部分4从离线到实时的工作过程概述第二步:第二步:打开dSPACE的I/O库,拖放适当的I/O块到模型中,与模型相连模连5从离线到实时的工作过程概述第三步:生成代码,自动下载到dSPACE实时硬件中dSPACE实时硬件中6RTI和RTW生成代码RTWfile(database)RTWFunctionLibraryyRTI.tlcBlock-levelTLCfilesRTWRTITargetLanguageCompilerRTIFunctionLibrary.tlcTLCfilesBlock-levelTLCfilesSystemtargetfile:rti1003.tlc.c.h.ioTLCfiles.prm.reg.trc.sdf7Real-TimeInterface/实时接口Real-TimeInterface/实时接口自动生成实时接口程序:代码生成生成I/O代码-代码生成-加入实时操作系统-下载应用程序激活编译/连接器下载应用程序生成数据表用于监视数据与参数调节下载应用程序8实时硬件从离线到实时的工作过程概述第四步:开始交互式试验9RTI初步RTI初步;标准I/O功能RTI高级功能RTI高级功能多速率任务和中断任务和中断附加库10仿真参数的设置和相关选项 通过Simulink的Preferences对话 通过Simulink的Preferences对话框来指定 SolverfSimulationstarttime:0.0fSimulationstoptime:inf或一个较大(相当)的数较大(相当)的数fSolverOptiontype:ode1fFixstepsize:期望的仿真步长 Add AdvancedfBlockreduction:offfSignalstoragereuse:offgg11接入I/O设备模块/O模块命名规范系统控制 I/O模块命名规范 PHS总线地址和板卡号添加步骤仿真模型 添加步骤 注意事项避免使用的函数目标代f避免使用RTW的S函数目标代码生成器生成的S函数f某些I/O板的I/O功能RTI不能I/OI/O某些/O板的/O功能不能提供时,利用S函数或者User-Code来实现(RTIlib)f多处理器系统注意I/O的物理信号调制f多处理器系统注意I/O的物理连接关系硬件12I/O模块命名规范 模块名称以板的名称开 模块名称以板的名称开头 功能性的描述 B板卡号 C通道数G组P端口数 G组P端口数 用户名称会用斜体来表示(模块名称中不要采示模块名称中不要采用双引号)13PHS总线地址和板卡号 同一类型多个I/O版 同一类型多个I/O版 通过PHS地址来区分 ControlDesk的硬件管理器硬件管器 按PHS总线地址增加顺序来定14如何添加I/O模块 找到需要的I/O模块拖至 找到需要的I/O模块,拖至模型中 根据信号连接关系与其他模块连接 编辑I/O属性fI/O通道选择fI/O通道选择f分辨率及量程范围f起始及终止属性f自动定标(-11) 不用的端口处理方法fGroundfGroundfTerminator15标量I/O块和向量I/O块 标量I/O块 标量I/O块fI/O通道是单独的f一个或多个标量端口f可重复使用,注意避免多次使用相同通道f能避免连线过长的问题能避免连线过长的问题 向量I/O块fI/O通道是成组的f个或多个向量端口f一个或多个向量端口f一个模型只能有一个模块f使用Fromgoto块来避免连线过g长的问题16代码生成及下载代码生成及下载model.rtwmodel_rtmodel.trc model.sdf文件:ASCIIfilef系统描述文件;涉及目标产生文件model_usr.ci.cRTI/.sdfTLCCompilerRTIfcn.libraries(MAP文件)和装载应用程序的平台fmodel.trcfmodel.ppc/model.x86model.cmodel.hfunctionsRTWfunctionsRTWfcn.librariesfmodel.map model_usr.c文件:ASCIIfilef为把用户编写的C代码作为线间(inline)model.lkrti_sim_engine.crti_sim_engine.hCompiler/Linker()函数融合到仿真环境中,所提供的一个模版,任何以这样名字存在的文件都不能被覆盖。sfcns.cLoadermodel.objLoader17RTI初步RTI初步 标准I/O功能;RTI高级功能;RTI高级功能多速率任务和中断任务和中断附加库18单速率sourceTs=01algorithmsinkTs=01Ts=.01Ts=.01Ts=.01所有模块都以0.01秒周期运算timet0t4t3t2t1t5=模型运算一步19的执行时间红色的模块以多速率红色的模块以0.01秒的周期执行;绿色的模块以0.03秒的周期执行。sourceTs=.01algorithmTs=.01sinkTs=.01Ts.01sourcealgorithmsinkTs=.03Ts=.03Ts=.03每隔两步的第三步都要每隔两步的第三步都要消耗多一些的时间执行。=慢任务执行一个时间=快任务执行一个时间timet0t4t3t2t1t520步长(Ts=.03sec)步长(Ts=.01sec)RTI初步RTI初步 标准I/O功能;RTI高级功能;RTI高级功能多速率;任务和中断;任务和中断附加库21任务处理 任务和中断 任务和中断f默认:周期任务(定时器A中断触发的任务)f其它中断(定时器、外部中断、软中断)触发的任务f其它中断(定时器、外部中断、软中断)触发的任务f后台任务:没有任务执行的时候才执行 任务处理务处f实时内核进行任务调度f基于优先级的抢占式调度程序22溢出和运行时间 溢出OR 溢出OverRunf在所设定的采样时间内没有完成应该完成的任务完成应该完成务f调度程序生成一个错误信息f避免溢出,必须确保没个任务的采样时间大于任务运行务的采样时间大于任务运行时间和任务切换时间之和23多速率的单任务模式 单任务模式将所有采样时间组合到个单任务中 单任务模式:将所有采样时间组合到一个单任务中由于无抢占式机制必须保证所有模块的任务在个 由于无抢占式机制,必须保证所有模块的任务在一个采样时间间隔内完成,否则可能会溢出24多速率的多任务模式 Silik的可选模式 Simulink的可选模式 每一个任务对应于模型每一个采样时间 采样频率快则优先级高 采样频率快则优先级高 如果所有的任务都可以在基本采样时间内完成,模型的执行方式可以类似于单任务的执行方式可以类似于单任务25在多速率任务间保持数据一致性 在多个定时器任务之间传 在多个定时器任务之间传递数据需要用到速率转换模块模块fZeroHold快到慢fUnitDelay慢到快f以慢模块的采样时间来执行26其它中断触发的任务 中断源 中断源f定时器中断,由dSPACE定时器中断产生f硬件中断,由指定的硬件产生f硬件中断,由指定的硬件产生f软件中断,模型本身产生 中断触发子系统断触发子系统f必须是function-call类型的触发子系统f在Tasklib中可以找到f在函数调用型子系统中不能包含另一个函数调用子系统,不允许中断嵌套27创建第二个定时器中断任务 应用: 应用:f创建的第二个任务不是第一个任务的整数倍f创建一个具有高优先级的慢子系统块ilk 块:TimerInterruptBlock28硬件中断 创建硬件中断触发任务: 创建硬件中断触发任务:f应用:系统各部分对时间中断的不同步外部信号驱动f块:HWInterruptBlock硬件中断块(I/O块库)29软件中断 软件中断 软件中断f应用:创建系统的子流程f步骤:从TaskLib中添加SoftwareInterrrupt块当SW中断发生时触发Interrrupt块设置所需要触发/使能端口连接一个触发/使能信号添加一个Function-callSubsystem块将需要的中断驱动的模型加到子系统中连接SoftwareInterrrupt块的输出端连接到中断驱动型子系30统的触发端口中断比较 软件中断 PHS-bus中断SubsystemSoftwareInterruptDS4001_1_1PHSBusInterruptTrigger()TriggeredSubsystemSubsystemSoftware_InterruptTrigger()TriggeredSubsystemPHS_Bus_Interrupt硬件产生中断T1硬件产生中断T2触发信号T1timt1t2t3t4T1T2timt1tt3tT1T2etime24f硬件触发f任意时间发生f软件触发f触发信号必须被计算31f和时间驱动任务不同步f同步调用任务之间数据一致性传递 如何进行有效的任务转换 如何进行有效的任务转换f在不同的中断驱动块子系统之间或一个中断驱动块子系统和一个即时任务之间所有被传送的数据送必须经过有效的任务转换TaskTransition. 模块fBufferTaskTransition(Read)fBufferTaskTransition(Write)fBufferTaskTransition(Write)32任务转换之间的数据传递应用 应用:f不必要保证数据一致f保证效率f保证效率 块:fNon-BufferedTaskTransitionfNonBufferedTaskTransition33后台任务 与实际的控制问题无关的与实际的控制问题无关的任务 执行速度快慢无关紧要 系统中昀低的优先级 CPU空闲的时候执行后台任务始终激活除非 后台任务始终激活,除非停止程序或硬件重启子系统的运行依靠当前的simState34RTI初步RTI初步 标准I/O功能;RTI高级功能;RTI高级功能多速率任务和中断任务和中断;附加库35RTI附加库 如何读系统的simState值:值f块:simStateREAD:f读当前的simStatevalue0:STOP1:PAUSE2:RUN 如何调整模块的仿真状态:块f应该被放置在在后台任务中执行的子系统中f块:simStateSETf配置触发或使能端口f当块被执行时指定simState的值为所设置值36的值为所设置值附加库: TRCEli块 TRCExclusion块 在生成TRC文件中将模型的子系统进行包含或剔除包含或剔除 应用于模型大对于某一子系统不关心的情况的情况 两个状态fActive激活Active激活fInactive非激活37练习 打开MATLAB运行ti库给模型添加ti模块 打开MATLAB,运行rti库,给模型添加rti模块 对模型进行编译 使用CtlDk注册硬件 使用ControlDesk注册硬件 使用ControlDesk编制监控界面,对模型进行在线监控和调参调参38
本文标题:RTI培训教程
链接地址:https://www.777doc.com/doc-960246 .html