发明内容
有鉴于此,本发明提供一种基于Simulink的模型自动生成方法,通过对变量和基础模块进行命名规范,根据规范后的系统方程和基础模块自动对模型进行搭建,能够实现模型风格的统一,且提高模型的可读性。
为解决上述技术问题,本发明采用的技术方案为:一种基于Simulink的模型自动生成方法,包括:
制定系统变量的命名规范;
根据制定的系统变量的命名规范建立系统方程;
根据建立的系统方程调用Simulink模型库中相应的基础模块;
根据经过命名规范后的变量对相应的基础模块自动进行规范的命名;
根据经过规范命名后的基础模块搭建模型框架,每一个系统方程形成系统的一个子系统;
根据系统方程的运算规则调用Simulink模型库中相应的基础模块,生成各个子系统模型框架中的子模块。
优选地,所述变量的命名规范包括:变量的英文名称和变量的物理含义。
优选地,所述制定系统变量的命名规范具体为:
将系统中相同含义的变量定义为相同的英文名称和相同的物理含义。
优选地,所述根据制定的系统变量的命名规范建立系统方程具体为:
将系统方程中含义相同的变量用规范的相同的英文名称代替。
从上述的技术方案可以看出,本发明公开的一种基于Simulink的模型自动生成方法,首先对系统的变量进行命名规范,其次根据制定的系统变量命名规范建立系统方程,其次,根据建立的系统方程调用Simulink模型库中相应的基础模块,根据经过命名规范后的变量对相应的基础模块自动进行规范的命名,其次根据经过规范命名后的基础模块搭建系统的模型框架,形成系统的子系统,最后根据系统方程的运算规则调用Simulink模型库中相应的基础模块,生成各个子系统模型框架中的子模块,最终完成系统模型的搭建。本发明中通过对系统的变量制定命名规范,能够使得建立的系统方程的表现方式唯一,且在系统方程的建立过程中不容易出错。通过根据经过命名规范后的变量对相应的基础模块进行命名规范,能够使得基础模块的名称统一与相对应的变量相对应,使得根据命名规范后的基础模块搭建的模型具有统一的风格。通过将系统的每一个系统方程划分为一个子系统,在后期需要对模型更改时,只需对相应的子系统进行更改,大大减小了修改工作量。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种基于Simulink的模型自动生成方法,通过对变量和基础模块进行命名规范,根据规范后的系统方程和基础模块自动对模型进行搭建,能够实现模型风格的统一,且提高模型的可读性。
如图1所示,为本发明公开的一种基于Simulink的模型自动生成方法,包括:
S101、制定系统变量的命名规范;
S102、根据制定的系统变量的命名规范建立系统方程;
S103、根据建立的系统方程调用Simulink模型库中相应的基础模块;
S104、根据经过命名规范后的变量对相应的基础模块自动进行命名规范;
S105、根据经过命名规范后的基础模块搭建模型框架,每一个系统方程形成系统的一个子系统;
S106、根据系统方程的运算规则调用Simulink模型库中相应的基础模块,生成各个子系统模型框架中的子模块。
上述方法的原理为:首先,设计人员根据系统的特点和领域习惯,对系统中的所有变量进行统一的命名规范,将系统中表示相同含义的变量定义为相同的英文名称和相同的物理含义。例如:统一将系统中的变量电流i用英文字母A表示,A的物理含义为电流。若后续需要对变量进行增加、删减或修改,设计人员可以根据相同的方法对变量重新进行统一的命名规范。
其次,对系统所包含的所有方程,根据制定的系统变量的命名规范进行建立。这样即便是由不同的设计人员进行建模,形成的系统方程也是相同的。同时,如果后期需要对系统中的某个变量进行更改,只需更改该变量所在的系统方程即可,无需对整个系统进行修改。
其次,根据建立的系统方程,调用Simulink模型库中与各个变量相对应的基础模块,同时将调用出的基础模块根据经过命名规范后的变量自动进行重新命名,使基础模块的名称与相应的变量相对应。例如:原有的基础模块的名称为From1、From2、From3,经过命名规范后形成的基础模块的名称为From_v1,From_v2,From_v3,其中v1、v2、v3为变量。
其次,根据经过规范命名后的基础模块对系统模型框架进行搭建,每一个系统方程构成系统模型的一个子系统,使得每一个方程都由经过命名规范后的基础模块构成。同样,采用此种方式,即便是由不同设计人员进行建模,形成的模型框架也是相同的。
最后,根据系统方程的运算规则,调用Simulink模型库中相应的基础模块,生成各个子系统模型框架中的子模块,最终完成系统模型的搭建。
为了更好的对本发明进行说明,下面进行举例说明。
假设需要进行建模的系统包含以下方程:
首先将系统中的变量v1统一命名规范为v1,v1的物理含义为变量一,将系统中的变量v2统一命名规范为v2,v2的物理含义为变量二,将系统中的v3统一命名规范为v3,v3的物理含义为变量三。
其次,根据制定的系统变量的命名规范建立系统方程,建立的系统方程如下:
其次,根据建立的系统方程自动调用Simulink模型库中相应的基础模块,并对调用的基础模块进行规范的命名,然后根据经过规范命名后的基础模块搭建模型框架,每一个系统方程构成一个子系统,形成的模型框架如图2所示。图2中,左侧的v1、v2和v3是系统模型变量,与方程(2)左侧的变量对应。图2的中间部分Subs_v1、Subs_v2和Subs_v3为方程式对应的计算子模块,这些子模块的输入是方程中的所有变量,在子模块内部实现时,再对所需要的变量进行挑选。图2中,右侧是Subs_v1、Subs_v2和Subs_v3子模块的输出。
模型框架中使用到Simulink模型库中的From、Goto、Subsystem和BusCreator四种基本模块,可以通过调用Simulink模块的API函数(如add_block)添加子模块,并对新添加模块名称及位置进行设置,同时完成模块之间的连线。
最后,根据每个变量方程的表达式,自动生成图2中Subs_v1、Subs_v2和Subs_v3中对应的各子模块。以方程(2)中的第一个方程为例,如图3所示,首先解析方程右侧需要哪些变量作为输入,然后添加Bus Selector模块,设置其参数,使其自动从输入的所有变量中挑选需要的输入变量,例如,方程(2)中的第一个方程需要的输入变量为v2和v3,BusSelector模块就从所有的输入变量v1、v2和v3中将输入变量v2和v3挑选出,然后添加Mux模块将输入变量v2和v3组合,作为子模块的输入,然后将状态方程表达式写入子模块,如图3所示的f(u)子模块,最后根据方程类型,若需要添加积分环节,则在表达式模块输出后,自动添加积分环节,如图3所示的1/s积分模块。方程(2)中的第一个方程自动生成的子模块形式如图3所示。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。