应用层模型模块化且模块之间相互关联

        当你模型有一些常量(主要是标定量或者常数)想用别的模型内已经定义好的量,这时模型之间该怎么关联呢?模型和模型之间的输入输出信号如何关联?

应用层模型模块化:为什么需要做这个事情,在平时工作中,随着一些功能策略的复杂,或者需求增多,需要增加各种功能,会让模型越做越大,这时会涉及软件架构,应当把模型可以按照硬件的不同系统以子系统的形式区分开来。然而把所有子系统放在一个模型内,每次只要有一小点改动,在生成代码时整个模型都会参与编译,时间会非常长,而模型模块化之后,未改动的模块不需要再参与编译,将大大提高软件集成的效率。

        下面以一个简单的模型例子来解答上述问题。

如图,首先创建一个模型包含3个子系统和一个状态机,为了阐述功能,模型我们尽可能简单。

 该模型的输入的两个信号一个来自底层传感器的采集信号,一个来自CAN通讯信号,输出信号一个给到底层驱动执行器,一个信号为CAN通讯,通过CAN通讯和其他控制器进行交互。

A,B,C是应用层模型策略,想象模型非常庞大,急需要模块化以此来提高软件集成效率。

我们将分为3个模块。

A模块如下图:

 注意,A模块有3个标定量,我们需要把该3个标定量和输出量aswo_A在sldd文件中进行定义。

为A模块创建sldd文件

 创建后在sldd文件内定义上面的4个量,如下图

 注意aswo_A  在属性中设置为全局输出变量,因为该变量要给其他模块用,运行以下发现报错,上面定义的量未定义,这是因为模型和sldd文件还没有关联起来,

在模型空白处点击右键,找到“Model Properties”,找到Data选项,选择“Browse”,找到刚刚定义的sldd文件进行关联

 再点击运行,发现红框报错都消失了,

 B模块:

 B模块内部还有变量,如图:

 我们发现,有新的变量caliD,也有A模块中出现的caliA变量,我们只需要创建B模块的sldd文件,把新的变量定义好,而A模块出现的变量可以将A模块的sldd文件关联进来即可。

另外,由于B模块的输入信号来自A模块的输出信号,故也需要在B模块的输入信号线属性(这个时候不要去sldd中定义了,不然关联A模块的sldd文件后,会造成A模块的输出信号有2个定义而矛盾)中对其进行定义(将aswo_A定义为全局变量输入),这样B模块的输入信号就和A模块的输出模块相关联了,同时也需要把B模块的输出信号进行全局变量输出,如下图所示:

 

 将新创建的B模块的sldd文件与B模型进行关联,如果现在运行模型,将会报错,因为B模型用的A模型的变量caliA还没有进行关联,如下图进行关联:

 点击ADD,找到A模块的sldd文件

 运行模型如果还是找不到,模型需要重启再运行,

B模块中输入信号(即A模块输出信号的定义):

 B模块模型运行后:

 

 同理可得C模块:

 

 按上述操作再做一遍,运行模型:

 到此,模型模块化及相互之间的关联操作完毕

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值