一种将C代码封装成FMU的方法及装置制造方法及图纸

技术编号:28129911 阅读:35 留言:0更新日期:2021-04-19 11:50
本发明专利技术公开了一种将C代码封装成FMU的方法及装置,所述方法包括:在接收到封装请求的情况下,获取所述封装请求中包含的待封装C代码;基于FMI标准接口将所述待封装C代码封装为动态链接库文件;基于预设的描述性模板生成与所述待封装C代码对应的描述性文件;对所述动态链接库文件和所述描述性文件进行打包,得到FMU。上述过程中,将待封装C代码基于FMI标准接口进行封装,基于FMI标准中的对应接口获取待封装C代码中的输出结果,由于预先对待封装C代码进行封装,输出结果的获取不再受FMU中代码形式的限制,在联合仿真过程中,即使基于C代码编写相关模块,采用上述方法封装成FMU后,也可以实现联合仿真。以实现联合仿真。以实现联合仿真。

【技术实现步骤摘要】
一种将C代码封装成FMU的方法及装置


[0001]本专利技术涉及数据处理
,尤其涉及一种将C代码封装成FMU的方法及装置。

技术介绍

[0002]传统的情况下,多个部门协作可能要使用统一的建模工具,当用户希望编写更加灵活的算法或使用已有成熟算法时,建模工具可能不能满足用户的需求。就会出现系统的不同模块,使用工具可能不统一,例如某些算法是通过C代码实现的。
[0003]用户希望将各个模块联合仿真,以验证各个模块集成后整体运行情况时,由于某些模块基于C代码实现,导致不能实现联合仿真。

技术实现思路

[0004]有鉴于此,本专利技术提供了一种将C代码封装成FMU的方法及装置,用以解决现有技术中用户希望将各个模块联合仿真,以验证各个模块集成后整体运行情况时,由于某些模块基于C代码实现,导致不能实现联合仿真问题。具体方案如下:
[0005]一种将C代码封装成FMU的方法,包括:
[0006]在接收到封装请求的情况下,获取所述封装请求中包含的待封装C代码;
[0007]基于FMI标准接口将所述待封装C代码封装为动态链接库文件;
[0008]基于预设的描述性模板生成与所述待封装C代码对应的描述性文件;
[0009]对所述动态链接库文件和所述描述性文件进行打包,得到FMU。
[0010]上述的方法,可选的,基于FMI标准接口将所述待封装C代码封装为动态链接库文件,包括:
[0011]将所述待封装C代码的用户算法进行封装,得到业务Cpp;
[0012]将预设的FMI模板文件与目标Cpp文件中的对应接口建立关联,其中,所述目标Cpp文件用于调用所述业务Cpp;
[0013]基于预设的编译器对所述业务Cpp、所述预设的FMI模板文件和所述目标Cpp文件进行编译,得到动态链接库文件。
[0014]上述的方法,可选的,将所述待封装C代码的用户算法进行封装,得到业务Cpp,包括:
[0015]读取所述待封装C代码中参数,将所述参数添加到Init(param)中;
[0016]读取所述待封装C代码中的输入单数,将所述输入参数添加到SetValue(param)中;
[0017]读取所述待封装C代码中的运算逻辑,将所述运算逻辑添加到DoStep()中;
[0018]读取所述待封装C代码中的输出结果,将所述输出结果基于GetValue()反馈。
[0019]上述的方法,可选的,基于预设的描述性模板生成与所述待封装C代码对应的描述性文件,包括:
[0020]获取所述预设的描述性模板中包含的各个参数,其中,所述各个参数至少包括:
FMU基本属性、ModelExchange和CoSimulation节至少一个、ModelVariables节和ModelStructure节;
[0021]设置所述FMU基本属性中的GUID;
[0022]对所述业务Cpp进行解析,获取与所述ModelVariables节和所述ModelStructure节相关联的参数,将所述参数添加到所述ModelVariables节和所述ModelStructure节。
[0023]上述的方法,可选的,所述FMU中还包括:Model.png、Documentation、Sources和Resources中的至少一个。
[0024]一种将C代码封装成FMU的装置,包括:
[0025]获取模块,用于在接收到封装请求的情况下,获取所述封装请求中包含的待封装C代码;
[0026]封装模块,用于基于FMI标准接口将所述待封装C代码封装为动态链接库文件;
[0027]生成模块,用于基于预设的描述性模板生成与所述待封装C代码对应的描述性文件;
[0028]打包模块,用于对所述动态链接库文件和所述描述性文件进行打包,得到FMU。
[0029]上述的装置,可选的,所述封装模块包括:
[0030]封装单元,用于将所述待封装C代码的用户算法进行封装,得到业务Cpp;
[0031]关联单元,用于将预设的FMI模板文件与目标Cpp文件中的对应接口建立关联,其中,所述目标Cpp文件用于调用所述业务Cpp;
[0032]编译单元,用于基于预设的编译器对所述业务Cpp、所述预设的FMI模板文件和所述目标Cpp文件进行编译,得到动态链接库文件。
[0033]上述的装置,可选的,所述封装单元包括:
[0034]第一读取子单元,用于读取所述待封装C代码中参数,将所述参数添加到Init(param)中;
[0035]第二读取子单元,用于读取所述待封装C代码中的输入单数,将所述输入参数添加到SetValue(param)中;
[0036]第三读取子单元,用于读取所述待封装C代码中的运算逻辑,将所述运算逻辑添加到DoStep()中;
[0037]第四读取子单元,用于读取所述待封装C代码中的输出结果,将所述输出结果基于GetValue()反馈。
[0038]上述的装置,可选的,所述生成模块包括:
[0039]获取单元,用于获取所述预设的描述性模板中包含的各个参数,其中,所述各个参数至少包括:FMU基本属性、ModelExchange和CoSimulation节至少一个、ModelVariables节和ModelStructure节;
[0040]设置单元,用于设置所述FMU基本属性中的GUID;
[0041]获取和添加单元,用于对所述业务Cpp进行解析,获取与所述ModelVariables节和所述ModelStructure节相关联的参数,将所述参数添加到所述ModelVariables节和所述ModelStructure节。
[0042]上述的装置,可选的,所述FMU中还包括:Model.png、Documentation、Sources和Resources中的至少一个。
[0043]与现有技术相比,本专利技术包括以下优点:
[0044]本专利技术公开了一种将C代码封装成FMU的方法及装置,所述方法包括:在接收到封装请求的情况下,获取所述封装请求中包含的待封装C代码;基于FMI标准接口将所述待封装C代码封装为动态链接库文件;基于预设的描述性模板生成与所述待封装C代码对应的描述性文件;对所述动态链接库文件和所述描述性文件进行打包,得到FMU。上述过程中,将待封装C代码基于FMI标准接口进行封装,基于FMI标准中的对应接口获取待封装C代码中的输出结果,由于预先对待封装C代码进行封装,输出结果的获取不再受FMU中代码形式的限制,在联合仿真过程中,即使基于C代码编写相关模块,采用上述方法封装成FMU后,也可以实现联合仿真。
附图说明
[0045]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种将C代码封装成FMU的方法,其特征在于,包括:在接收到封装请求的情况下,获取所述封装请求中包含的待封装C代码;基于FMI标准接口将所述待封装C代码封装为动态链接库文件;基于预设的描述性模板生成与所述待封装C代码对应的描述性文件;对所述动态链接库文件和所述描述性文件进行打包,得到FMU。2.根据权利要求1所述的方法,其特征在于,基于FMI标准接口将所述待封装C代码封装为动态链接库文件,包括:将所述待封装C代码的用户算法进行封装,得到业务Cpp;将预设的FMI模板文件与目标Cpp文件中的对应接口建立关联,其中,所述目标Cpp文件用于调用所述业务Cpp;基于预设的编译器对所述业务Cpp、所述预设的FMI模板文件和所述目标Cpp文件进行编译,得到动态链接库文件。3.根据权利要求2所述的方法,其特征在于,将所述待封装C代码的用户算法进行封装,得到业务Cpp,包括:读取所述待封装C代码中参数,将所述参数添加到Init(param)中;读取所述待封装C代码中的输入单数,将所述输入参数添加到SetValue(param)中;读取所述待封装C代码中的运算逻辑,将所述运算逻辑添加到DoStep()中;读取所述待封装C代码中的输出结果,将所述输出结果基于GetValue()反馈。4.根据权利要求1所述的方法,其特征在于,基于预设的描述性模板生成与所述待封装C代码对应的描述性文件,包括:获取所述预设的描述性模板中包含的各个参数,其中,所述各个参数至少包括:FMU基本属性、ModelExchange和CoSimulation节至少一个、ModelVariables节和ModelStructure节;设置所述FMU基本属性中的GUID;对所述业务Cpp进行解析,获取与所述ModelVariables节和所述ModelStructure节相关联的参数,将所述参数添加到所述ModelVariables节和所述ModelStructure节。5.根据权利要求1所述的方法,其特征在于,所述FMU中还包括:Model.png、Documentation、Sources和Resources中的至少一个。6.一种将C代码封装成FMU的装置,其特征在于,包括:获取模...

【专利技术属性】
技术研发人员:张桥李京燕何子中
申请(专利权)人:北京世冠金洋科技发展有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1