RT-LAB8.1 版用户手册
介绍 1.1 关于 RT-LAB
RT-LAB 是一个分布式实时平台,它能够在很短的时间内、以很低的花费,通过对进行工程仿真或者是对实物在回路的实时系统建立动态模型,使得工程系统的设计过程变的更加简单。他的可测量性使得开发者能够把计算机使用到任何需要他的地方;充分的灵活性使得它能够应用于最复杂的仿真和控制问题,而不论是应用于实时硬件在回路还是快速模型,控制和测试中。为了达到理想的性能,RT-LAB 为分布式网络下分立目标机对高度复杂的模型进行仿真、通过超低反应时间通讯,提供了丰富的工具。此外,RT-LAB 的模型化设计使得用户仅仅提供应用所需的模型就能完成经济的系统、最小化经济要求、并满足用户的价格目标。这在大量的嵌入式应用中尤其显得重要。
1.2 主要特征
完全集成 MATLAB/Simulink,以及MATRIXx/SystemBuild 所有为 RT-LAB 准备的模型都能够在已有的动态系统模型环境中完成,通过使用这些工具,用户的经验也会相应的提高。分布式处理的专业化块设计,内部节点通讯以及信号 I/O RT-LAB 提供的工具能够方便的把系统模型分割成子系统,使得在目标机上能够并行处理(标准的 PC 上可以运行 QNX 实时操作系统,或者 RedHawk Linux)。通过这种方法,如果你不能在单处理器上运行实时模型,RT-LAB 提供多个处理器共享一个负载的方法来实现的。完全集成第三方建模环境以及用户代码库 RT-LAB 支持 StateFlow,StateMate,CarSimRT,GT-PowerRT,AMESim,Dymola 的模型,以及 C,C++,FORTRAN 的合法代码。丰富的 API 为开发自己的在线应用使用诸如 LabVIEW、C、C++、Visual Basic、TestStand、Python and 3D virtual reality 等工具可以轻松的创建定制的功能和自动测试界面。非定制技术 RT-LAB 是第一个完全可测量的仿真和控制包,使得你能够分割模型,并在标准 PC,PC/104s 或者 SMP(对称式多处理器)组成的网络上并行运行。在大量市场需求的推动下,用户可以从快速进步的技术中受益,使用相对较低的花费。 RT-LAB 使用标准以太网和火线(IEEE1394)进行通讯,还包括 ISA,PCI,PXI 以及 PCMCIA 在内的大量数字的和模拟的 I/O 板卡。共享存储器、火线、信号线、无限带或者 UDP/IP 进程间通讯。在执行时间, RT-LAB 为处理器间的通讯提供无缝支持,可以在目标机之间混合使用任何
UDP/IP,共享存储器以及易得技术进行数据的低反应时间通讯。同样,你也可以使用 TCP/IP 和主站上的模型进行实时互动。为信号和参数的可视和控制而集成的接口。在 RT-LAB 的可视化界面和控制面板中,你可以动态的选择你所要跟踪的信号,实时修改任何模型信号或参数。支持广泛的 I/O 卡――所支持的设备超过 100 种。 RT-LAB 集成了 Opal-RT 的 OP5000 硬件接口设备,具有 10 亿分之一秒的精确定时和实时性能。 RT-LAB 同样支持诸如 NI、Acromagm、Softing 以及 SBS 等主流生产厂家所生产的板卡。 RTOS(实时多任务操作系统)的选择:QNX,、RedHawk Linux,或 Windows(为了软件的实时性) RT-LAB 是唯一的实时仿真框架,它提供你选择两个高性能实时操作系统。 RT-LAB 支持 QNX,由于它具有已证明过的对任务标准工程应用的追踪记录;同样也支持 RedHawk Linux,它是当前流行的、源代码开放的 Linux 操作系统最重要的实时版本,来自 Concurrent Computer 公司。 RT-LAB 同样可以作为软件实时操作系统提供给 Windows 使用。最优化的硬件实时调度程序——高性能、低抖动。在一个时间步内,系统不仅计算动态模型,而且它可以管理任务,如读写 I/O、刷新系统时钟、传输数据以及处理通讯,这就限制了一桢内用于计算模型的时间量,从而限制了单处理器上计算模型的大小, RT-LAB 在保证完成功能的情况下已经可以把这个减小到原硬件性能很小的百分比,因此提高了计算更加复杂模型的能力。高速 XHP 模式——多速率 XHP 模式——软件同步模式 RT-LAB 的 XHP(超高性能)模式允许用户能够以非常快的速度在目标机上计算实时模型,这使得用户能够运行比分布式处理器更复杂的模型。有了数字、模拟 I/O,运行时间周期可低于 10 微秒。 RT-LAB 的 XHP 模式能够将系统管理消耗大幅度削减到一微秒以下,使你能够充分利用系统性能来实时计算高度动态模型,这对那些对越来越复杂的系统进行仿真时需高保真度响应、要求高准确率的开发者来说,是一个解决问题的办法。即便是当信号在硬件在回路系统,也仅仅需要将系统开销增加到一百微秒时间桢,模型需要在主要时间步之间多次计算才能保证数据的准确性。到目前为止 XHP 模式,比其他任何实时系统都要优秀,尤其是在电子系统中,诸如驱动器控制及电力电子。
1.3 潜在客户、所需的知识和技能
1.3.1MATLAB 或 MATRIXx MATLAB 和 MARTIXx 是工程计算软件包,它们集成了编程、计算并且可视化。同时 MATLAB 和 MATRIXx 仿真和系统建模,这些软件包将在以下介绍。由于 RT-LAB 要与这些环境协同工作,你必须熟悉 MATLAB 的 Simulink 以及 MATRIXx 的建模这些方面知识。比如说,如果你打算从一个系统上采集数据并离线处理数据,那么你必须知道如何保存这些数据并且用 MATLAB 或者 MATRIXx 重新读取数据并把数据在软件支持的不同显示器上显示出来。 1.3.2Simulink 或 SystemBuild Simulink 和 SystemBuild 是能够建模、仿真和分析动态系统的一些软件包,你可以用图形化的方式描述模型,接着有一个基于模块库的精确格式,RT-LAB 使用 Simulink 或 SystemBuild 来定义要在实时多处理系统上运行的模型,并定义它的仿真参数。因此期望用户对 Simulink 或 Systembuild 的操作有一定的认识理解,尤其是有关模型定义和模型变量仿真参数。如果你打算自己制作与能与 RT-LAB 兼容的模块,那么你应该了解如何为你的指令站和目标环境创造
Simulink 或者 SystemBuild 图标(S 函数和 UCBs)
1.4 本向导的组成
RT-LAB 的列表文件有以下几个组成部分:安装向导 API 参考向导用户向导本文档是用户向导。主题如下第一页简介:介绍了仿真和 RT-LAB 的运行原理。第七页用户接口:描述了所有的 RT-LAB 的用户接口。第四十九页建模:概述了 RT-LAB,从 Simulink 或 SystemBuild 的方框图到 RT-LAB 的可以使用的分布式模型。第五十七页执行模块:描述了如何实时运行模块。第六十九页获取和观察数据:描述了优化仿真所需的相关概念,并对 RT-LAB 接收数据可能出现的问题提出了解决办法。第七十五页监视模型:描述了如何测量性能。
1.5 本文档的规定
OPAL-RT 向导使用如下约定:表一:通用的和印刷的约定约定黑体注释警告推荐编码斜体字蓝色文本含义用户界面元件,文字必须严格按照所示键入强调或补充文字。你可以忽视注释信息并仍能玩成任务描述必须避免的行为或者以下是预期结果描述一些你可能不会采取的行为,但你仍然能够完成任务编码参考工作名称对照(内部或外部)或者超文本链接
1.6 基本概念
这节描述了 RT-LAB 的基础,提供了仿真过程的概览,从设计和确认模型,到使用方框图和 I/O 设备,来运行仿真和使用图形界面的控制台。 1.6.1 设计和确认模型任何仿真的起点都是被仿真对象的系统组成部分的数学模型。你通过分析对象系统并在动态仿真软件上运行对象系统来设计和确认模型。 RT-LAB 被设计来在实时多处理环境中,使离线动态仿真软件做的模型自动化运行,这些动态仿真软件如 Simulink 或者 SystemBuild。
RT-LAB 是完全可升级的,使你能够把数学模型分割成块,以便于在计算机组上并行运行,而不改变模型的特性、引入实时脉冲干扰,或者产生死锁。 1.6.2 使用方框图使用方框图编程能够简化参数的进入,并确保被仿真系统文件的完整性和准确性。一旦模型被激活,你就可以把它分割成子系统并插入合适的通讯块,每一个子系统都会在 RT-LAB 分布式网络上的目标节点中运行。 1.6.3 使用 I/O 设备 RT-LAB 支持 I/O 设备的使用,以确保将外部物理元件集成为一个系统,这样就是人们所熟知的(HIL)硬件在回路配置,或者(RCP)快速控制原型,不论是电机还是控制器都可被分别仿真。对 I/O 设备的最优化使用使得 TR-LAB 能够作为一个可编程的控制系统,并展现灵活的实时人机接口。 I/O 设备接口可以通过定制块来进行配置,只需要把块添加并连接到模型中,RT-LAB 的自动码生成器将会把模型数据写入物理 I/O 卡中。 1.6.4 运行仿真一旦原始模型被分割成各个子系统,并与各种各样的处理器连接,模型的每一部分都会被自动生成 C 代码并编译,在目标节点上运行。目标节点可以是商用 PCs,并配有 PC 兼容处理器,在 Windows2000/XP,QNX 或者 Redhawk Linux 环境中运行。 1.6.5 执行和操作模型参数当生成 C 代码和编译完成后,RT-LAB 自动把计算量分配到目标节点,并提供接口。至此,你就可以运行仿真和操作模型参数。其结果是高性能仿真,能够并行实时运行。 1.6.6 使用控制台作为图形接口你可以在仿真的时候,通过控制台和 RT-LAB 互动,一个对指令站操作的命令终端。控制台和目标节点之间的通讯可以通过 TCP/IP 连接进行。这使得你能够保存模型上的任何信号,以便观测或者离线分析。同样,你可以使用控制台在仿真运行时修改模型参数。 1.6.7 与 RT-LAB 一起工作运行 RT-LAB 软件的硬件配置要包含如下部件:指令站节点编译目标节点 I/O 板卡在 Windows2000/XP 或者 Redhawk Linux 上运行 RT-LAB 软件的叫做指令站,作为你的界面,使你能够:编辑和修改模型观看模型数据在仿真软件(Simulink,Systembuild 等)下运行原始模型分布编码控制模拟器的开始/停止顺序仿真能够完全在指令站上运行,但一般来说都在一个或多个目标节点上运行。对实时仿真来说,首选的操作系统是 QNX 或 Redhawk Linux。当有多节点的时候,他们之一就会被设计为编译节点,通过通讯线路,控制台和目标机之间进行通讯,为了进行硬件在回路仿真,目标节点同样会通过 I/O 板卡和别的设备进行通讯。目标节点是实时处理和通讯的,计算机使用商用处理器。
这些计算机能够具有一个实时通讯接口如火线,信号线,Infiniband,或 cLAN (取决于你所选择的操作系统)以及 I/O 板卡以访问外部设备。实时目标节点完成:实时目标仿真运算;目标节点间、目标节点与 I/O 间实时通讯; I/O 的接口系统;通过 I/O 模型获取模型的内部变量及外部输出;执行用户的在线参数修改;需要的话,可以在本地硬盘驱动器记录数据;监督模型仿真的执行和节点的通讯。节点的编辑是用来产生 C 代码的,任何目标节点都可以成为编译节点。 RT-LAB 支持多种模拟、数字、计时器 I/O 板卡,因此能够与外部应用设备连接,如 HIL。
用户接口
本章介绍使用 RT-LAB 提供的面板,这些面板是: MetaController:主要的 RT-LAB 应用程序是在后台进行的。 MainControl Panel: RT-LAB 的主要界面,允许你编辑、编译、执行模型。 RT-LAB Display Panel:显示编译和运行信息。 Probe ControlPanel:管理 RT-LAB 的参数获取。 ParameterControl Panel:允许当仿真运行时更改参数。 Monitoring Viewer Panel:监视模型的运行。 Snapshot:对模型状况进行快照并储存。 Snapshot DecoderPanel:读取快照文件并把它转换成 ASCII 码。
2.1MetaController
2.1.1 图标系统托盘 2.1.1.1 描述 MetaController 是 RT-LAB 主要的应用运行背景。系统启动时,该程序也就启动了。这个应用担当服务器,并要求打开一个新的模型。
图 1:MetaController 图标系统(Windows 系统下) 2.1.1.2 参数 MainControl 启动 MainControl,双击系统图标,会同时启动 RT-LAB 的 MainControl。监视:启动 Monitoring Viewer Panel 参数控制启动 ParameterControl Panel 侦测控制启动 Probe Control Panel RT-LAB 显示启动 RT-LAB Display Panel Dinamo启动 DINAMO 面板显示控制器在任务栏里显示 RT-LAB 的控制应用,默认不检查控制器的使能在 RTLAB-ROOT\common\bin 文件夹里创建文件: Controller.log,以备调试使用,默认不检查。推出关闭 MetaController。
2.2MainControl
2.2.1 主控接口面板 2.2.1.1 描述 RT-LAB 的 MainControl 是一个图形用户接口,使你能够很容易的使用 RT-LAB 所提供的多种功能,一定要先运行 MetaController,然后才能运行这个 MainControl。
图 2:RT-LAB 主控 2.2.1.2 参数 Open Model:允许你选择一个用 Simulink/Sysembuild 所建立的模型,并从打开文件表格框里显示出来(MetaController 必须运行),所用的模型必须是最高阶层的,原始模型将会被分割成为子系统,并有前缀:SC-,SM-,SS- 在 Open Model 上点击右键,会显示最近 5 个打开过的模型。 Connect:使你能够连接到任何已打开的仿真模型上。如果有正在运行的仿真显示激活模型面板,右键点击这个按钮会显示测试节点面板。 Disconnect:关闭到目前仿真模型的连接,同时允许你随后再次联接,而不必重新设置仿真值(如 RESET 按钮)。 Probe Control:启动 Probe Control 面板,你能够在此设置数据获取参数。 Paramenters:启动 Paramenters 面板,你能够在模型运行时修改参数。 Configuration:启动 Configuration 面板你能够设置和编译模型、运行仿真有关的多种选项,同样可以进行实时网络设置。 Store Embedded:使你能够把模型存入嵌入式系统中,如使用 PC/104 格式。注释:这个功能仅在 QNX6 和 RedHawk 中才有。 Fixed Step Size:显示模型基本的计算步并在仿真文件的 Simulation〉Parameters〉Solver 菜单中详细说明,或者在顶级 Systembuild 模型的 Sample Period 显示。 Time Factor:用这个值乘以模型的基本计算步(即步长),就得到了系统的计算步。只有当仿真运行暂停时,这个功能才能被激活,而且也只有在同步模式下才能使用(软件/硬件)。注释:这个参数能够改变 I/O 的获取速度。因为模型总是使用基本的计算步,改变时间因数就可能会产生不同与离线仿真的结果。这个参数一定会被用在计算系统的最小计算步上,一旦这步确定后,这个参数会返回值 1,模型的基本计算步也会相应的刷新,通过在设模型中设定正确的值。 Stop Time:这个值(以秒计)指定了模型的停止时间,如果值是“inf” ,模型会被一直执行下去,更改此值时,你不需要重新编译模型。 Apply:应用新的 Time Factor 和 Stop Time 值。
Cancel:取消关于 Time Factor 和 Time Factor 参数最后的更改。 Target Platform :在这里,你可以选择运行仿真的目标平台( QNX6 , Redhawk , WindowsNT/2000/XP)。 Edit:打开原始 Simulink 或者 SystemBuild 模型以便修改。使用 ctrl 键和右击这个按钮使你能够打开 Windows Explorer 来设置模型路径。 Compile:使你能够选择合适的编译选项并运行模型分割、产生代码、以及从分布式模型中编译子系统,编译选项包括:分割模型;产生代码;传输文件;编译产生的代码;文件回传。你可以通过右击 Compile 来改变这些选项。 Assign Nodes:使你能够把物理节点分配到模型的各个子系统中去。 Load:把可执行代码加载到不同的节点中去并设置模型的状态为暂停。 Reset:初始化系统节点并完全停止。 Use model console:当你选择 Load 或 Reset,使你能够自动打开或关闭控制台。你第一次运行模型时,控制台会自动启动,右击这个按钮就会出现一个菜单,使你能够手动打开或关闭控制台。 Execute:启动系统并在网络上运行分布式系统,如果选中 Use modelconsole 检测盒,模型控制台就会在你第一次运行模型时自动打开。 Pause:使系统处于等待状态,停止计算而不重新分配节点,要继续运行的话,就点击 Execute. Single step:使你的仿真运行一次走一步。 Snapshot:使你能够在运行时进行快照并保存仿真值。在重新进行仿真序列时,这个功能尤其有用。 Execution Model:使你能够在选项中选择如何进行模型仿真。仿真模型可以运行在 QNX6, Redhawk 或WindowsNT/2000/XP 系统。 Simulation:在这个模式下,模型不是同步的,上一步完成时。模型会开始一个新的计算步(模型以最快的速度运行) Simulation withlow priority:在与其它应用程序公用一台计算计的话,这种仿真模式可以仿真在后台运行,。注释:“Simulation withlow priority”只有在目标平台系统为 Windows 时才可以使用。 software synchronized:在这种模式下,操作系统可以进行全部仿真的实时同步,使用 CPU 时钟作为参考。取决于操作系统所提供的精确度,使用此技术,一些采样时间可能会丢失(比如,在 QNX6.1 下,可用的最小取样时间是 500 微秒) Hardware Synchronized:在这个模式下,I/O版的时钟被用来做全部仿真的同步信号。 Macro-Play:运行一个已记录的宏。 Macro-Stop:停止记录宏。 Macro-Rec:打开宏录制器对话框。 Macro-Edit:用默认编辑器编辑一个已经录制好的宏。 Help:打开 RT-LAB 的帮助主页。 Close:关闭面板,但不停止正在运行的仿真。这是关闭 Control Panel 窗口的标准方法。关闭面板与模型的自动连接。
2.2.2Active Models 面板 2.2.2.1 描述 Active Models 面板是一个图形化的用户接口,使你能够连接到一个正在运行仿真的目标机上,以下显示了可用的仿真。
图 3:激活模型 2.2.2.2 参数 Clear entry:取除从激活模型上选择的模型。只有当模型断开时才能用此选项。 Clear alldisconnected models entries(模型用红色表示):清除全部无效连接。 Expand all:扩充激活模型列表上的全部子目录。 Connect:连接到已选的模型(同样双击选项) Cancel:关闭面板而不连接到已选的节点上。 2.2.3Compilation Options 面板 2.2.3.1 描述编译选项面板使你能够在编译模型的时候选择编译选项。
图 4:在 Windows NT 上编译 2.2.3.2 参数 Separate model:当选中这个选项,模型按照指定被分割成子系统,对所有的子系统,这个选项都可以使用。 Generate code:当选中这个选项,可以从已选的子系统上产生 C 代码。 Compile generated code:当选中这个选项,已选的子系统上产生的代码以及指定的额外文件(如
果有的话,看 File&Command Tab)通过 FTP 方式传输到编译节点上。 Compilegenerated code:当选中这个选项,已产生的代码就会在编译节点上被编译。 Retrieve filesfrom target:当选中这个选项,已选子系统上的二进制码以及指定的额外文件通过 FTP 方式传回,在目标节点上的操作系统为 WINDOWS 时,不能同这个选项。 OK:开始编译并保存选项。 Cancel:关闭面板而不编译模型。警告:定制编译选项可能会影响到仿真结果,最好只有高级用户才能用编译选项。 2.2.4 AssignNodes 面板
图 5:分配节点 2.2.4.1 描述分配节点面板是一格图形用户接口,使你能够把计算子系统分配到目标节点上去。 2.2.4.2 参数 Subsystems:模型的子系统名。 AssignedPhysical Nodes:运行子系统的目标节点。 XHP:如果选了的话,自系统就会以 XHP 模型运行(仅在 QNX6 及 Redhawk Linux 上可用)。 CPU(只为高级用户):将要运行子系统的 CPU 号。当设置了“auto”(默认值),在以下 CPU 中,自系统将被分配到同样的节点下:指定从 CPU1 开始(如果可以的话)。首先分配 XHP 子系统。 XHP 模式下子系统的最大运行数字是 CPU 号。中断子系统被分配到别的 CPU 上,一次一个直到 CPU0。举例: CPU 号子系统号注释 1 1 或更多中断模式所有子系统都在 CPU0 上运行 1 1XHP 只有一个 XHP 子系统被允许在 CPU0 上运行。 2 一个或更多中断模式子系统 1 被分配到 CPU1,其余被分配到 CPU0。 2 一个 XHP 以及一个 XHP 模式子系统被分配到 CPU1,其余被分配到 CPU 2 或更多中断模式
2XHP
4
1 或更多在中断模式
XHP 只允许两个子系统,子系统 1 和 2 被分配到 CPU0 上,另一个目标被要求与实时连接通讯。子系统 1 被分配到 CPU1 ,子系统 2 被分配到 CPU3,自系统 3 被分配到 CPU3,其它被分配到 CPU0。子系统 1XHP 被分配到 CPU1,子系统 2XHP 被分配到 CPU2,子系统 3 中断被分配到 CPU3。 XHP 模式只允许 4 个子系统,子系统 1XHP 被分配到 CPU1,子系统 2XHP 被分配到 CPU2,子系统 3XHP 被分配到 CPU3,子系统 4XHP 被分配到 CPU0,另外需要目标与实时连接通讯。
4
2XHP 及一个或等多子系统在中断模式
4
4XHP
Remaining Physical Nodes:列表显示剩余可用的目标节点。 Ping:检测目标节点是否连接到网络上。 2.2.5 Configuration 面板 Configuration 面板是一个图形用户接口,使你能够设定本地或者全局 RT-LAB 参数。 Configuration 面板分成两个主要的部分:ModelConfiguration Advanced Settings 注释:请注意任何包含 Global Settings 功能的面板,Global Settings 在所有的模式下都能使用,而 Local Settings 只对当前打开的模型有效。配置面板是: General(参见 General 标签页) Monitoring(参见 Monitoring 标签页) User Variables(参见 User Variables 标签页) ADVANCED SETTING:实时通讯(参见 Real-Time Communication 标签页)文件&命令(参见 File & Command 标签页) 编译选项(参见 Compilation Options 标签页) 驱动(参见 Drive 标签页) 路径(参见 Directories 标签页) 硬件配置(参见 Hardware 标签页)
图 6:模型配置
图 7:高级设置注释:请注意,对任何面板来说,都有全局设置功能,全局设置应用于所有的模型,而本地设置只对当前打开的模型有效。 2.2.5.1 通用标签
图 8:模型配置—通用标签 Compile in debug mode:当选中这个选项,模型编译时,最佳选项被调试选项清除及替代。调试模型时,这个选项尤其有用。 Extended time out:选中这个选项是,所有的超时都会被延长,调试模型时常常会用到。允许使用 WATCHDOG:watchdog 能够确保所有的节点都工作正常。一个模型就有一个看门狗,在用户设定的时间间隔,看门狗检查模型是否仍然在运行,程序是否仍然在活动,如果发生错误,看门狗就会暂停仿真。当目标节点为 WINDOWS 系统时,该选项不能用。 Detect Overruns:(仅可用于软件/硬件的同步模式),在模型运行超过一定的数值时,停止模型运行,这个变量对同步模式没有影响。如果没有选择这个选项,就不能使用过度运行检测(例如,在测试 5 过度运行时当值=5 时就停止执行)。过度运行的数量在 RT-LAB 的 RT-LAB Display Panel 中可以看到。OP Monitor 也输出了这个数量。 Use globalsetting:允许/禁止使用全局设置。 Get global settings:用全局设置替换本地设置。 Default targetplatform:建立一个新的模型时默认目标平台。 Load RT-LABdefault:加载 RT-LAB 默认全局设置。 OK:使用修改后的设置并关闭版面。 Cancel:关闭面板而不是用修改后的选项。 Advanced:打开高级配置面板。 Change Global settings:使你能够修改全局设置(需要密码),全局变量的任何修改都会在已选
的目标平台上所有的模型应用。 Apply:应用修改后的设置而不关闭面板。
2.2.5.2 Monitoring 标签
图 9:模型配置—Monitoring 标签 Message precision factor:以微秒定义了定时器报告完成一个计算步所需要时间的精确程度。默认值是 0(没有打印输出)。取 1 时,以微秒为单位,打印模型每 1,000,000 步的计算步长。取 100 时,为 100 微秒为单位,打印模型每 10,000 步的计算步长。警告:这个选项可能会影响到实时仿真的运行。 Warn on model loadwhen target disk space is below:目标盘可用空间低于设定值,模型加载时发出警告。 Enable monitoring:模型运行时,允许或禁止监视。 TargetInformation Display:代表运行时,日志框里显示出的信息量。把这个值从最小设置到详尽使你能够得到很多信息,如通讯及 I/O 初始化,可以用来调整你的模型。注意:Exhaustive mode 只能用于调试模型时,因为它会影响到实时性能。 Use global settings:允许/禁止使用全局设置。 Get global settings:用全局设置替换本地设置。 Load RT-LAB default:加载 RT-LAB 默认全局设置。 OK:使用修改后的设置并关闭版面。 Cancel:关闭面板而不是用修改后的选项。 Advanced:打开高级配置面板。 Change Globalsettings:使你能够修改全局设置(需要密码),全局变量的任何修改都会在已选
的目标平台上所有的模型应用。 Apply:应用修改后的设置而不关闭面板。 2.2.5.3User Variables 标签 User Variables 是用来允许对一些仿真目标机进行设置而不用重新编译模型。大部分设置是用来调试模型,或作为仿真目标的工作区。因此,用户变量标签的全局设置部分应该谨慎使用,它会把对一个具体模型的设置应用于所有以后打开的模型中。
图 10:模型配置—User Variables Key name:用户变量名。 Value name:用户变量值。 Add:把一个用户变量添加到列表中。 Edit:编辑列表中的用户变量。 Remove:从列表中清除一个用户变量。 Use globalsettings:允许/禁止使用全局设置。 Get global settings:用全局设置替换本地设置。 Load RT-LABdefault:加载 RT-LAB 默认全局设置。 OK:使用修改后的设置并关闭版面。 Cancel:关闭面板而不是用修改后的选项。 Advanced:打开高级配置面板。 Change Global settings:使你能够修改全局设置(需要密码),全局变量的任何修改都会应用在已选的目标平台上的所有模型。 Apply:应用修改后的设置而不关闭面板。 2.2.5.4Real-Time Communication 标签
图 11:Model Configuration-Realtime communication 标签页 Type:设置目标群的通讯媒介。以下是目标平台的可选选项: NT:UDP/IP QNX6.X:OCHI,UDP/IP,SIGNALWIRERedhawk::OCHI,UDP/IP,SIGNALWIRE,INFINIBAND Use global settings:允许/禁止使用全局设置。 Get global settings:用全局设置替换本地设置。 Load RT-LAB default:加载 RT-LAB 默认全局设置。 OK:使用修改后的设置并关闭版面。 Cancel:关闭面板而不是用修改后的选项。 Advanced:打开高级配置面板。 Change Globalsettings:使你能够修改全局设置(需要密码),全局变量的任何修改都会应用在已选的目标平台上所有的模型。 Apply:应用修改后的设置而不关闭面板。
2.2.5.5 Files&Commands 标签
图 12:模型配置—Files&Commands 标签 Before opening model:需要在打开模型(编辑和编译时)之前运行的 Matlab/Xmath 命令。例如,MyinitFile.m 文件,MyinitFile 包含初始化模型变量的命令。 After opening model::需要在打开模型(编辑和编译时)之后运行的 Matlab/Xmath 命令。例如:MyinitFile.m 文件,MyinitFile 包含了初始化模型变量的命令。 Transfer filesto target:显示编译前或者下载前,需要传输到目标节点的文件列表。 Retrieve filesfrom target:显示模型编译完成以后,需要从目标节点传输到上位机的文件列表。 List ofextra-files:这个列表指明了模型编译前,要被拷贝并传输到目标环境的一个或多个文件;相对路径指明了窗口路径到目前模型路径的相对路径;绝对路径必须起始于驱动器和根目录,或者紧跟 UNC 提示符:\\Server\\share\\...;可以指定单个文件,也可以使用通配符来指定所有的相关文件,比如:$(MODEL-ROOT)\..\$(OTHER-DIR)\...\\*.cAdd...:把新文件添加到列表中。 Edit:编辑在文件列表中选中的文件。 Remove:清除在文件列表中选中的文件。 Remove All:清除文件列表中的全部文件。 Debug &command line template:钩选了需要调试的子系统名之前的选择框,模型加载时就会启动调试器;但是在选择这些选项之前,模型必须在调试模式下被编译。推荐选定 Extended Timeout选项(调试模型参考 Monitoring 标签)
OK:应用修改的设置并关闭界面。 Cancel:关闭界面而不应用修改的设置。 Change Global settings:使你能够修改全局设置(需要密码),全局设置的任何修改都会应用在已选目标平台上的所有模型上。 Apply:应用修改的设置而不关闭界面。
2.2.5.6 Compilation Options 标签
图 13:模型配置—Compilation Options 标签 User source files:参与编译的除 RTW/AutoCode 产生的代码外的源代码文件,用来将用户自己编写的代码加入到模型中执行,比如file1.c,file2.c,file3.c User external libs:当 MATLAB 和 RTLAB 库与用户自己编写的代码协同工作时,可被用来把标准系统之外的库列入目录,多个库之间通过空格隔开。库文件的命名要参考目标节点的连接器文档。如-lmylib.lib.-lmylib2.a User compiler option:选项会被传送到目标机编译器里,在可能的编译器选项上查阅目标机编译器文件以获取详细信息。如(-xxx)。 User include path:能够找到用户定义的包含文件的目标机路径,当编译用户编写的代码时,如果在已经定义的路径下找不到所需的包含文件,则可以在此路径中搜索需要的包含文件;所有路径都是以-I 开始,多个路径通过空格分开(如-I/usr/myinclude-dir/--I/usr/my-inc-dir2/)。 User library path:可以找到用户库的目标机路径。当与用户自编的代码协同工作时,可以用来寻找除 MATLAB 、 MATRIXx 、 RT-LAB 库之外别的库;用冒号分开多个路径。(如 /usr/my-lib-dir:/usr/my-lib-dir2) User linker option:选项将会被传送到目标连接器上。参考可能连接器选项上目标连接文件以获取详细信息。(如-xxx). Compilation command:编译时,目标机上调用的命令。
User tmf file:编译时指定的 makefile 模板;如果选择了 Automatic,系统就会根据 MATLAB 版本自动选择对应的 makefile 模板;这个选项只对 SIMULINK 模型可用。 User tlc file:编译时指定使用的 tlc 文件。当选择 Automatic 时,也会自动选择与 MATLAB 版本相一致的 tlc 文件; 这个选项只对 SIMULINK 模型可用。 User option file:当为子系统生成代码时,给模型分割器指定的 AutoCode 选项文件。,如果选项文件在模型目录里,用户即可以指定文件名,也可以指定路径,如 C: \projext1\options\acc.par;有一个对自动编码作类型测试的选项,可以检测你模型中变量的类型(整数、浮点数等等),如果没有选这个选项的话,所有的变量都会被默认设置成为整数类型。当你从操作系统命令行里运行 AUTOCODE 时,这个选项就会被指定,-o-l-t 选项就会被保留以供 RT-LAB 使用,这个选项只有在 SYSTEMBUILD 模型下才能使用。 Use globalsettings:允许/禁止使用全局设置。 Get global settings:用全局设置替换本地设置。 Default targetplatform:建立一个新的模型时默认目标机平台。 Load RT-LABdefault:加载 RT-LAB 默认全局设置。 OK:使用修改的设置并关闭界面。 Cancel:关闭界面而不使用修改的设置。 Change Global settings:使你能够修改全局设置(需要密码),全局设置的任何修改都会应用在已选目标平台上的所有模型。 Apply:应用修改的设置而不关闭界面。
2.2.5.7 Drive 标签
图 14:模型配置—Drive 标签 List:指定与WindowsNT/2000/XP 下模型路径相联系的目标路径,可用来确定可执行文件编译、加载的目标路径位置。路径必须完整:Windows 路径必须起始与驱动器和根目录;目标路径必须起始于根目录,多个 Windows 路径必须被指定(例如 All=/home,C;\=home)。
注释:不像 windows 操作系统,QNX 和 RedHawk 对大小写字母是区分的。 Add...:把新文件添加到列表中 Edit:编辑在文件列表中选中的文件。 Remove:清除在文件列表中选中的文件。 OK:应用修改的设置并关闭界面。 Cancel:关闭界面而不使用修改的设置。 Change Globalsettings:使你能够修改全局设置(需要密码),全局设置的任何修改都会应用在已选目标平台上的所有模型。 Apply:应用修改的设置而不关闭界面。
2.2.5.8 Directories 标签
图 15:模型配置—Directories 标签 OPAL-RT root directory:通常使用的路径是/usr/opalrt,用于查找 RT-LAB 可执行文件、包含文件及库文件,这使得 RT-LAB 的新版本和先前的版本可以协同工作。安装脚本可以使最新的版本安装到系统上,这个选项可以用来详细说明它路径上的版本;自动设置意味着基于控制站上的 RT-LAB 版本,目标机路径会被自动设置。 MATLAB rootdirectory:用来替代/usr/matlab 以找到 MATLAB 的包括文件和源代码文件。除了/usr/matlab 路径之外,通过保存先前版本的备份,RT-LAB 支持多种不同的 MATLAB 版本。自动设置意味着基于控制站上的 RT-LAB 版本,目标路径会被自动设置。 MATRIXx root directory:此路径用来找到 MATRIXx 的包含文件和源代码文件。 XMath target:指定了一批 MATRIXx 非标准安装下,为了运行 Xmath 所用的一批文件,则各变量可由 C:\isi\bin\xmath.bat 默认查询。比如:当 MATRIXx 装到了别的路径下,比如 C:\Application\isi 可以把这个变量设置到C:\isi\bin\xmath.bat,指向 Xmath 的最新版本(这里是 xmath61.3)因此,必须指定 XmathTarget=C:\isi\bin\xmatn-60.6.bat 显示 RT-LAB 它的版本必须是 60.6。
Use global settings:允许/禁止使用全局设置。 Get global settings:用全局设置替换本地设置。 Default targetplatform:建立一个新的模型时默认目标平台。 Load RT-LABdefault:加载 RT-LAB 默认全局设置。 OK:使用修改的设置并关闭界面。 Cancel:关闭界面而不是用修改的设置。 Change Global settings:使你能够修改全局设置(需要密码),全局设置的任何修改都会应用在已选目标平台上的所有模型。 Apply:应用修改的设置而不关闭界面。 2.2.5.9
Hardware 标签
图 16:模型配置—Hardware 标签 Development node:编译模型使用的目标节点。选择 Development node前必须要使用 Add 按钮,把目标节点定义到节点名/IP 地址框下。 FTP user:目标节点上面定义的 FTP 用户,这个 FTP 用户用来实现主机和目标节点之间的文件传输。 FTP Password:为 FTP user 定义的 FTP 密码。 Node name:节点名,当使用 Assign Node 按钮时这些节点名字就会显示出来。 IP address:节点的 IP 地址,这个可以是 IP 地址的符号,(由 WINDOWS 主文件的命令站解决,或者 DNS 服务器解决)也可以是 IP 地址数字,比如 IP 地址=qnx6 或者 IP 地址=192.1.1.6。 Node ID:(只对 QNX4.2.x)QNX 节点的 ID,为识别节点,可以在 QNX 节点问题提示中打: uname –n 按
VIA name:(只对 Windows 操作系统)。只对 cLAN 使用,识别 WINDOWS 节点的 Via 名。 List:列出所有可用的目标节点。 Add:把一个新的节点添加到列表中。 Edit...:编辑一个从列表上选中的节点。 Remove:清除从列表上选中的节点。 Ping:Ping 一个节点以检查其状态(关闭或者运行)。 Update:使你能够用新的软件更新目标节点。请注意,目标机上必须已经装了 RT-LAB。 OK:使用修改的设置并关闭界面。 Cancel:关闭界面而不是用修改的设置。 Change Global settings:使你能够修改全局设置(需要密码),全局设置的任何修改都会应用在已选目标平台上的所有模型。 Apply:应用修改的设置而不关闭界面。
2.2.6 Macro Recorder 界面
2.2.6.1 概述 Macro Recorder 界面使你能够录制使用用户界面(MainControl, ParameterControl,....)的命令和生成可以执行的 Python 脚本(在以后的版本中可能支持别的语言)。
图 17:Macro Recorder—编码器对话框 2.2.6.2 参数 File name:要记录的脚本文件的路径和文件名,如果没有指定路径,那么就会在模型路径里生成文件。 Macro name:所要生成的宏的名字。在脚本文件里,将生成一个有这样名字的函数。 Language:在这个版本里总是 Python 语言。 Stylesheet:Stylesheet 使你能够定制脚本格式。 Records time:记录每次行为之间的时间,这个时间可在命令站上读到(不是目标节点),精度大约是 10ms,。 Append macro to file::在同一个脚本文件里录制多个宏。 Comments:这里的注释会被插入到脚本文件的开头。
2.2.7 Test Node 界面
2.2.7.1 概述 Test Node 界面以图形界面的形式使你能够检查仿真是否在指定的节点上运行。紧跟着一个 Test Node 界面图形部件的描述,这个面板主要用来连接嵌入式仿真的模型。
图 18:Test Node 界面 2.2.7.2 参数 Target Platform :选择要探查的目标平台的类型。有三个可能的选项: QNX6.x , WindowsNT/2000/XP,或 Redhawk。 Name of target node to be tested:显示要测试的目标节点列表;如果要在此列表上添加一个新的目标,参考“Hardware 标签” 。 OK:测试选中的目标节点;如果有仿真模型正在运行,那么 Active Models 界面就会打开。 Cancel:关闭界面而不测试选中的目标节点。
2.3 RT-LAB Display 界面
2.3.1 主界面面板 2.3.1.1 概述 RT-LAB Display 界面可以显示所有的 RT-LAB 输出:编译输出仿真输出这个界面使你能够保存并打印输出。
图 19:RT-LAB Display 界面 2.3.1.2 参数 Model:这个菜单显示模型命令: Connect:使你能够连接到任何已经打开的仿真模型上,如果有正在运行的仿真模型就会自动打开 Active Models 界面。 Disconnect:断开到目前仿真模型的连接,并允许稍后重新连接。 Save:把选中窗口的输出保存到文件。 Save All:把全部的窗口输出保存到文件,文件在模型目录里建立。 Print:打印选中的窗口输出。 Print All:打印全部的窗口输出。 Print setup:显示打印选项。 Exit:断开连接并关闭界面。 Display:这个菜单可以显示可用的窗口列表,要显示一个窗口,就敲它的名字。 Window:这个菜单显示排列窗口的命令。 Help:这个菜单显示帮助命令。
2.4 ParameterControl 界面
2.4.1 主界面面板 2.4.1.1 概述 ParameterControl 界面用于管理模型参数的在线修改(模型已加载到目标机上),包括:在 SIMULINK 模块里的参数。变量在 MATLAB 工作空间的初始化。所有的参数都可以在不用重新编译模型的情况下改变,当改变如控制器增益之类的参数时是很有用的。SIMULINK 参数显示在一个称作 Parameters tree 的参数树里;参数树的每一个分支代表了 SIMULINK 模块程序的一个层次,参数就是参数树的叶子。
以下是一个关于 SIMULINK 参数的描述。并解释如何修改这些参数。
图 20:Parameter Control 界面 2.4.1.2 参数 Model Path:当前模型的上位机路经。 Model Name:当前模型的名字。 Connect:当存在正在运行的仿真模型时,连接到此模型并显示 Active models 面板。 Disconnect:断开到当前仿真模型的连接,但你仍然可以稍后连接。 Number ofparameters:当前模型的参数总数。 Number of values:分配给参数的值的总数。参数的数目和值得数目可能会不同,参数可以是数值、向量、矩阵,一个参数可以有不止一个值。 Number of variables:SIMULINK 模型中总的 MATLAB 变量数目。 Number of indexed parameters:由 MATLAB 变量所指向的 SIMULINK 参数的总数。由于一个变量可以与一个或多个参数相联系,所以这个值等于或大于变量数。 Maximum Numberof parameters-- Set:设置可以被同时改变的参数最大数目,在实时模式中,这个功能可用来限制应用在参数修改中的过度计算时间,但当模型暂停运行时,不会检查这个最大值。 Load:从一个文件中加载参数值,并当系统检测到文件和模型参数不同时,就会打开一个参数对话框。 Save:把参数值保存到一个文件中。 Parameters table--Add:把一个从参数树中选中的参数添加到 Parameter Modification Table 中。 Parameters table-- Clear:从 Parameter Modification Table 中去掉一个选中的参数。 Parameters table-- Clear All:清除掉 Parameter Modification Table 中的全部参数。 Parameters table-- Edit:打开一个新模型,使你能够改变参数值。当改变非标量参数时会用到这个选项。
Parameters table-- Apply:应用在 ParameterModification Table 中所作的修改(值用红色显示)。 Variables table--Association:在 MATLAB 变量表中显示由以选变量所指向的参数列表。 Variables table-- Edit:打开一个新的界面,使你能够改变变量值,在改变非标量变量时可以用到这个选项。 Variables table– Apply:把在表格中对变量所做的全部修改应用到实时模型中。 View:改变参数界面的尺寸。 Close:关闭 ParameterControl 界面,并放弃所有没有应用的修改。 2.4.1.3 注释为了修改你的 SIMULINK 模型参数: 1.通过点击参数目录上参数的名字,选择你想用的参数。 2.点击 Add,把你想用的参数添加到 Parameter Modification Table 中去。 3.直接在表格中输入你的新值。如果参数是向量或矩阵的话,点击 Edit 看参数的所有值。 4.重复 1 到 3 以修改别的参数。 5.如果你设置完了你所要修改的全部参数,点击 SIMULINK-- Apply把所有你修改过的参数从表格中送入实时模型。参数会在所有的实时目标节点中同时修改。
2.4.2Load 界面
2.4.2.1 概述这部分描述如何解决参数文件和仿真参数之间的冲突。当模型的框图修改后而旧的参数加载时就可能发生冲突,这种情况下,就应该改变一些参数的名字或者删除它们。
图 21:Parameter Control ConflictsResolution 界面 2.4.2.2 参数 Modified parameters list:显示所有文件上与当前仿真值不同的参数列表。
Discard changes:从修改参数列表上清除以选的参数。这个参数的新值没有被送入仿真。 Estimatedparameters list:显示所有加载的参数(从文件),由于它们不能找到确切的匹配,当从列表上选择一个参数时,底下会显示系统所能找到的最接近的匹配。 Acceptestimation :接受估计的参数。如果参数值与仿真值不同,这个参数就会被添加到 ParameterModification Table 中。 Browseparameters:显示参数树用以选择一个新的估计参数。 Deleteparameters:从列表中清除参数并把它添加到删除参数列表中。 Deletedparameters list:显示一个在当前的仿真模型中不存在加载参数列表,并删除它们。 Apply changes:将新值应用到仿真模型。 Cancel:关闭界面而不应用任何修改。
2.5 Probe Control 界面
2.5.1 主界面面板 2.5.1.1 概述 Probe Control 界面使你能够把获取参数指定到每一个获取组中。同一个组中的信号有相同的特性,如:正在发送数据桢的大小,即可以用每个信号的采样数表达,也可以用时间单位表达。 decimationfactor 采样模式和 re-arming 延迟获取或传输被中断的情况下阻塞模式一个 write-to-file 选项,可以使仿真数据以“.mat”文件保存到目标节点中。
图 22:Probe Control 界面 2.5.1.2 参数 Connect:连接到获取参数需要改变的仿真模型上;如果有正在运行的模型,自动显示 Active Models 界面,使你能够从正在运行的模型中选择一个模型。 Disconnect:断开到当前模型的连接。 Group #:这些标签使你能够选择哪一个获取组的参数要改变。 More information:打开 group infos 界面,在哪里会显示关于获取组的额外信息。 Trigger bysignal (name, level, slope, delay):(在这个 RT-LAB 版本中无法使用)。 Write-to-file:把获取组的信号保存到目标节点的硬盘中,而不把它发送到主机的 WINDOWS NT 控制台,信号将保存在第四版的 MATFILE 中,使用 FileName 区域所提供的名字。 FileName:当选择 Write-to-file 选项时,获取信号被保存的文件名。 Variable Name:与保存在文件中的信号相联系的变量名。 Repetitive sampling:使你能够选择重复采样(自动)或非重复采样(手工)。如果你选择了非重复,重新配置按钮使你能够手工重新配置数据获取。 Rearming delay:这是在一桢的结束和下一桢的开始之间的延迟,这个参数仅用于重复采样。 Decimation factor:使你在一些计算步中跳过获取。当这个参数被设置成数字 n,在每次到第 n 个计算步时进行采样。
Number of samples per signal:根据每个信号的采样数,定义了信号一桢的长度,这些信号被接受后保存在一个缓存器里,以准备通过以太网连接(或别的传输设备)传输到控制台。例如:如果 n 是一组 m 个信号中每个信号的采样数,缓存器的尺寸值是 m*n,信号桢的长度值为 n,相应于 n 为周期直到最大的采样数。换句话说,这保证了在 n 个仿真步中没有数据丢失,默认值是最大值(1,200/模型/时间步/十进制/1000)。 Max number of samples persignal:定义了目前模型中,指定的获取组能够得到的最大采样数值,先于仿真设置这个值能够防止仿真时分配动态存储器(此过程可以降低实时性能和稳定性),这个最大值是一个组中所有信号的总数。例如:当为一个获取组取得四个信号,你可以指定每个信号的采样数直到这里所设定的数目。 Duration:定义了完成信号获取所持续的时间长度(以微秒计)。这个参数为定义一桢长度提供了另一个可能性,并连接到 Decimation factor 以及每个信号的采样数,使用如下公式: Duration=(Decimation facto)*(Number of samples per signal)*(基本计算步长)。 Sampling, Pause:使你能够中断信号获取和传输而不影响模型;模型持续运行;这个参数可用于重复采样。 Sampling, Continue:使你能够在暂停之后重新进行数据获取,这个参数用于重复采样。 Sampling, Rearm:使你能够重新手工设置系统获取。这个参数用于非重复采样。 Sampling, Apply to all:将当前的采样选项应用于全部的采样组中。 Console blocks on group:当数据获取不可得时,这个多选项函数(组 1 到 n,或没有模块)使你能够停止示波器块上信号显示设备(Simulink 示波器,LabVIEW 面板等等),但是由于在模块化模型中全部 Simulink 窗口都被冻结了,就会添加一个不要阻止选项以避免冻结全部 Simulink。在这个模式,当获取暂停时,就会显示出一个从没有可用数据参数时的输出中选择的值。 Output value when no data available:当选择了不要阻止选项时,这个参数使你能够在没有数据时选择一个输出值(0 或最后输出值)。 Set group control:允许多个用户连接到同一个模型上并控制参数获取。这个功能可以使每个用户选择获取组以便于他们控制参数,那些将随后连接到同一个模型上的用户能够在气虚的获取组中选择。 Modifications, Apply:用来使面板参数修改生效。 Modifications, Apply to all:把修改应用到全部获取组中。 Modifications, Cancel:使你能够取消对面板参数的修改。 Default:将所有的参数获取设置为他们的默认值。注释:请注意每个信号的采样数使你能够以 200 毫秒,即 5 赫兹进行仿真。 More information:打开 group infos 界面,在那里你能找到关于获取组的更多信息。 Signals:打开动态信号面板使你能够将信号添加到获取组中。 Close:关闭 Probe Control 界面。如果面板上的一个参数被修改而没有点击应用按钮使之生效,关闭面板不会使修改后的参数生效。
2.5.2 Group Control 界面
对于一个不止一个获取组的模型来说,当打开 ProbeControl 界面时就会显示出 Group Control 界面。当从 MainControl 界面上打开 ProbeControl 界面时,选择模型后,他就会自动连接到模型上。在其他情况下,你需要点击 Connect 以从正在运行的仿真模型列表上选择一个模型,把 ProbePanel 界面连接起来。在这个配置中,他从目标节点上接收一些重要的通告,诸如 System
Paused,System Reset,System Error 等等。
图 23:Group
Control 设置
2.5.3Group Information 界面
2.5.3.1 概述 Group Information 界面显示出了关于获取组的设置和配置的额外的信息。
图 24:Group Information 界面 2.5.3.2 参数 Subsystem Name:目标子系统的名字。 Logical Id:对应子系统的本地 ID:由 RT-LAB 分配。 Nb Signals:发送到组中相应子系统的信号数。 Target Node:相应于所分配子系统的目标节点名。 File Name:写入文件时,由目标机上对应子系统保存文件时所用的名字。 Variable name:如果允许写入文件,与文件相联系的变量名。 2.5.3.3 注释在第一次允许 write-to-file 之前,FileName 和 Variable Name 区是空的。即使组没有设置 write-to-file,FileName 和 Variable Name 也可能包含有效的变量名。这是由于这个界面使用了从 ProbeControl 界面上设置了为组使用的变量名。从 ProbeControl 界面上禁止 write-to-file 选项不会清除这些区域。由于不止一个子系统可能会运行于同一个目标节点上,RT-LAB 添加组的数目,子系统名,以
及子系统 ID 到由用户从 ProbeControl 界面上所指定的文件名。这是一个避免目标节点上文件名冲突的一个简单办法。 2.5.4 Dynamic Signals 界面 2..5.4.1 概述 Dynamic Signals 界面是一个图形化的界面,以管理动态信号。动态信号在模型内部可得到,一个信号是一个模块的端口输出。为了显示出来,任何信号都可以添加到获取组中。
2.5.4.2 参数 Current model systems andsignal set:信号树包含三组信号:动态信号:模型中的所有信号。控制信号:由控制台发出(SC-subsystem)的信号,发送到计算子系统(SM- 或 SS-)获取信号:从计算子系统中发往控制台的信号。 Dynamic signalslist:添加到当前获取组中的动态信号列表。 Add:把在信号树中选中的动态信号添加到当前获取组中。 Signal value – Get:获得信号树中被选信号的值。 Signal value - Set::设置控制信号的值。 Max number of dynamic signals:仿真运行时,可以添加到获取组中的最大信号数量。 Remove:从动态信号列表上清除一个信号. Remove All:清除动态信号列表上的全部信号。 Save:保存当前列表。 Load:加载一个已保存的列表。 2.5.4.3 注释
为了访问模型中的信号,选项“Reuse storage signals”在模型仿真参数中设置为关闭。
2.6 Snapshot
2.6.1 主界面面板 2.6.1.1 概述 Snapshot 功能有两个主要用途:在你的仿真中存储一系列值。在指定的时刻产生一个仿真状态的报告。 Snapshot 包含你实时模型中所有的参数、信号、状态值等等。实时仿真运行时,用户可以对模型进行快照,如果需要的话,可以进行储存。例如,当仿真必须进行两天才能达到给定状态,在进行两天后,就可以对模型进行快照,仿真再次运行时,快照的值可以恢复,节省了两天的仿真。 Snapshot 模块可以在模型中使用。 Snapshot Decoder 使你能够分析快照,检查模型的参数、信号、状态等等。在模型出错前进行快照能够对模型构造中的问题提供有用的信息。
图 25:Snapshot 控制 2.6.1.2 参数 Snapshotfilename:快照文件的名字。有或者没有扩展名“.snap” 。这并不是快照存储的最终名字,整个系统的快照被分成很多个文件以对应于每个节点。子系统的名字会被添加到每个子系统生成的文件名字中。如果每个目标节点都有本地硬盘驱动器的话,那么每个快照文件都必须在本地保存。快照文件名必须包含到目标节点的路径。当目标节点的系统是 QNX6.x 时,快照文件名对字母的大小写是很敏感的。 Index:这个索引只用来恢复快照。当系统有多个快照时,用来指定要读取哪个快照文件。 Overwrite:覆盖一个已有的快照文件或者为每个快照创造一个新的文件。如果你选择覆盖,一个新的快照文件覆盖到上次所创造的快照文件。如果你选择为每个快照文件创造一个新的文件,附加值就会添加到文件名上。
Comments:进行快照时添加到快照文件上的注释,当使用 Snapshot Decoder界面时会显示出这些注释。 Take Snapshot:对正在运行的模型进行快照,你可以在模型 Pause 或者 Execution 时进行快照。对每个目标节点都生成独立的文件。 Restore Snapshot:在每个目标节点上恢复快照值。当恢复快照时,使用 Index Edit 指定你想要恢复的文件的 Index(参考 Overwrite)。快照只有在仿真暂停时才能恢复。 Close:关闭 Snapshot 控制面板。
2.6.2 Snapshot Decoder 界面
2.6.2.1 概述 Snapshot Decoder 可以用来创造文件,这个文件包含模型名、计算步、以及参数值等信息。注释:对应于每个 MATLAB 版本都有一个 Snapshot Decoder,在 RT-LAB 路径\common\bin 下,可以找到不同的程序。
图 26:Snapshot 文件选择 2.6.2.2 参数 Open:指定进行快照的模型。 Target platform:指定进行快照的目标平台。 Availablesnapshot files:对已选择的模型和目标平台列出所有可用的快照文件。 Index: 当存在多个 snapshot 文件时使用。 Open file aftergeneration:一旦创建之后打开报告文件。 View:观看报告文件。 Choose viewer:选择用来打开报告文件的应用程序。 Generate:产生 ASCII 码格式的报告文件。 Close:关闭快照解码器面板。 2.6.2.3 产生报告 1.在命令站里将为每个实时节点而产生的快照文件(.snap)传输到目标模型路径。使用 FTP 命令来以二进制码传输文件。你必须选择基于所选目标平台的目标路径:对于 QNX6.x,选择 OpNTOtarget 对于 WINDOWS,选择 OpNTtarget 对于 RedHawk,选择 opREDHAWKtarget 2.在 RT-LAB 目录下的 common\bin 子目录下启动OpalDecodeSnapshot 程序。 3.点击 Open 以指定快照是对哪个模型进行的。快照文件必须已经传输模型的目标路径。 4.在快照文件列表框中显示出了可用的快照文件,输入你要求的索引号。例如, 如果你的快照文件名字是 sys3vr1-sm-master-2,你应该键入 sys3vr1 文件名,以及索引号 2。
5.检查 Open when generated 选择框,当报告产生时自动打开报告文件。点击产生。一个以 “.snapshot”为扩展名的报告文件就产生了,并保存在模型目录里。 2.6.3 为快照声明用户 S-Function 2.6.3.1 描述当进行了快照时,为了保存包含在 S-Function 中的数据,你必须在 RT-LAB 中声明 S-Funtion 了,你可以使用 OpalSnapshotRegister 功能做这个。这个功能使你能够在进行快照时保存你的数据,并当快照恢复时重新加载。 2.6.3.2 启动 OpalSnapshotregisrer 功能 1.包含 model-main.h 头文件: #include “model-main.h” 在 windows 环境下,这个文件加载到
2.7 Monitoring Viewer 界面
2.7.1 主界面面板 2.7.1.1 概述 Monitoring Viewer 界面显示关于模型的运行信息。监视你的模型以最优化你的计算算法。这个面板使你能够把结果保存到别的出口,如 Excel 软件。参看 Monitoring models 以获取更多信息。
图 27:Monitoring Viewer 界面 2.7.1.2 参数 Model selection- Path:显示模型路径。 Model selection - Name:显示模型名。 Model selection - Connect:使你能够连接到任何以打开的模型上,如果有任何正在运行的模型,显示 Active Models 界面。 Model selection - Disconnect:断开当前仿真模型的连接,但允许你稍后再次连接。 Nb. per signal:将要被监视的模型的运行步数。 Timestep:已显示数据的模型步长。 Save:把获取步的监视信息保存到 ASCII 码文件中。这个文件可以被 Excel 使用。
建立模型
这章描述 RT-LAB 的基础,提供关于仿真过程的总的概览,从设计并使模型生效,到使用方框图和 I/O 设备,到运行仿真并使用控制台作为图形化的界面。
3.1 为 RT-LAB 建造仿真模型
3.1.1 命名规则在 RT-LAB 里,所有的顶层子系统都要被命名含有一个前缀以区分它们的功能。这些前缀是: SC- :控制台子系统。控制台子系统是运行在上位机上的子系统,使你能够和系统互动。他包含所有与获取和监视数据有关的仿真模块(示波器,手动开关,到工作空间,打印块等等),你所需要的模块,无论是在你实时模型进行时还是之后,都必须包含在控制台子系统中,控制台和别的节点子系统异步运行,一个模型中只能有一个控制台。
图 28:控制台子系统的仿真块 SM-:主计算子系统。一个模型里只能有一个主计算子系统,它包含模型的计算元素。 SS-:次计算子系统。当多节点之间分布式处理时,一个模型里可以有多个次计算子系统。它包含模型的计算元素。这些顶层子系统直接形成了逻辑节点图,SC 子系统是上位机而 SM 子系统是目标机。为了分布式计算,SS 子系统允许你把额外的计算分配到别的目标机上去,目标机的每一个 CPU(物理节点)都被认为是一个逻辑节点。 1 目标机:只有一个 SM 子系统。 2 目标机:一个 SM 和一个 SS 子系统。 1 目标机(2CPU):一个 SM 和一个 SS 子系统。 2 目标机(每个都是双 CPU):一个 SM 和 3 个 SS 子系统为了使用 RT-LAB 实现 SystemBuild,模型必须包含一个顶级的超级模块,在模型的超级模块层中,所有的 SC_ ,SM_和 SC_ 超级模块应该被锁到同一个水平在这个顶级超级模块之下。为了使用 RT-LAB 实现 SystemBuild,,Interactive Animation (IA)块不应该被直接包含在 SC 中,用户应该在 SC 中的超级模块中收集它们。 3.1.2 本地仿真模型 RT-LAB 支持任何 Simulink 模型,不需要修改模型。然而,用 RT-LAB 打开模型前,模型必须与 Real-Time Workshop (RTW)相兼容:使用固定步长解算器。使用设置块与 RTW 兼容。在兼容过程中,模型会自动分割成计算子模型(不会对原始模型进行修改)和一个有一个获取组的控制台子模型。稍后,信号会在模型运行时动态添加。与模型相互作用的完成会把模型参数设置成为在空中。 3.1.3 单个子系统模型你可能想修改你的模型以使之与 RT-LAB 兼容。当你想把一些信号设置成为总是从 SM 到 SC 子系统,并同时定义一些控制信号时会有用处。参考下一节来学习如何建立一个 RT-LAB 模型。
3.2 为 RT-LAB 创建一个分布式模型
任何 Simulink 或 SystemBuild 模型都可以在 RT-LAB 上运行,但必须作一些修改才能把它分布到模型上以及传输到仿真环境中。复杂模型的分布式计算的成功在于把模型分割成子系统并同步并行运行。在整个设计过程中都要记住这个。
为建立一个分布式模型,用户必须修改图形程序(.mdl 或者.sbd 文件),可以通过重新把模型归类成计算子系统,插入 OpComm 通讯模块,考虑步长计算并交换状态变量或者使用延迟模块,这每个话题都将在下面讲到。在这些步骤完成后,RT-LAB 与重新归类文件一起开始编译过程,分割模型并产生编译码,然后你设置运行环境,这个将在下面讲到,此后指向将要执行的仿真模型。这一章描述通过修改你的 Simulink 或 SystemBuild 图形程序而建立 RT-LAB 模型的必要步骤,以保证能够恰当分割模型以便于分布运行并最大化其性能。在这个版本中,不支持分布 Systembuild,模型。 3.2.1RTdemo2 例子这个模型包括:执行器:所要控制的物理系统。控制器:接受从传感器上发来的信号的设备,并基于控制算法,将控制信号发送到激励器使执行器进行必要行为。人机界面:为人们提供了与系统的接口这种逻辑分割将会用来创造顶级子系统
图 29:rtdemo2 模型 3.2.1.1 OpComm 通讯块模型被分割成 Console 和计算子模型 computationsubsystems 后,必须加入 OpComm 模块。这是简单的过滤模块,在把输入信号发送到给定子系统前,OpComm 起到了暂时阻止了所有流入信号的作用。 OpComm 模块服务于几个目的:当一个仿真模型在一个 RT-LAB 环境下运行,所有主要的子系统之间的连接(SC_ ,SM_, SS_)都被硬件通讯连接代替,为了在实时目标节点上通讯(SM_,SS_)RT-LAB 用户使用指定的实时连接(IEEE-1394);为了在控制台和实时节点之间通讯,RT-LAB 使用 TCP/IP。由于这些节点之间的通讯连接,仿真运行可能在 Similink 和 SystemBuild 中和与在 RT-LAB 中,在 RT-LAB 中的运行与在 simulink 和 systembuild 中的运行不一致。在 RT-LAB 中,一个计算子系统在开始计算前一直等待只到接收完所有信号。另一方面,在 Simulink 和 SystemBuild 中,
只要获取一个信号就开始运算。作为通过标识,在得到所有输入后才得到输出,OpComm 模块在 RT-LAB 下运行时仿效系统的行为。系统设计时记住这个。如果你接收到一个信息显示插入的 OpComm 模块创造一个算法循环,这意味着你的模型不是实时运行,因为产生了死锁。为纠正这个问题,包含稳定的变量,参看最大化并行通讯的全部内容。 OpComm 模块为 RT-LAB 提供了从一个子系发送到另一个子系统的信号的尺寸和类型的信息。 OpComm 模块插入到控制台子系统中使你能够选择你想用来从模型上获取数据的数据获取组并指定获取参数(获取参数将在下面部分介绍,分别 Simulink 和 SystemBuild)。 RT-LAB 用 OpComm 模块来保证并保存通讯设置信息。这既包括通讯站和命令节点之间的通讯,也包括节点之间的通讯。所有到顶层子系统的输入必须首先通过 OpComm 然后才能使用。
图 30 :OpComm 模块 3.2.1.2 OpComm 放置规则在计算子系统中(SM 和 SS)用一个 opcomm 从别的子系统上接收一个实时同步信号。用一个 opComm 从 console subsystem 上接收异步信号。在控制站子系统(SC 子系统):可插入一个或更多 OpComm 模块用于从计算节点上的接收信号。多个 OpComm 块定义了唯一的用“获取组”自己的获取参数“获取组” 。 3.2.1.3 SM 子系统中的 OpComm 模块插入一个 OpComm 模块来从 SC 子系统中接收信号(异步网络)。插入一个 OpComm 模块来接受别的实时子系统中的信号(这种情况下,从 SS 上)。
图 31:SM 子系统和与之相联系的 OpComm 掩模 3.2.1.4 SS 子系统中的 OpComm 模块由于数据仅仅来自于 SM 子系统,只有一个 OpComm 块插入了被控子系统。
图 32:SS 子系统以及向联系的 OpComm 掩模 3.2.1.5 SC 子系统中的 OpComm 模块对于控制台,1 个或者更多 OpComm 取决于你想要多少获取组。获取组使你能够定义不同的优先级和获取参数叨不同的信号组。
图 33:SC 子系统和相应的 OpComm 块由于 SC(控制台)子系统和主计算子系统(SM 和 SS)是异步运行,应用以下限制:实时模型应用中,控制台子系统不能包含计算。来自于同一个信号获取组(OpComm)的信号才能相互兼容。来自不同信号获取组的信号之间不同步。 3.2.2 最大化并行通讯为最大化并行通讯,输出数据必须以尽可能大的效率在网络节点之间交换。数据中发送的命令可以被优先,这样一来,主要计算不用等待网络中其它节点的输出,这个可以通过 delay 模块来完成。 3.2.2.1 状态变量一个状态可以被定义为一个输出(信号),它只能由以前的输入和输出来得到常见的引入状态的模块样例是“integrator”和“memory”模块。 “gain”模块不产生状态,因为他的某一步输出取决于它的同一步输入。 3.2.2.2 分布的样例完全并行执行
每一步,RT-LAB 都完成如下工作: 1.ss-subsystem 发送到 sm-subsystem。 2.Sm-subsystem 发送到 ss-subsystem。 3.计算两个子系统。
串行执行(最坏的情况下)
每一步,RT-LAB 都做如下工作: 1.ss-subsystem 发送到 sm-subsystem。 2.计算 sm-subsystem 3.Sm-subsystem 发送到 ss-subsystem。 4.计算 ss-subsystem。部分并行运算(中间情况)
每一步,RT-LAB 都做如下工作: 1.ss-subsystem 发送到 sm-subsystem。 2.计算 sm-subsystem 中的增益。 3.Sm-subsystem 发送到 ss-subsystem。 4.计算 ss-subsystem 和剩余的 sm-subsystem。死锁状态:
RT-LAB 处于死锁状态! 1.sm-subsystem 等待 ss-subsystem。 2.ss-subsystem 等待 sm-subsystem。 3.2.2.3 优先数据传输为了最大化并行运行,你必须分割模型以便于在计算子系统间仅仅交换优先信号(如状态)。不幸的是,在一些情况下,不是总能用这种方法分割模型的。你可以通过使用 delay 模块转变直通模块以使信号优先。有目的放置 delay 模块能够避免代数环和最大化并行运行。延时模块必须小心处理,因为它可以改变模型的动态。应该比较插入 delay 模块之前和之后的结果,并确保模块的影响在可接受的范围之内。
当数据在 sm_subsystem 和 ss_subsystem 中交换时,他们自动在计算步长开始时发送(如果可能的话)。所以不需要额外指定优先发送,用户必须为输入相关的变量使用延时模块或者使用交换状态变量。当数据在 SS_subsystem 之间相互交换时,他们不在每一步的开始时自动发送,为在仿真步长开始交换所有可用的数据并在网络节点之间最大化通讯,必须声明变量的优先级以使 RT-LAB 调度程序会最高效发送输出。在仿真中,这个通过添加“_s”完成, “s”代表发送开始。添加这个符号会指示 RT-LAB 通过发送由-s 识别的输出数据来开始计算步长。
图 34:把“-s”添加到输出把“-s”添加到输出标签的尾部并不意味着与输入相关的数据会自动成为状态变量,并准备在步的开始发送。无论输出是和输入相关还是状态变量与其在系统中的属性有关,所以改变变量名不会影响它的行为。无论什么时候与输入相关的数据以优先级发送,都必须使用延迟模块。
运行模型
这章描述 RT-LAB 支持的仿真类型,解释如何编译和运行模型。
4.1 目标平台
RT-LAB 支持三种不同的目标平台: Windows2000/XP:纯仿真或者非实时运行。 QNX6.x:纯仿真或者实时运行。 RedHawklinux:纯仿真或者实时运行。
4.2 仿真模型
4.2.1 标准模型仿真:自由运行,尽可能在目标机上快速。在这种模式下,不是同步的。分布式仿真下的目标节点和通讯联系是同步的。数据交换取决于模型的数据流。低优先级仿真(只对目标节点为 win32):和仿真一样,但是计算子模型以低优先级运算,当仿真在命令站上运行时这很有用,它能让 CPU 相应其它应用。软件同步:模型实时运行。在这种模式下,模型与 RTOS 计时器同步。仿真运算时,只有一个计算节点是同步的。别的子系统和通讯连接同步。数据交换取决于模型的数据流。硬件同步:模型实时运行,这种模式下,模型与外部硬件定时器同步,需要在模型中插入一个特殊的模块以指定和配置外部时钟的位置。交换的数据取决于数据流。
4.2.2 超高性能模式(XHP) 4.2.2.1 描述 XHP 是一个实时操作系统禁止中断的一种方法。这在每个子系统(即每个 CPU)上都可以完成。不允许中断中断阻止处理开关,这清除了同一时间缝隙内额外计算的潜在时间。 XHP 在实时应用中,对一个给定的样例时间,引起过度运行(超过它们允许计算时间步)而不在 RT-LAB 上以标准模式运行。在 XHP 模式下,模型在空循环下等待他下一个模型步长,在那时下一个模型步长再被计算。在这个模式下,我们使用 CPU 计算器作为我们的时间参考,由于这个计算器以 CPU 的频率操作,提供了非常高的精度,即便是步长也在微秒的范围之内,由于计算器依于 CPU 并从 CPU 周期读取其值,这个操作几乎没有延迟。 4.2.2.2 QNX 目标上 XHP 模式运行所带来的问题在 QNX 目标机上,XHP 在计算机上被激活。所有在这个目标机上的子系统就都会以 XHP 运行。这意味着可以在这个目标平台上运行的子系统的数目取决于 CPU 的数目,这是因为每一个子系统都会被分配到指定的 CPU 上,由于在使用 XHP 模式时计算子系统是在处理器上运行的唯一的程序,可能会由此引入一些限制。XHP 模式下,计算节点上的后台任务可能不会被执行。 RedHawk Linux 目标平台上 XHP 模式运行所引入的一些问题在 RedHawk Linux 平台上,在每个 CPU 上都允许 XHP,这意味着被分配到 XHP 子系统上的 CPU 不能被别的程序或者操作系统所使用。如果运行在 XHP 模式上的子系统的数目在 SMP 目标上低于 CPU 上的数目,操作系统不能被禁止而且操作系统提供的所有的功能都可以被使用。在这种情况下,以下篇章介绍在 XHP 模式下不能应用的一些限制。如果运行 XHP 的子系统的数目和 CPU 数目相等,目标平台会被设置成“完全”XHP 模式,而且所有的限制都能应用。 4.2.2.3 XHP 模式下的限制和解决办法 4.2.2.3.1 从命令站上获取和控制模型由于网卡驱动器在 XHP 模式下不能使用,这个计算节点和命令站上的通讯是不能使用的。只有使用火线(IEEE-1394)或者共享存储器的内部节点之间的通讯可以使用,这意味着 XHP 模式运行时你想获取的信号会被传送到别的非 XHP 模式计算节点,然后才把信号转发到命令站上,如果你没有第二个节点的话,你可以把模型设置为在固定的空隙自动暂停(使用 RT-LAB “暂停” , “时钟”和一些逻辑块),转回正常的模式并把信号发送到命令站上。确保你的获取窗和你的运行空隙尺寸相一致。注意这只有在能够周期性中断的模型中使用,因为这个,这几乎不是一个可行的解决办法。 4.2.2.3.2 使用 UDP/IP 通讯分布式计算 XHP 模式下不能使用网卡驱动器,这用这个卡的通讯协议也不能使用。你需要使用(OHC1)火线卡或者多处理器共享存储器来进行通讯。 4.2.2.3.3 多率模型不能在“真”多率下运行为提高性能, XHP 模式下的用来维持多路的能力不能使用,不能在多速率模式下(真多速率) . 下运行多速率模型,多速率系统在单任务模式下仍然能够运行,但这又许多缺点。参看“true” 对“pseudo”多速率以获取更多信息或者参看 Real-Time User’sGuide。 4.2.2.3.4 参数调谐正如获取,XHP 模式下参数修改(通过 RT-LAB 的 Parameter Control)不可能为参数或者子系统使用,如果你想能够修改一些参数,他们必须被重新定位到非 XHP 节点上并且 XHP 节点子系统在图表水平或者在模型暂停时。
4.2.2.3.5 快照(Snapshot)或动态信号获取(dynamic signal acquisition) 同样的道理, XHP 模式运行时不能进行快照,也不能选择动态信号。然而你可以暂停模型来使用这些功能然后继续。 4.2.2.3.6 一些 I/O 接口不可用由于运行在 XHP 模式下,系统中断和多任务不能使用,任何需要这些功能的 I/O 板卡都不能使用。这些模块主要限制了一些串口(需要异步处理)以及离散事件检测/发生单元(需要中断)。 4.2.2.4 使用 XHP 模式 XHP 模式只能应用于子系统级。为了激活 XHP 模式,你必须在 MainControl 下 Assign node 对话框中选择 XHP 框。在 QNX 目标上,如果非 XHP 子系统和 XHP 子系统分配到同一个物理上的计算机,那么这个计算机就会被设置成为 XHP 模式。子系统运行在 XHP 模式下不能使用以太网进行通信。只能使用 OCH1(IEEE-1394)、信号线或者无限板与别的子系统进行通讯,连接。推荐只在 slave subsystems中使用 XHP 模式,这样一来,主控机可以继续和运行 XHP 模式的被控节点一级命令站通过以太网(或别的 TCP/IP 传输口)通讯(主计算机)。在有运行于 XHP 模式下的子系统的一个有趣的点是,一旦你允许 QNX 的多处理器,它使你能够在 QNX 上使用多处理器计算机。 4.通讯类型
4.3 连接类型
同一个物理节点上的两个通讯子系统(不管他们的逻辑节点号)使用共享存储器都能交换实时信号。如果计算子系统(SM 或者 SS)在不同的物理节点上,你必须选择使用哪个实时网络,既可以是 UDP/IP(慢速)也可以是火线(IEEE1394),信号线(OPAL-RTreal-time link)或者无限板(只对 RedHawkLinux 目标机)。实时连接可以使用主控制面板来配置,在配置/高级选择。 4.3.1 UDP/IP 这个连接需要目标机上有以太网卡。这是个慢速连接不能用作实时仿真。 4.3.2 OCHI 这个连接需要目标机上有 OCHI 板卡。RT-LAB 支持 OCHI400(1394a)和 OCHI800(1394b)。卡的类型能被自动监测到。一个目标机上要有一个 OCHI 板。也会添加额外的卡以扩展带宽,(计算子系统每个目标使用两个 OCHI 交换数据)或者允许多个子系统和别的子系统通讯(当有多个子系统在同一个节点时,只有一个子系统能够访问相关的 OCHI 板卡)。 4.3.3 信号线这个连接由 OPAL-RL 开发,这个连接需要目标机上有 OP5000 系列卡,它只支持两个计算节点之间的通讯(1SM 和 1SS)。 4.3.4 无限带这个连接需要目标机上有 INFINIBAND 板,当节点之间需要大带宽的时候应该使用这个连接。它只能在 Redhawk Linux 上使用。两个计算节点通过 INFINIBAND 板进行点对点的连接。当分布式仿真系统中超过两个计算节点时,需要有 INFINIBAND 开关来连接所有目标机。
4.4 运行步
4.4.1 编译 1.选择目标平台。
2.开始编译,这个是自动过程,不需要用户干预,这是编译模型时的步骤列表:分割:把原始模型分割成许多顶层子模型。产生代码:因为 RT-LAB 对具体的目标操作系统使用一系列具体的模版,对每一个运算子模型(SM 和 SS),调用实时工作台或者自动编码器产生 C 代码。传输到 RTOS:通过 FTP 协议把新产生的一个 C 文件传输到一个计算节点上(称作开发或编译节点)。编译:对每一个计算子系统(SM 或 SS),编译器将 C 代码编译、链接成为可为 RT-LAB 执行的文件。回传可执行文件:通过 FTP 协议将可执行文件回传。这使得 RT-LAB 可以在不同的节点上加载子系统。 4.4.2 执行 1.把子系统分派到物理节点上,如果有不止一个处理器的话(逻辑节点),你可以分配不止一个子系统到同一个物理节点上,那时,加载会自动在处理器之间分布。如果只有一个处理器的话,RT-LAB 就会依靠实时操作系统来完成任务在子系统处理之间的转换。这几乎等同于没有分布模型。 2.如果你想使用基于原始模型的 SC 子系统的用户接口,就选择“使用模型控制台” 。 3.选择仿真模型。 4.配置通讯类型(可选)。 5.在计算节点上加载子系统。可执行文件(每个计算子系统一个)都通过 FTP 协议传输到他们所分配的节点上。那时,加载子系统并准备运行。请注意,为确保完整性,默认一个目标机上只允许一个模型(只对 QNX 和 Redhawk)。在你想能够同时运行多个模型的地方,可以通过在目标机上创造一个文件:/usr/opalrt/multimode 来禁用这个功能。 6.运行模型仿真开始了,RT-LAB 所产生的控制台显示回传的数据。注意这不是原始模型,仅仅是其中的 SC 部分。你同样可以通过我们的 API 替代创造自己的 UI。 7.在这点上,你可以修改参数,把数据记录到文件。 8.仿真完成时,还原模型。也可以通过插入停止模块让模型自己还原。RT-LAB 自动把所有产生的文件传输到命令站上,以备以后使用。
4.5 附加文件
一些仿真需要附加文件来编译和运行模型。参考 22 页文件和命令标签看如何设置新文件。通常要被编译的头文件和源文件在编译时被转变了。在运行时要使用的数据文件通常在加载模型是被转变。
4.6 用户脚本文件
由于为运行仿真可能会需要很多不同的配置,RT-LAB 支持在编译和运行模型时调用脚本,脚本可由 Python 来创建,可以对一个节点是全局的,也可以对子系统是本地的,访问命令站或目标在编译步长和加载/复位步时都可以使用。此外,通过 RT-LAB 显示面板可以看到输出脚本。以下表格列出了可用的脚本:表格 2:可以使用的脚本脚本 host_preseparate.py 步编译时,分割模型前,这个脚本可以由命令站调用。
host_postgenerate.py target_precompile.py host_postcompile.py host_preload.pytarget_preload.py target_postreset.py host_postreset.py
编译时,模型产生 C 代码之后,这个脚本可由命令站调用。编译时,编译模型之前由目标机调用。编译结束时,有命令站调用。运行时,加载模型之前,由命令站调用。运行时,运行模型之前由目标机调用。运行时,模型复位之后,由目标机调用。运行时,模型复位之后,由命令站调用。这个脚本可以用来在模型运行后作一些分析
4.6.1 使用本地用户脚本为了运行本地用户脚本(只对这个模型),在命令站的模型路径上,创造了一些你想要订制的相应于每一步的文件。如果想执行的话,文件会被自动传输到目标机上。不同的步可能会创造很多用户脚本,为了禁用脚本,重新给文件命名。 4.6.2 使用全局用户脚本为了在命令站上或者目标机上在模型之间共享脚本,同样的 Python 脚本在 RTLAB_ROOT\common\python\rtlab\global.下,为创造全局运行的脚本可以修改这些文件。记住这些脚本会应用于每个模型,需要小心修改。
4.7 调试
4.7.1 在目标机上安装调试器 4.7.1.1QNX6.x 参考 RT-LABRT-LAB Installation Guide 来安装 DDD 包。一旦 DDD 调试器被安装,验证它在正常运行: 1.在目标机上启动 Photon 并把它用 root 命令登陆(如果它还没有完成)/ 2.打开一个终端。 3.键入“ddd”命令。DDD 就会在屏幕上出现。 4.7.1.2RedHawk DDD 调试器和操作系统一起被安装,不需要安装别的了。如果你想使用 NightView 来调试你的模型,就从 Concurrent Computer 公司按装 Nightstar Suite 4.7.1.3Windows 可以使用微软的 Visual Studio6 来调试你的模型。由于在 Windows 目标平台上需要 MS VisualStudio 编译模型,不需要再安装调试器。 4.7.2 设置 RT-LAB 配置 1.在 RT-LABMainControl.上打开你想要调试的模型。 2.在 Configuration->General 中不要选择“use global settings” ,选择“use extended timeout” 以及“Compile in debug mode” 。不要选择“enable watch”选项框。
3.编译模型 4.配置在那里显示调试器,在Configuration->User Variables 中定义了以下变量: QNX6.x 目标:
?LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/X11R6/lib:/usr/X11R6/lib ?DISPLAY=127.0.0.1:0
RedHawk 目标
?DISPLAY=:0.0
5
在 Configuration->Advanced->Files & Commands->Debug& Command Line Templates 下选择你想要调试的子系统或者调试全部子系统。
4.7.3 调试模型 4.7.3.1 在目标机上本地调试 4.7.3.1.1QNX6.x 调试一个模型: 1.在目标机上启动 Photon(如果没有完成)用 root 命令登陆。 2.加载模型。 3.打开你想要调试的源文件并插入中断点(如果有的话)。例如,如果你想调试“Rtdemo1” 的 mdlStart(Simulink),来到 File->Open source...选择 rtdemo1_1_sm_computation.c,点击打开按钮。寻找 MdlStart 函数,把指针放到第一行然后添加中断点(在工具条上点击中断按钮),就会插入一个中断点,当模型将要执行时,运行就会在这个中断点停止。 4.DDD 调试器应该在目标终端显示器上打开。来到菜单 Program->Runagain。 5.来到菜单 Program->Continue.。 4.7.3.1.2RedHawk 默认情况下,用 NightView 调试器来调试模型,参考 NightStart documentation 学习如果使用它。如果你想使用 DDD,编辑 ini 文件
[General_REDHAWK] DEBUGGER=ddd 为调试模型: 1.在目标机上启动图形用户界面(如果它没有完成)并用过 root 命令登入。 2.加载模型。 3.打开你想要调试的源文件并掺入中断点,如果有的话。例如(DDD),如果你想要调试 “Rtdemo1”模型的 mdlStart(Simulink),来到 File->Open source...选择 rtdemo1_1_sm_computation.c。并点击打开按钮。原文件就会打开,寻找 MdlStart 函数,把指针放到第一行然后添加中断点(在工具条上点击中断按钮),就会插入一个中断点,当模型将要执行时,运行就会在这个中断点停止。 4.DDD 调试器应该在目标终端显示器上打开。来到 Program->Runagain。 4.7.3.1.3Windows 1.加载本地模型。 2.Model argument 被复制到剪切板上了。为了运行调试,这些谈论会被稍候使用。点击 OK
3
打开 MS Visual Studio 打开并创建一个新项目,点击 YES。
4. 在下一屏,点击 OK。
5.在下一屏点击保存。
6. 来到 Project->settings
7. 打开你想要调试的源文件。点击 F5 来启动调试器。 4.7.3.2.1QNX6.x 或 RedHawk 为了远程调试,需要一个叫做“X server”的应用程序,这个人工解释如何使用 cygwin(最流行的一个)作为 X server。 1.在 http://www.cygwin.com 下载并安装 Cygwin(确保选上了 Xfree86 包)。 2.启动 Cygwin。 3。启动 Xserver:XWin -screen 0 1024 768 -emulate3buttons & 4.设置显示:DISPLAY=
6. 允许远程访问:xhost+ 7. 在篇幅 62 页,设置 RT-LAB 配置,用DISPLAY=
获取和观看数据
这章讨论关于获取和观看数据相关方面,包括获取组合它们的参数。
5.1 获取组
RT-LAB 允许从实时目标节点群里获取信号。由 TCP/IP 与大多数实时系统比较起来比较慢, RT-LAB 使你能够设置不同的组。每一组都包含很多信号,包括每一桢接受的数据, decimation factor 等等,这些参数可以为每个信号分别定义。例如:对于一个一微米步长的系统,用户想要获取一个信号变化缓慢的数据值,每 100 步左右。通过在触发模块里定义状态的参数,一旦指定状况被满足,信号同样可以被获取,如以下所述。由控制台(SC 子系统)所接受的信号可以被分为 24 组,信号的获取组由 OpComm 通讯块在信号传递过程中指定。 5.1.1 参数获取参数获取由既定获取组中包含的全部信号所共享,这些参数通过探索控制面板 Probe Control Panel 上的指定,在有合适的获取组数的标签编号。关于如何控制获取数据参数的细节可以参考 Probe ControlPanel。 5.1.2 触发获取默认情况下,每个获取组总是被触发的,意味着一个新的数据包当先前的数据包发送时就填满了。然而,有时候你只想在某些状态发生时接收数据。因为此,OP 触发器模块可以被插到包含获取组信号的子系统中。使你能够只从仿真指定的部分获取信号,想要知道 OpTrigger 的完全细节,请参考 online help。 5.1.3 用 OpWriteFile 纪录数据为获取任何既定信号的全部数据,使用 OpWriteFile 模块。用这个模块存储的数据被保存在实时节点的硬盘上,模型复位时,数据文件被自动传输到命令站上。有时候,在快速采样仿真时,丢失获取数据是如此重要以至于无法知道实时模型发生了什么。仿真库中的 ToFile 模块不能被实时仿真使用,这是因为它没有缓存系统。在实时前后联系中使用这个模块会极大地增加实时仿真的有效步长。实时写入文件模块(OpWriteFile)可以被插入计算子系统。这个模块可以使数据以 MATFILE 格式保存到实时节点的硬盘上,产生的 MATFILE(.mat 文件)能够被传输到命令站并被用 MATLAB 或 Xmath 的 mathscript 文件进行分析,(
仿真模块有一个输入:the signals to be saved。你可用通过使用向量作为模块输入来保存多种信号。在 SystemBuild 里,OpWriteFile 模块本该有像要纪录的信号一样多的输入。每一个 OpWriteFile 模块都必须和一个获取组数联系在一起。再者,写入文件模块被看成外部获取组,一个 OpRtrigger 模块用来当特定的状况发生时写入数据。更多信息关于 OpWriteFile 及其参数请参看再在线帮助。
5.2 理解数据接收
5.2.1 控制台和目标节点之间的通讯 Console 通过以太网和每个计算节点相连接,由于这种类型的网络比火线慢很多,并且由于命令站非常耗资源,命令站可能不会接收和显示所有数据,因此需要选择输入信号。经常,数据每 2、3、5 个计算步长读一次:这就减轻了对 Console 的负担。为加速传输处理,目标节点把一系列数据发送到网络上,而不是每个数据项目发送一组。每个目标节点包含一个缓存器,在那里从很多个信号中收集数据以便传输到 Console。只有当缓存器达到在 Probe Control 中指定的水平时,目标节点才会发送数据。缓存器中组成一桢的所有数据代表了一个特定的信号,如果你有三个信号并想以每 5000 值传输数据,缓存器包含 15000 个采样,或者三桢(每个 5000 值)。由于命令站在某个特定的时间接收及显示获取值,并且由于实时模型以连续方式计算,有可能下一桢接收倒的数据不会立即跟在当前显示的桢里;换句话说,数据显示可能有“洞” 。以下图片显示了这点:
图 35:数据显示中所期望的信号由于显示一桢所需要的时间比桢本身要长,在发送两桢之间进行的计算会丢失,产生了显示上的断续,如下所示:
图 36:数据显示中的洞有可能最小化这种效应。对于每个给定信号的数值,decimation factor 的增加(从每步获取一个到每两步获取一个)同样增加了数据桢的有效长度,这就减少了传输两个数据之间的空隙值:
图 37:增加每一桢的有效长度尽管实时计算时显示更具代表性,decimation factor 的提高能够引起数据显示精度的问题如下所示:
图 38:显示精度错误在 RT-LAB 里,即使有命令站的崩溃,运行在目标节点上的实时模型会继续运行。重启命令站后,重新连接到实时模型并继续数据获取。
5.2.2 同步式获取记住,系统有时间时,获取的桢会被发送;当模型等待通讯包或者同步脉冲时,桢以 TCP/IP 包的形式发送。其结果是实时系统不会被 TCP/IP 传输而中断。因此,命令站太慢或者目标节点没有足够的剩余时间的话,控制台显示可能会丢失一些数据,这个技术有助于确保硬件的实时性能。混淆现象是另一个获取问题,当使用一些小桢时可能会引起这个问题,如前所述,有可能下一个接收到的数据桢不会立即跟在当前显示的后面,在小桢的情况下(像一桢一个值)可能会由于丢失了一些值而引起了数据的不正确显示。为了论证这个概念。让我们假定我们有个正玄信号如下所示:
图 39:没有混叠的图例如,如果每 n 步获取一个数据,由于获取不能跟在实时仿真后,显示器显示值时没有正确的刷新时间轴,这就导致了混叠:结果频率以因数 n 被提高了。
图 40:混叠非同步时间轴由于控制台没有意识到来自目标节点上的数据已经丢失了,数据接收问题发生了。为解决这个问题,有可能用仿真时间同步化控制台时间以避免数据丢失及接收问题。在获取时,控制台子系统从仿真平台上获取信号,使你能够观看数据(示波器,到工作类型模块等等)。OpComm 模块掩模有三个选项。表格 3:OpComm 模块掩模选项按钮/区域允许同步功能对于给定的组允许同步算法。如果在获取平台时间和仿真时间要求同步的话就必须使用这个算法。在出现同步问题的情况下,控制台检测到目标节点上有数据丢失,算法会用最后接收的信号值代替丢失的数据,或者添加数据。在计算子系统丢失数据的情况下,同步算法在大量数据丢失的情况时插入数据。以下指令会讲清楚这点。左边的显示器显示出数据获取时没有修改数据,而右边的显示在丢失数据时,两桢之间插入了数据。
允许改写、添加
阈值
仿真控制台时间和仿真目标时间之间的差别。无论什么时间这个差别被超过,同步算法就会停止插入并重新同步化到一个新值。
图 41:数据获取中插入
监控模型(Monitoring models)
这章描述如何使用 RT-LAB 监控运行中仿真模型的参数。可以通过使用监控查看面板(Monitoring Viewer Panel)或者是用 OpMonitor 模块来监控模型。
6.1 监控使能为了能够检测模型的参数,在模型加载前必须使监控使能。这是因为监控器需要在模型运行前占用一小段时间(几微秒取决于目标 CPU 的速度),而默认情况下是不没有的。使能监控的步骤:
9. 用主控面板(MainControl Panel.)打开模型。 10.点击配置(Configuration)按钮。 11.进入监控项(Monitoring)
z
若监控所有模型,先点击改变窗口下面的全局设置按钮 Change Global
settings(如果有密码的话要输入密码),然后在全局设置
global setting 中
选择监控使能 Enable monitoring 选项框。 z 若只监控当前模型,不要在全局设置 global setting 中而在局部设置 local setting 中选择监控使能 Enable monitoring选项框。
12.点击 OK 按钮。如果模型中插入了 OpMonitor 模块,当模型在加载到目标机时就自动允许监控了。 6.2 使用监控查看面板在任何监控使能的模型中都能够使用监控查看面板。当使用了 GUI 设置监控使能后,不需要重新编译模型。当模型在目标机上加载,通过右击 RT-LAB 系统图标并选择 Monitor Viewer 来启动监控查看。一旦显示了界面,在模型运行后,点击 connect 连接按钮,在弹出的对话框中选择需要监控的模型,成功连接后就可以点击 GET 按钮返回监控参数。 6.3 使用 OpMonitor 模块在模型中插入 OpMonitor 模块也可以取得监控信息。而模型可以使用这些参数值通过使能子系统的方式来对模型本身的运行进行调整,或者是把它们写入日志文件,如此等等。当在模型中插入 OpMonitor 模块时,监控器会在下一次模型加载时被使能,而不需要再使用 GUI 进行设置。(参考模块库索引向导可以获取更多 OpMonitor 的信息。) 6.4 测试模型子系统的计算时间 RT-LAB 提供了整个系统的计算时间和全部时间的信息。有时,只需要的对模型的一部分进行监控,在这种情况下,应该使用OpMonitoringStart 和 OpMoniroringStop模块来把用户的这种需求体现在模型中。(参考模块库索引向导可以获取更多关于如何把模块插入模型的信息。) 6.5 测试计算用户源代码所用的时间通过使用 S-function 或者 UCBs 可以将用户 C 代码添加到模型中。这个用户代码是计算监控时间的一部分。这个可由使用 RT-LAB 提供的监控函数完成: OpalMonitoring_Register:注册一个新事件的名字及其类型。 OpalMonitoring_LogStart:启动该事件的记录计时。 OpalMonitoring_LogStop:停止该事件的记录计时。参考“RTLAB_ROOT\Examples\Features\Monitoring1”里的监控样例以学习如何在用户代码中插入监控。 6.6 事件列表
下列是当模型运行时所有可能发生的事件列表。事件名描述模型的主函数和中断之间的 Sync Handler Jitter 时间切换。软件或硬件同步模式下有用。 Synchronized IOs Status Update Data Acquisition 每一步开始后,IO 板卡采集数据的时间。内部状态的更新时间。获取模型数据的时间(不包括传输时间)。刷新模型信号的时间。每步每步每步仅当控制台接收到信号时接收或调用注册 BLOB 的用户回调函数的时间。将内部状态发送到别的计算 Send Status 节点上的持续时间。如果系统没有分布的话,持续时间就是 0。从别的计算节点上接收状态 Multi-Receive 和数据的持续时间。如果系统没有分布的话,持续时间就使 0。 Handle target requests 处理发送到命令台上反馈的时间。处理从命令台上接收到命令的时间。执行“预处理”回调的时间。这个运算在模型运行前完成。每步只当请求处理时每步每步仅当接收到 blob 时每步频率
Signals Change
User Blobs
Handle host requests
只当请求处理时
Pre-Execution computation time
Major time
computation
每个主要 step 中模型计算的时间。这取决于 slover 的计算时间。每步
Minor time
computation
每个次要 step 中模型计算的时间。这也取决于 slover 的计算时间。运行 “传输执行” 回调函数的持续时间。这个计算在模型运行后完成。模型运行时间(主要的和次要每步每步
Post-Execution computation time
Execution Cycle
的) + RT-LAB 的管理时间(状态刷新和通讯)
每步
Total Step Size Idle
执行时间+等待时间可作更多计算的有效时间。过快运行的步数目。在计算结
每步每步
Number of Overruns
束前发生中断就会出现过快运行。
当不允许空闲时
RT-LAB 模块的使用
RT-LAB 有一个可以添加到你的模型中的模块库。这些模块库使你能够访问不同的 I/O 模块以及别的函数。 I/O 和同步模型块可用于于控制外部设备;通用 RT-LAB 模块还提供了一些网络通讯和计时功能。这章讨论 I/O模块、同步模块以及其他能够被 RT-LAB 使用的模块的需求、使用以及参数。 RT-LAB 模块库可以用 Simulink 或者 SystemBuild 的库浏览器找到。
7.1 通用模块
RT-LAB 的很多模块,它们提供了如日志、监控、到外部部件的通讯等通用功能。这些模块需要插入到 RT-LAB 子系统中(SM,SS 或者 SC)。一些模块离线工作,有的只在实时运行。参考在线文档可以获得更多关于模块的信息。 7.1.1 将模块添加到模型中为把模块添加到模型中,需要设置如下参数: 1.打开 Simulink 库浏览器并点击相应于你想使用的 RT-LAB 模块。 2.把模块拖到你的仿真模型中。 3.双击 RT-LAB 模块以改变其参数,此时会打开一个参数控制框。 7.2I/O 模块 I/O 卡使你能够控制外部设备。这些卡可能是数模转换器(D/A),模数转换器(A/D),输入输出(I/O)二进制端口和积分解码器。另外还有同步卡可以进行同步计算以及在节点之间通讯。 RT-LAB 有一个模块库专门提供了对不同类型的 I/O 板卡的访问。在模型库中将它们的厂商名、产品名和模块都列出来,这样 RT-LAB I/O 库就可以在 Simulink 或者 SystemBuild 库浏览器中找到。每个模块都具有对某个 I/O 板卡提供访问的功能。这些插入到仿真模型中的模块,需要设置不同的参数以指示 RT-LAB 在那里能够找到相应于模块的板卡或者模型。
这些模块对离线运行没有影响。当加载模型时,插入 I/O 模块的目标子系统(Sm-或 SS-)必须被分配到有相应 I/O 卡的目标节点上。参考在线文档可以获得关于每个模块的更多信息。
RT-LAB 的连接性
8.1RT-LAB Orchestra 8.1.1 介绍
RT-LAB Orchestra 是一个附加功能,它扩展了 RT-LAB 的连接到不同类型的仿真器上的能力。不同的仿真器包括以不同编程语言编写的仿真器,或者由多种仿真工具产生的仿真器。尽管 Simulink 通过使用 S 函数提供了一些连通性的能力,适用 RT-LAB Orchestra 的主要优点在于它的灵活性:一起进行仿真的部件能够被不同的团队开发并测试,然后集成为一个连贯的仿真系统。当采用 RT-LABOrchestra 时,RT-LAB 作为框架,与这个框架交换数据的仿真部件被称为外部部件。RT-LAB Orkestra 提供了一个实时的,用户可配置的通信层,这个通信层是 RT-LAB 框架顶层。在这方面,RT-LAB 成为提供了不同仿真部件之间的传输层的骨干部分. 目前支持的外部元件有: z z z C 代码应用程序。标准(RT-LAB 和非 RT-LAB)仿真模型。独立 Dymola 模型。
作为一个软件应用,RT-LAB Orchestra 包含以下实体: z 一个配置文件,这个文件用来指定框架与外部元件交换数据,通信层取决于这个配置文件的内容。 z 一个 Simulink 模块库,这个 rtlab_orchestra 仿真库,提供界面框架和外部元件之间的界面。 z C 语言应用程序界面,即 Orchaster RT-API,它被外部元件用来与框架交换仿真数据,在需要进行数据交换的外部元件中嵌入对 RT-API 的调用。这里每一个实体都会在下面详细介绍。
8.1.2 配置 RT-LAB Orchestra 通信层 8.1.2.1 RT-LAB Orchestra 数据描述文件
你可以通过使用扩展标记语言(XML)的数据描述文件(DDF)指定要交换的仿真数据来配置 RT-LAB Orchestra 通信层。一个 DDF 会被分解成四层,每一层都会在以下部分进一步描述。以下数据显示了 DDF 样例的结构。
8.1.2.2 Orchestra 的元素
Orchestra 元素在 DDF 的顶端。由打开和关闭
8.1.2.3 域元素
比顶级元素低一个级别的元素,包含
8.1.2.4 数据设置
要求每一个域都要有‘PUBLISH’ 和‘SUBSCRIBE’设置,尽管这些设置可能是空的。 “PUBLISH” 设置包含了由 RT-LAB 框架到通信层的数据项列表,因此可被外部域参与者阅读。 “SUBSCRIBE” 设置包含由 RT-LAB 框架的通讯层读取的包含数据项的列表,所以由外部元件发布。
8.1.2.5 数据项
数据项是集成仿真内部交换的实际信号。数据项由名字属性和类型来定义。在给定的域中,项目名字必须是唯一的。唯一支持的类型是‘double’ (C 代码双精浮点型的关键字)。为了文件的目的,你可以在项目元素
8.1.2.6 元素名的限制
域和项目名有以下限制: ? 名字是区分大小写的。 ? 名字在 64 个字母内。 ? 名字至少包含一个非空字符。 ? 名字不能包含逗号“, ” 。
8.1.3DDF 配置器
RT-LAB Orchestra 包含称作 DDF 配置器的图形工具,可以用来代替直接编辑 XML 文件。
8.1.3.1 启动 Orchestra DDF 配置器
DDF 配置器可以作为独立的应用程序启动,也可以作为 RT-LAB Orchestra 仿真器的模块来启动。
双击 DDF Configer,在
8.1.3.2 主要特点
DDF 配置器使你能够: ? 创建新的 DDF。 ? 输入、更新一个已有的 DDF。 ? 输入一个 Dymola 配置文件,并从中创建 DDF。
8.1.3.3 图形查看
DDF 配置器包含由可移动分割器分割的两个查看窗口,在面板上边沿有一个工具条,左边的工作口称作 Explorer View。Explorer View 是一个树状结构显示由当前 Orchestra 跟目录定义的仿真数据。Explorer View 的顶端是根节点。根节点是 DDF 所有别的元素的容器,即:域,数据设置和项目名。你可以扩展一个树状节点以看其内容。Properties View 显示 Explorer View 当前所选择的元素特性。相应于四个不同的 DDF 层,有四个 Properties View 变量。以下数据显示了 DDF 配置器的快照,包含 Explorer View 所得选择的数据项“Headiing“,并相应于 Properties View。
8.1.3.3.1 创建一个域 Explorer View 域包含 Publish 部分和 Sunscribe 部分,表示“FRAMEWORK-->CLIENT,包含由 RT-LAB 框架到 Orchestra 通信层写的数据项,而 Subscribe 组,表示 CLIENT-〉FRAMEWORK,包含从 Orchestra 通信层读取的数据。创建新域有两种方法: ? 右击 Orchestra 根元素在 Explorer View,会出现一个菜单,在弹出的菜单左击“添加域” ,会引起一个新的域元素添加到 Explorer View。 ? 在工具条菜单中选择“Domain->Add New Domain”选项。无论什么时候被创造,域都会被自动分配一个名字"newDomain#",这里“#” 表示一个不断增加的正整数,你可以选择重新命名域。一个新创造的域包含空的 Publish 和 Subscribe 组。
8.1.3.3.2 重新命名域
为重新命名域,你可以在 Explorer Vie 中双击或者按 F2 按钮,域名就变得可编辑了,输入新的域名并按“Enter”键,如果域名不是唯一的话,就会给出一个出错信息并且域名变为先前值。注意所有的头和尾都被从域名中剥离出来了。
8.1.3.3.3 打开一个已存在的 DDF
在工具条菜单中选择"File->Open"选项,会出现一个对话框。选择你想要打开的 DDF 文件并在对话框点击“打开”按钮。DDF 内容就会在 Explorer View 中显现出来。DDF 配置器的标题栏显示出你刚打开的文件名。如果 DDF 文件没有能被成功处理,那么就会给出一个出错信息,打开过程也会中断。
8.1.3.3.4 创造数据项
数据项在域中的 Publish 或者 Subscribe 组里被创造出来。有两种方法来创造数据项: ? 右击域中的 Publish 和 Subscribe 组,会出现一个弹出式的菜单。在弹出式菜单中选择“添加项目” 。 ? 选择域中的 Publish 和 Subscribe 组,然后再工具条菜单中选择"Item->Add New Item"。新数据项目的默认数据类型是双精度型。一旦创造了一个项目,你可以在 Properties View 中添加描述。这个描述会被 DDF 保存以便于下次 DDF 打开时会再次看到。新创建的项目会被自动赋名“new Item#”,这里 “#” 是指不断增加的正整数。注意,当数据项出现在数据组内部时,数据项在字母表命令被分类。
8.1.3.3.5 重新命名一个数据项
选择要重新命名的数据项,双击或者按 F2 键。数据项的名字就会变得可编辑,如果新名字和一个已存在的域名不冲突的话,数据项就会被重新命名,否则就会给出出错信息,数据的名字变回先前名字。注意所有的头和尾都被从域名中剥离出来了。
8.1.3.3.6 添加对数据项的文本描述
选择 Exploer View 来添加对数据项的文本描述,这会为项目显示出 Properties View,在授权区写入“描述项目[项目名]” ,然后点击“Enter”键。
8.1.3.3.7 把 Explorer View 内容保存到 DDF。
如果 Explorer View 包含从已有的 DDF 上读取的数据,通过在工具条菜单上选择"Save->File"当前 Explorer View 会被保存到同一个 DDF 文件。如果没有打开 DDF,当前 Explorer View 会从文件菜单中的“Save As”菜单选项保存到新的 DDF 中。
8.1.3.3.8 输入已有的 DDF
在工具条菜单选择"File->Import 选项,而后选择 DDF 项。会出现一个对话框。 DDF 被打开并被分析,会被添加到当前 Orchestra 容器中。如果输入的 DDF 包含一个和 Explorer View 已存在的文件名相同,输入就会被拒绝,并且继续剩余的 DDF 域。
8.1.3.4 输入 Dymola 文件
在工具条菜单中选择"File->Import "并选择“dsin.txt”项目。一个对话框允许你选择 Dymola 输入文件。文件 dsin.txt 被打开并被分析,然后他的内容被添加到一个默认菜单,名为“dsinImportDomain#",这里“#”是指不断增加的正整数,直到没有与其冲突的名字为止。对 Dymola 模型的输入被插入到 Publish 组(即
FRAMEWORK-)CLIENT 组),有 Dyumola 模型所产生的输出被插入到 Subscribe 组里(即 CLIENT-)FRAMEWORK 组)。
8.1.3.4.1 清除 Explorer View
在工具条菜单中选择“File-〉Clear”项来删除所有在“Orchestra”跟节点钟存储的内容。注意,这会清除先前保存 DDF。
8.1.3.4.2 选择域和数据项
当你从 RT-LAB Orchestra 库中启动 DDF 配置器时,不是 Explorer View 中所有的域和数据项都会被返回到模块掩模中。只有一个域会被关联到给定的模块中。因此,若有 Explorer View 中有不止一个域的时候,你需要选择一个特定的域,左键点击按钮“Yes” ,在任何时间,你都可以通过点击“Orchestra”根节点看到当前所选择的域,检查相应 Properties View 区域“Selected Domain” 。注意如果先前有选择域的话,选择一个域就会自动取消先前所选择域。一旦选择了一个域,你同样可以选择仅仅对数据项的一个集进行输入或者输出模块,在默认下,所有在数据集里创建的数据项都会被选择,在 Explorer View 里选择项目名,会显示出对项目的 Properties View。然后在“Item [item name] Is Selected”里选择“NO” 。当 DDF 配置器独立启动时,一个域或者选择数据项对产生的 DDF 没有影响。
8.1.4 RT-LAB Orchestra Simulink 模块
RT-LAB Orchestra 模块是 Orchestra 通信层的连接端点,用来连接框架和外部部件。在 RT-LAB Orchestra Simulink 库里有两种类型的模块,即代理模块和外部部件模块。把代理模块插入 RT-LAB 框架里的子系统,而外部模块从外部仿真模型中使用,这个模型是你想要连接到 RT—LAB 框架的。参考 RT-LAB 库文件里模块参考章以获取关于模块的详细信息。
8.1.5 设置 RT-LAB Orchestra 集成仿真
8.1.5.1 使用 Orchestra RT-API 如果你已经定义了 DDF 中要在外部元件和 RT-LAB 框架里交换的数据项,你需要嵌入 Orchestra RT-API 到外部元件的调用。Orchestra RT-API 是一个 C 代码的应用程序接口(API),它实现在集成仿真元件间将数据集中通讯的功能。这个功能能够使域参与者只通过参考名字就能够交换数据。先于和 RT-LAB 框架交换数据,必须通过调用 Orchestra RT-API 里的 RTConnect ()函数确立到域的连接。通过分别调用 RTPublish()和 RTSubscribe()发送数据项(发送到 RT-LAB 框架)以及订阅到(从 RT-LAB 框架接收),通过名字查阅数据项。和域之间的数据交换可以是同步的也可以是异步的,和 DDF 里定义的 QoS 里指定的同步性相一致。对于同步连接,对 RTPublish() 和 RTSubscribe()的调用一定要在调用提供锁定机能的函数之间。断开从域上的连接可以通过调用 RTDisconnect()来完成。断开连接可以在外部元件连接上之后的任何时候进行,而不会影响 RT-LAB 框架。查询 RT-API Reference中的函数索引一章来获得对函数的描述是 OrchestraRT-API 的一部分。
8.1.5.2 将外部 C 代码集成到 RT-LAB 模型中
这部分详细描述了把 C 代码连接到 RT-LAB 框架上的步骤。把一个 C 代理模块添加到框架的子系统中。通过双击它来配置模块,这个操作会打开 DDF 配置器图形工具。指定一个域名并定义一个要与 C 代码交换的信号列表。在 Publish 组中(“Framework-->Client”)选择项目并发送相应的信号到外部域参与者。相应的,在 Subscribe 组里选择从外部域参与者接收数据。和别的模型一样,编译并加载 RT-LAB 框架。在 C 代码中,添加连接到域的调用和 publish/subscribe 的调用以发送信号到 RT-LAB 框架并分别接收信号。编译并连接 C 代码成为一个独立过程。在路经
RT-LAB 分布下提供了一个 C 代码样例。
8.1.5.3 集成外部仿真模型到 RT-LAB 框架
在外部仿真模型中的任何地方添加控制器模块。把 Publish 和 subscribe 模块添加到任何你想要 RT-LAB 框架发送和接收信号的地方。使用 SimulinkRTW 建立模型。在路经
8.1.5.4 将 Dymola 模型集成到 RT-LAB 框架
这部分详细描述了将一个独立 Dymola 应用程序连接到 RT-LAB 框架所需要的步骤。翻译你想要连接到 RT-LAB 框架的 Dymola 模型。这会产生一个 dsmodel.c 的文件,以及一个包含到 Dymola 输入输出信号列表的文件。在一个 RT-LAB 框架的子系统,添加 Dymola 代理模块。通过双击它来配置模块,此操作会打开一个 DDF 配置器图形工具。输入 Dymola dsin.txt 文件并选择输入输出信号。在文件 StandAloneDymosim.c.里添加到 Orchestra RT-LAB 的调用,为独立 Dymola 模型建立一个可执行文件。参考
dir>\Examples\features\Orchestra\Dymola\src
8.1.6 运行 RT-LAB Orchestra 集成仿真
这部分描述如何建立你想要连接到 RT-LAB 框架的外部文件。假定你已经编译并加载了框架本身。
8.1.6.1 传输外部可执行部件
在以上步骤之后,为每个你想要连接到 RT-LAB 框架的外部部件建立一个可执行文件。注意当设置 RT-LAB Orchestra集成仿真时,域参与者需要在同一个处理器上,尤其是对于连接到给定域上的外部可执行部件,必须在同一个目标节点上,这是由于 RT-LAB 子系统包含为那个域包含代理模块。打开一个 FTP 连接到目标节点并拷贝外部部件的可执行文件。在命令窗口上键入其名字已运行可执行文件。
8.1.6.2 所需的环境
RT-LAB Orchestra 和 RT-LAB 平台一样被支持。作为独立应用程序运行 DDF 配置器,你需要在你的机器上安装 java j2se 运行环境 5.0 (jre)。JRE 可以从 Sun 的网址(http://java.sun.com).上免费下载。为从仿真模块上运行 DDF 配置器,你需要使用 Matlab7.1(Matlab R14SP3)或者更新的版本。
8.2RT-LAB XSG
XSG 是一个缩写,代表 Xilinx System Generator。Xilinx System Generator 是一个由 Xilinx 提供的工具,一旦在 Matlab 里被安装,会创造两个 Simulink 仿真库。使用这些库里的模块或者 RT-LAB FPGA 库里的模块,用户可以用自己选择的 IO (模拟输入输出,数字 IO)构建、仿真自己的 FPGA。可以实现自己的 DSP 算法如滤波器, CORDIC 算法, PWM 发生器,波形发生器以及在任何 OpalReconfiguable 串口 IO 卡的东西(目前只支持 OP5130 卡,后续版本中将会支持 OP5110 以及 OP6111)。
8.2.1 优点
XSG 能够使用户创建并仿真自己的 FPGA 设计,而不需要知道传统的 HDL 语言,全部都在 Matlab/Simulink 环境中。 Opal 的 XSG 管理器同样根据目标机 OP5
×××可配置 IO 卡管理所有的在 Xilinx System Generrator 模块中合时参数的设计为比特流的产生。在模型在目标节点和可配置 IO 卡上管理器允许完全离线仿真。设计你自己的 FPGA 有很多优点。在 FPGA Opal OP5XXX 串口的时钟速度是 100MZ,这意味着计算步小至 10ns,(10E-9 秒),与之形成对比的是,目标节点上 PC 实时运行的时间大约是 10us。尽管 Opal-RT 为固定配置的 OP5XXX 卡的库提供了特殊的 IO 功能。有了 XSG 选项,如果不存在指定的话,用户可以创造他自己的 IO 配置(如果用户使用 FPGA 设计或者没有安装 XSG 选项的话,你总能够通过接触客户支持来创建指定配置)。通过创建自己的 IO 卡设计,你同样可以在输出采样到 DAC 接口之前添加滤波功能。在 FPGA 中创建这些功能有利于减轻目标机上的负荷,这些目标机本该经常完成这些计算。
8.2.2 要求
表格 4:RT-LAB XSG 要求操作系统 Microsoft Windows 2000/XP 为使用 Opal XSG 的特点,你需要购买并且安装: Xilinx ISE 7.1SP4(BaseX 就足够了 ) 。(目前不支持 ISE8)软件为 DSP 的 System Generator 版本 7.1,软件来自 Xilinx (目前不支持第八版)。 Matlab/SimulinkR14.1, R14.2 以及 R14.3 从 MathWorks。 RT-LAB8 或者更新的版本。
8.2.3 开始
为理解 Xilinx System Generator 的工作方法,参考 XilinxSysGen 用户向导。 Opal XSG 的一个重要的部分是 XsgManager。这个模块使你能够在目标节点上运行的模型和在通过 OpCtrlReconfigurableI 的 FPGA 目标节点上运行的模型之间轻松离线仿真。这两个模块可以在下面的例子中看到。在这个例子中,展现了 XSG 所需要的模块,即 OpCtrlReconfigurableIO 和
XsgManger。先前代表的 FPGA IO 卡自身就有 16 个 IN/OUT 通讯端口。这个模块可被看作是软件和硬件之间的桥梁。他既可以通过 PCI 总线(OP5110 no XSG support in RT-LAB 8.0)通讯并且接收实时数据样本从而配置 IO 卡,也可以通过 Opal SignalWire (OP5130)来做。
XsgManager 和参数一起进入到 OpCtrl 可配置 IO 中,在 FPGA 模型里的 System Generator 模块里设置参数,以便于正确编译使用。
为了 XsgManager 能够正常地工作,这个 FPGA 模型必须要有这样的形式:一个连接到一个有 16 双精度类型的向量输入口和 16 个 uint32 类型(为避免错误可以拷贝例子中的 fpga_model.mdl,或者以此为 FPGA 的设计开始)的子系统。通过双击 OP5130 子系统你可以发现 FPGA 的一些功能。正如可以看见,模型是 Xilinx SysGen 库模块和来自 RT-LAB FPGA 库模块的混合(它本身主要由 SysGen 模块所组成。为了在板卡上能够与不同的 IO 通讯,需要 FPGA 库模块以。这些 XSG 模块同样包含 Xilinx 网关模块,这些模块确保用户的设计和 Opal FPGA 芯片结构之间能够融合。
数据输入和数据输出模块是用来和目标节点相通讯的,这个通讯可以用 PCI 总线和信号线连接。他们每个都提供了 Xilinx UFix 形式的 33 位 16 端口总线。来自数据输入模块的数据会被改变,当以目标节点的步长(由变量 Ts 设置)为 10ns (FPGA 的时钟频率是 100MZ)。在数据输出方面,虽然采样周期在输入端口是 10ns,但数据采样发送到目标机时只按照其步长。黄色 XSG 模块代表不同的 FPGA 卡对 IO 的访问。在这个例子,OP5130,卡访问两个 52 管脚中间连接器,MezA_IO 和 MezB_IO 模块(连接 16 通道 A/D 和 D/A 卡 Op5330 和 Op5340)。它同样可以访问数字 IO 前面板(FP_A_DIO 和 FP_B_DIO) 以及底板卡连接器 BP_A_DIO 和 BP_B_DIO)到 DIO 调节卡,可以连接 OP5210。在这个特殊的 XSG 运行例子,OpCtrl 重新配置 IO 模块在实时目标机上被例子化了。这个模块的输入被连接到信号发生器上,信号发生器以 Ts 的速率产生采样到可配置 IO 卡,这里 Ts 被设置为 200us。这些信号发生器产生了锯齿波、正玄波、方波。注意这些信号通过子系统时被命名为"double touint32 convert" ,把发电器的双精度信号转换成 Uint32 类型的信号。这是 OpCtrl ReconfigurableIO 输入输出唯一支持的类型。除了信号转换外,子系统对信号进行缩放和串联。在类型转换前,缩放是有必要的,可以防止十进制值丢失。在这个特殊的例子中,波形信号被传递到 FPGA XSG 模型的 DAC 接口上,以 Xilinx 的 Fix16-11 格式,所以有一个 “移位算法”模块将三个波形信号的数据左移 11 位(即乘以 2^11)。
在三个串联子系统中,你可以找到转换模块的类型以及串联逻辑。在这种情况下,串联是有必要的,这是由于信号发生器被连接到 16 位通道的 DAC I/F 。
输入端 IN1 处理低 16 位,输入端 IN2 处理其余的高位。在这个例子中,这两个端口都连接到同一个源并且从端口 2 输出,该输出端口将 double 转化成 uint32 类型,然后按照一定的顺序连接到 OpCtrl Reconfigurable IO 模块的输入端口 2 上。这个端口相应于 DataIN 模块的 DataIN2 端口,在 XSG FPGA 模型和直接连接到 OP5330 DAC 接口模块。这个模块的每一个 DAC 输入端口都代表两个 16 位的串联通道,精确的形成了 RT-LAB 模型,所以不需要进一步的信号转换。信号串联不是必要的,但是还是有用处的,因为它有更高效的使用带宽。 OpctrlReconfigurableIO 模块同样在它的第一个端口接收频率信息,这个端口相应于 FPGA 的 DataIN1 端口。这个信息在 FPGA 中是 Fix_20_17 的,并需要和先前的波形一样被转变。这个信号首先通过 FPGA 乘以 2^17,然后转变成 uint32 格式。这个没有串联, 12 个高位没有被使用。一旦在 DataIN1 被 FPGA 接收,20 个最低有效位会被 Xilinx 分割模块从 32 位数据中提取出来。这时, Xilinx 重新解释模块把 UFix_20_0 格式转换成 Fix_20_17 格式,正如 Xilinx CORDIC 例子所期待的一样。这个子系统的目的是使用 CORDIC 算法运行 SIN、COS 波形发生器。频率和采样率都是可以修改的。SINCOS 的频率波形被目标节点修改。采样率由 Sync Generator 所控制,控制从 CORDIC SINCOS 数据样本的比率,还控制 OP5330 DAC IF 模块的转换率。Sync Generator 被设置为 1e-006 即 1 微秒,也是 OP5330 卡的最大传输比率。一个可配置的 Sync Generator,一个为设置同步信号速度的输入端口,允许不同的采样率和 DAC 转换。在 FPGA 中实现波形算法是考虑到更快的采样率。由于 CORDIC SINCOS 产生器输出具有 Fix-20-17 格式(我们想要两个连接的 Fix-16-10 为 OP5330 IF),我们必须首先使用分割模块从 SINCOS 输出中提取 16 位。这两个 16 位信号由 Xilinx 串连模块混合,然后做好被 DAC 输出的准备。这个代表 16 位/16 通道 Opal 模拟输入卡,这个模块的每一个输出都代表了两个连接通
道,ADC I/F 的转换端口被连接到一个“from”模块有一个到 ModelSync 信号的标签。 ModelSync 是一个以 Ts 比率或者以目标节点采样率所产生的 10ns 的脉冲。通过把 ModelSync 连接到转换端口上,ADC I/F 就会以和目标节点同样的速率采样。FPGA 和目标节点是同步的,如果用 SuncGenerator 代替 DAC 并设置为 Ts 的话,由于 SyncGenerator 使用本地振荡器产生同步脉冲,会产生溢出或者过快运行。目标节点就会丢掉一些采样或者两个采样会在同一时间到达同一个目标节点。一旦数据到达 OpCtrl 可配置模块的输出端口,为采样,就需进行一些转换,以下图形显示了 “数据从 uint32 到双精度” 提取 16 位 ADC 采样子系统并把它们装换成双精度(OpCtrl 可配置模块全部是 uint32 格式的)所需要的转换类型。
这两个模型可以在编译前离线仿真。为仿真全系统,你必须使用 XsgManager 并点击插入按钮。这个会把 XsgModel-temp 子系统插入 OpCtrl Reconfiguable 模块所指定的 RT-LAB 模型。管理器会在仿真参数配置里设置正确的采样时间。现在,通过按开始按钮,你就有了对这两个系统的仿真。你可以不使用管理器的插入按钮进行仿真,但是你只能仿真 RT-LAB 模型(OpCtrl ReconfiguableIO 自己不能仿真)。一旦你对仿真结果满意,你可以升级 XSG FPGA 模型,如果你对 xsgModel-temp 做任何修改,按 XsgManager 里的升级 XSG 按钮,不这样的话 FPGA 里的实时仿真结果和离线仿真结果就会不一致。现在通过按 XsgManager 里的编译按钮你就可以获得 FPGA 比特流。当以 Opal FPGA 板为目标,使用这个按钮(或者 RT-LAB 主控制面板里的编译按钮)比 Xilinx System Generator 模块里的“Generate”按钮好。让 RT-LAB 处理 FPGA 编译。在 Xilinx SystemGenerator 模块里找到的所有参数都是为 Opal FPGA 卡为目标设置的。如果在 FPGA 编译阶段发生错误,在"model_directory"/xsg_"fpga_model_name"/netlist/xflow/xflow.results可以找到 Xilinx 的工
具重新启动。一旦比特流完成,就通过在主控面板按加载按钮由 RT-LAB 加载,比特流的名字在 OpCtrl ReconfiguableIO 模块设置,而这返回来由选择的卡的类型和 FPGA 模型里的模块版本设置,现在你已准备好实时仿真你的设计。
8.2.4 特点
这个版本的 XSG 有一些警告,为一些具体操作,用户必须注意。设计中必须要有的一些 Opal XSG 模块:为正确创造比特流,FPGA 模型必须要有的以下模块。以 OP5130 卡为例,模型必须包含 DataIN, DataOUT, FP_A_DIO,FP_B_DIO, MezA_IO, MezB_IO, BP_A_DIO, BP_B_DIO 以及版本模块。所有这些可以在 RT-LAB 的 FPGA 库里找到。同样,这些模块不能再同一个模型中出现两次。在 FPGA 编译时,所有这些模块都包含连接用户 FPGA 模型和 Opal XSG 建筑的网关。设计中绝不要添加 Xilinx 网关:添加网关,输入或者输出,SysGen 在 VHDL 实体上创造端口。这会在用户的 FPGA 模型和 Opal 顶级建筑混合时产生不匹配。这个错误会在编译几分钟后出现。添加 Xilinx 网关在编译时不会产生问题。没有设置要传输到输出端口的网关输出不会产生任何问题。所有由 FPGA 产生或者发送出去的采样都以 10ns 为步长。即便采样在 FPGA 和目标节点之间的通讯只以 Ts 率(目标节点率)改变,FPGA 模型里的网关只以 10ns 为采样周期。在离线仿真时,XsgManager 处理传输模块的插入率以处理不同的比率。这些传输模块出现在 XsgModel-temp 子系统并且只为仿真目的而使用。子系统中必须包含 FPGA 模型 FPGA 模型必须包含一个称作 OP5310 的子系统,正如 XSG FPGA 模型例子里的那样。否则的话,比特流编译就会失败。所有的 SysGen 比特流编译参数都由 XsgManager 处理。用户没有原因要修改 Xilinx System Generator 模块里的参数。用户作的任何改变都会被 XsgManager 抛弃。比特流必须通过按 XsgManager 里的编译按钮来产生,而不是通过按系统产生器里的产生按钮来产生。当按编译按钮时,XsgManager 自动设置系统产生器参数为已选的系统可配置 IO 卡(可以在 OpCtrlReconfiguableIO 模块板的类型参数上找到)。 8.2.5 限制
在 RT-LAB 版本 8.1,XSG 只支持 OP5130 可配置 IO 卡。更新的版本会允许在 OP5110 卡上进行 FPGA 设计。多个 OP5130 可配置 IO 卡之间的通讯目前还不能实现。进一步的版本会支持多个 OP5130 可配置 IO 卡之间通讯他们的结果并创造更大的设计,一个模型可以在很多个 FPGA 卡上分布。目前,目标机可能把采样发送到多个 OP5130 卡上,但这些卡只能把结果返回目标机。 DataIN/OUT 模块只提供 16 和 32 位 IN/OUT 端口,下个版本会提供更多的端口。遗漏一个 Opal RT-LAB XSG 模块的错误不会被 XsgManager 立即检测到,只有编译几分钟后才会报错。