发明内容
有鉴于此,本发明提供了一种MATLAB模型变量的剖析方法及装置,用以解决现有技术中的剖析方法所能剖析出的变量的数量有限,且模型变量的剖析效率不高的问题,其技术方案如下:
一种MATLAB模型变量的剖析方法,其特征在于,包括:
通过目标语言编译器TLC读取RTW内存结构,生成描述所述MATLAB模型中模块层次关系和变量属性的变量文件,并且计算所述变量文件中变量的偏移地址;
读取所述MATLAB模型编译后所生成的MAP文件中变量的基地址,根据所述变量的基地址和所述变量文件中对应的变量的偏移地址确定变量的实际地址。
其中,所述RTW内存结构中的信息包括:所述MATLAB模型中模块之间的层次关系信息、模块参数属性信息、模块输入输出信号属性信息、子系统输入输出信号属性信息、信号测试点属性信息和信号标签属性信息。
其中,读取RTW内存结构,生成描述模块的层次关系和变量属性的变量文件的过程包括:
根据所述RTW内存结构中的子系统Subsystem结构生成模块之间的层次关系;
根据所述RTW内存结构中的数据输出端口DataOutputPort结构和模块输出BlockOutputs结构生成模块的输出变量和子系统的输出变量;
根据所述RTW内存结构中的数据输入端口DataInputPort结构生成模块的输入变量和子系统的输入变量;
根据所述RTW内存结构中的模型参数ModelParameters结构和参数Parameters结构生成模块参数变量;
根据所述RTW内存结构中的信号标签SigLabel结构生成信号标签变量或测试点变量。
其中,所述计算所述变量文件中变量的偏移地址包括:分别计算所述变量文件中参数变量的偏移地址和信号变量的偏移地址;
所述读取MATLAB模型编译后所生成的MAP文件中变量的基地址包括:读取MATLAB模型编译后所生成的MAP文件中参数变量的基地址和信号变量的基地址;
所述根据所述变量的基地址和所述变量文件中对应的变量的偏移地址确定变量的实际地址包括:将所述参数变量的基地址与该参数变量的偏移地址相加,得到所述参数变量的实际地址;将所述信号变量的基地址与该信号变量的偏移地址相加,得到所述信号变量的实际地址。
一种MATLAB模型变量的剖析装置,包括:第一读取单元、文件生成单元、计算单元、第二读取单元和确定单元;
所述第一读取单元,用于通过目标语言编译器TLC读取RTW内存结构;
所述文件生成单元,用于生成包括描述所述MATLAB模型中模块的层次关系和变量属性的变量文件;
所述计算单元,用于计算所述变量文件中变量的偏移地址;
所述第二读取单元,用于读取MATLAB模型编译后所生成的MAP文件中的变量的基地址;
所述确定单元,用于根据所述变量的基地址和所述变量文件中对应的变量的偏移地址确定变量的实际地址。
其中,所述RTW内存结构中的信息包括:所述MATLAB模型中模块之间的层次关系信息、模块参数属性信息、模块输入输出信号属性信息、子系统输入输出信号属性信息、信号测试点属性信息和信号标签属性信息。
其中,所述文件生成单元包括:第一生成子单元、第二生成子单元、第三生成子单元、第四生成子单元和第五生成子单元;
所述第一生成子单元,用于根据所述RTW内存结构中的子系统Subsystem结构生成模块之间的层次关系;
所述第二生成子单元,用于根据所述RTW内存结构中的数据输出端口DataOutputPort结构和模块输出BlockOutputs结构生成模块的输出变量和子系统的输出变量;
所述第三生成子单元,用于根据所述RTW内存结构中的数据输入端口DataInputPort结构生成模块的输入变量和子系统的输入变量;
所述第四生成子单元,用于根据所述RTW内存结构中的模型参数ModelParameters结构和参数Parameters结构生成模块参数变量;
所述第五生成子单元,用于根据所述RTW内存结构中的信号标签SigLabel结构生成信号标签变量或测试点变量。
其中,所述计算单元包括:第一计算子单元和第二计算子单元,所述第二读取单元包括:第一读取子单元和第二读取子单元,所述确定单元包括:第一确定子单元和第二确定子单元;
所述第一计算子单元,用于计算所述变量文件中参数变量的偏移地址;
所述第二计算子单元,用于计算所述变量文件中信号变量的偏移地址;
所述第一读取子单元,用于读取所述MATLAB模型编译后所生成的MAP文件中参数变量的基地址;
所述第二读取子单元,用于读取所述MATLAB模型编译后所生成的MAP文件中信号变量的基地址;
所述第一确定子单元,用于将所述参数变量的基地址与该参数变量的偏移地址相加,得到所述参数变量的实际地址;
所述第二确定子单元,用于将所述信号变量的基地址与该信号变量的偏移地址相加,得到所述信号变量的实际地址。
上述技术方案具有如下有益效果:
本发明提供的MATLAB模型变量的剖析方法,通过目标语言编译器TLC读取RTW内存结构,生成描述MATLAB模型中模块层次关系和变量属性的变量文件,并且计算变量文件中变量的偏移地址,然后读取MATLAB模型编译后所生成的MAP文件中变量的基地址,根据变量的基地址和变量文件中对应的变量的偏移地址确定变量的实际地址。本发明提供的剖析方法及装置中,由于RTW内存结构是描述MATLAB模型属性的内存结构,RTW内存结构中包括了所有的模型信息,因此,生成变量的数量大大增加。并且,由于TLC对RTW内存结构是按内存数据结构的方式直接访问,而非文本查找解析的方式,从RTW内存结构中能够直接读取用户自定义的复杂类型的变量所占用内存大小和维数,所以模型变量剖析效率大大提高。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种MATLAB模型变量的剖析方法,图1示出了该方法的流程示意图,该方法可以包括:
S101:通过目标语言编译器TLC(Target Language Compiler)读取RTW(Real-Time Workshop)内存结构,生成描述MATLAB模型中模块层次关系和变量属性的变量文件。
其中,RTW内存结构是描述MATLAB模型属性的内存结构,由于RTW为内存块,因此,TLC可通过内存访问的方式直接读取RTW内存结构,RTW内存结构中包含了MATLAB模型中所有的描述信息,由于它天然存在于Matlab模型的后台中,因此,只要MATLAB模型打开,便可以通过TLC直接读取。
RTW内存结构包括:子系统Subsystem结构、数据输出端口DataOutputPort结构、模块输出BlockOutputs结构、数据输入端口DataInputPort结构、模型参数ModelParameters结构、参数Parameters结构和信号标签SigLabel结构。
RTW内存结构中包含的模型信息有:MATLAB模型中模块之间的层次关系信息、模块参数属性信息、模块输入输出信号属性信息、子系统输入输出信号属性信息、信号测试点属性信息和信号标签属性信息等。
TLC读取RTW内存结构,生成描述MATLAB模型中模块层次关系和变量属性的变量文件的过程可以包括:
⑴根据RTW内存结构中的Subsystem结构生成模块之间的层次关系。
⑵根据RTW内存结构中的DataOutputPort结构和BlockOutputs结构生成模块的输出变量和子系统的输出变量。
⑶根据RTW内存结构中的DataInputPort结构生成模块的输入变量和子系统的输入变量。
⑷根据RTW内存结构中的ModelParameters结构和Parameters结构生成模块参数变量。
⑸根据RTW内存结构中的SigLabel结构生成信号标签变量或测试点变量。
S102:计算变量文件中变量的偏移地址。
其中,计算变量文件中变量的偏移地址可以包括:计算变量文件中参数变量的偏移地址和变量文件中信号变量的偏移地址。
S103:读取MATLAB模型编译后所生成的MAP文件中变量的基地址。
通过上述过程,便生成了描述层次变量、输入变量、输出变量、参数变量、信号标签变量等的变量文件。其中,MAP文件为MATLAB模型代码编译后生成的变量内存地址描述文件。读取MAP文件中变量的基地址包括:读取MAP文件中参数变量的基地址和信号变量的基地址。
S104:根据变量的基地址和变量文件中对应的变量的偏移地址确定变量的实际地址。
其中,根据变量的基地址和变量文件中对应的变量的偏移地址确定变量的实际地址可以包括:将参数变量的基地址与该参数变量的偏移地址相加,得到参数变量的实际地址;将信号变量的基地址与该信号变量的偏移地址相加,得到信号变量的实际地址。
本发明实施例提供的MATLAB模型变量的剖析方法,通过目标语言编译器TLC读取RTW内存结构,生成描述MATLAB模型中模块层次关系和变量属性的变量文件,并且计算变量文件中变量的偏移地址,读取MATLAB模型编译后所生成的MAP文件中变量的基地址,根据变量的基地址和变量文件中对应的变量的偏移地址确定变量的实际地址。本发明提供的剖析方法中,由于RTW内存结构是描述MATLAB模型属性的内存结构,RTW内存结构中包括了所有的模型信息,因此,生成变量的数量大大增加。并且,由于TLC对RTW内存结构是按内存数据结构的方式直接访问,而非文本查找解析的方式,从RTW内存结构中能够直接读取用户自定义的复杂类型的变量所占用内存的大小和维数,所以模型变量剖析效率大大提高。
与上述方法相对应,本发明实施例还提供了一种MATLAB模型变量的剖析装置,图2示出了该装置的结构示意图,该装置可以包括:第一读取单元101、文件生成单元102、计算单元103、第二读取单元104和确定单元105。其中:
第一读取单元101,用于通过目标语言编译器TLC读取RTW内存结构。
文件生成单元102,用于生成包括描述MATLAB模型中模块的层次关系和变量属性的变量文件。
计算单元103,用于计算变量文件中变量的偏移地址。
第二读取单元104,用于读取MATLAB模型编译后所生成的MAP文件中的变量的基地址。
确定单元105,用于根据变量的基地址和变量文件中对应的变量的偏移地址确定变量的实际地址。
其中,RTW内存结构是描述MATLAB模型属性的内存结构,TLC通过内存访问的方式读取RTW内存结构,RTW内存结构中包含了模型中所有的描述信息,由于它天然存在于Matlab模型的后台中,因此,只要MATLAB模型打开,便可以通过TLC直接读取。
RTW内存结构包括:子系统Subsystem结构、数据输出端口DataOutputPort结构、模块输出BlockOutputs结构、数据输入端口DataInputPort结构、模型参数ModelParameters结构、参数Parameters结构和信号标签SigLabel结构。
RTW内存结构中包含的模型信息有:MATLAB模型中模块之间的层次关系信息、模块参数属性信息、模块输入输出信号属性信息、子系统输入输出信号属性信息、信号测试点属性信息和信号标签属性信息等。
进一步的,文件生成单元102包括:第一生成子单元、第二生成子单元、第三生成子单元、第四生成子单元和第五生成子单元。其中:
第一生成子单元,用于根据RTW内存结构中的Subsystem结构生成模块之间的层次关系。
第二生成子单元,用于根据RTW内存结构中的DataOutputPort结构和模块输出BlockOutputs结构生成模块的输出变量和子系统的输出变量。
第三生成子单元,用于根据RTW内存结构中的DataInputPort结构生成模块的输入变量和子系统的输入变量。
第四生成子单元,用于根据RTW内存结构中的ModelParameters结构和Parameters结构生成模块参数变量。
第五生成子单元,用于根据RTW内存结构中的SigLabel结构生成信号标签变量或测试点变量。
进一步的,计算单元103包括:第一计算子单元和第二计算子单元,第二读取单元104包括:第一读取子单元和第二读取子单元,确定单元105包括:第一确定子单元和第二确定子单元。其中:
第一计算子单元,用于计算变量文件中参数变量的偏移地址。
第二计算子单元,用于计算变量文件中信号变量的偏移地址。
第一读取子单元,用于读取MATLAB模型编译后所生成的MAP文件中参数变量的基地址。
第二读取子单元,用于读取MATLAB模型编译后所生成的MAP文件中信号变量的基地址。
第一确定子单元,用于将参数变量的基地址与该参数变量的偏移地址相加,得到参数变量的实际地址。
第二确定子单元,用于将信号变量的基地址与该信号变量的偏移地址相加,得到信号变量的实际地址。
本发明实施例提供的MATLAB模型变量的剖析装置中,由于RTW内存结构是描述MATLAB模型属性的内存结构,RTW内存结构中包括了所有的模型信息,因此,生成变量的数量大大增加。并且,由于TLC对RTW内存结构是按内存数据结构的方式直接访问,而非文本查找解析的方式,从RTW内存结构中能够直接读取用户自定义的复杂类型的变量所占用内存的大小和维数,所以模型变量剖析效率大大提高。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。