1.Matlab语言的Modelica仿真组件生成方法,其特征在于,包括以下步骤:步骤1:从指定的文件夹中逐一获取待转换的动态库及Matlab函数;
步骤2:分析得到每个Matlab函数的返回值类型、函数名称、函数参数列表;
步骤3:生成项目文件和源代码文件;
步骤4:为每一个Matlab函数在代码文件中生成符合Modelica使用规范的外部函数;
步骤4.1:在源代码文件中增加对原始动态库头文件的include包含;
步骤4.2:对由步骤2输出的每一个原始动态库导出函数原型,在源代码中生成一个新的函数原型,新函数返回值为整数;新函数名称由原始动态库对应的导出函数的名称转换得到;新函数的参数列表由原函数的参数列表的基础上增加原函数的返回值参数形成;
步骤4.3:生成由大括号对构成的函数体;
步骤4.4:在函数体内生成执行语句;
步骤5:将步骤3生成的项目编译成动态库文件;
步骤6:建立外部语言函数对应的mo文件,将外部函数引入到Modelica函数中,生成Modelica组件。
2.根据权利要求1所述的Modelica仿真组件生成方法,其特征在于,步骤1采用默认模式或配置文件模式获取待转换的动态库及Matlab函数;
采用默认模式时,遍历指定文件夹中扩展名为dll的动态库文件,对每一个动态库文件,在当前文件夹中查找与动态库文件主文件名相同且扩展名为h的头文件,没有则记录错误,处理下一个动态库文件,直到所有动态库文件处理完后结束;
采用配置文件模式时,读取配置文件,根据配置文件中的记录的文件名,依次读取动态库文件和对应的头文件,对每一个头文件采用文本分析方式去掉注释,然后按照标识符提取状态转换图方式分析得到标识符列表,然后从列表中倒序读取获取Matlab函数原型。
3.根据权利要求2所述的Modelica仿真组件生成方法,其特征在于,步骤2包括:步骤2.1:首先从标识符列表中获取函数的返回值类型和函数名称;
步骤2.2:由左括号开始,按照函数参数分析状态转换图确定函数包括参数类型和参数名称的参数列表。
4.根据权利要求3所述的Modelica仿真组件生成方法,其特征在于,所述函数参数分析状态转换图包括状态集合{0, 1, 2, 3, 5, 7, 8, 9, 11, 12, 13, 22},状态0为初始状态,函数参数分析的状态处理流程包括:
1)状态0下,输入空格继续保持状态0;状态0下输入字母,进入状态1;状态0下输入“)”,进入状态8;状态0下其它情况进入状态9;
2)状态1下,输入字母、数字继续保持状态1;状态1下输入空格,进入状态2;状态1下输入“*”,进入状态3;状态1下输入“,”,进入状态5;状态1下输入“)”,进入状态8;状态1下输入“(”、“;”或其它字符,进入状态9;
3)状态2下,输入空格继续保持状态2;状态2下输入字母,进入状态11;状态2下输入“*”,进入状态3;状态2下输入“,”进入状态5;状态2下输入“)”,进入状态8;状态2下输入其它字符,进入状态9;
4)状态3下,输入“*”、空格继续保持状态3;状态3下输入“,”,进入状态5;状态3下输入“)”,进入状态8;状态3下输入字母,进入状态12;状态3下输入其它字符,进入状态9;
5)状态5下,输入空格继续保持状态5;状态5下输入字母,进入状态1;状态5下输入其它字符,进入状态9;
6)状态7下,输入空格继续保持状态7;状态7下输入其它字符,进入状态9;
7)状态8下,输入空格继续保持状态8;状态8下输入“;”,进入状态7;状态8下输入其它字符,进入状态9;
8)状态9下,返回‑1,结束状态处理流程;
9)状态11下,输入字母、数字继续保持状态11;状态11下输入空格,进入状态22;状态11下输入“,”,进入状态5;状态11下输入“)”,进入状态8;状态11下输入其它字符,进入状态9;
10)状态12下,输入字母、数字继续保持状态12;状态12下输入空格,进入状态13;状态
12下输入“,”,进入状态5;状态12下输入“)”,进入状态8;状态12下输入其它字符,进入状态
9;
11)状态13下,输入空格继续保持状态13;状态13下输入“,”,进入状态5;状态13下输入“)”,进入状态8;状态13下输入其它字符,进入状态9;
12)状态22下,输入空格继续保持状态22;状态22下输入字母,进入状态11;状态22下输入“,”,进入状态5;状态22下输入“)”,进入状态8;状态22下输入其它字符,进入状态9。
5.根据权利要求4所述的Modelica仿真组件生成方法,其特征在于,步骤3包括:步骤3.1:用程序方式生成Mingw规范的项目文件;
步骤3.2:生成C语言源代码文件,源代码文件文件名由原始动态库文件名转换得到;并将该源代码文件加入到步骤3.1生成的项目中。
6.根据权利要求5所述的Modelica仿真组件生成方法,其特征在于,步骤6包括:步骤6.1:根据外部函数名生成Modelica语言函数名,按照一定规则生成函数名前缀,避免重名;
步骤6.2:根据参数的输入、输出类型和数据类型,按照语言规范映射成Modelica语言的输入Input、输出Output及对应的数据类型;
步骤6.3:生成external引用的函数名称、动态库文件路径与头文件路径,并生成XML格式的组件安装引导文件,相关的动态库文件、静态库文件、mo文件、xml文件统一输出到相同的文件夹并根据应用需要决定是否压缩打包。
7.根据权利要求6所述的Modelica仿真组件生成方法,其特征在于,步骤4.4中,对采用mwArray数据类型的动态库,在函数体内首先为新生成函数参数列表中的每一个参数,生成一个mwArray类型的临时变量,并根据参数组合类型,为新生成的临时变量用不同赋值方式赋值;用临时变量对原始动态库函数进行调用,对调用结果为mwArray类型变量,将mwArray逆向转换为函数原型的参数类型后返回。