主要内容

建立软件组件间的消息收发接口

这个示例展示了如何对运行在不同应用程序中的软件组件之间基于消息的通信进行建模。该示例还展示了如何为c++代码生成准备模型组件。

在本例中,基于消息的通信是在两个组件之间构建的。发送组件发送数据,接收组件使用数据。在这个场景中,send组件发送消息后,它们被存储在一个队列中。接收组件根据它所表示的逻辑提取消息。

两个模型块,标记为发送组件和接收组件,表示由消息线连接的组件。基于消息的通信是使用连接到根级输出和导入块的发送块和接收块来实现的。

有关为模型生成C或c++代码的更多信息,请参见生成c++消息来在Simulink组件之间进行通信金宝app(嵌入式编码)生成C消息在Simulink组件之间进行通信金宝app(嵌入式编码)

您还可以为每个组件生成c++代码,代码包含必要的软件接口,这些接口足以使您连接到操作系统或消息中间件。有关更多信息,请参见生成c++消息在Simulink和操作系统或中间件之间进行通信金宝app(嵌入式编码)

发送组件

Send Component中的算法可以包含任何复杂度的逻辑。在这个例子中,一个简单的正弦波块在一个子系统中被用作信号源。的样品时间块的参数设置为0.1

要准备发送组件进行基于消息的通信,请执行以下步骤发送块连接到根级Outport块。Send模块转换数据信号并发送消息。

为代码生成准备Send组件,在模型配置参数中:

  1. 解算器窗格中,在解算器的选择节,类型被设置为固定步

  2. 固定的大小被设置为0.1

  3. 代码生成窗格中,系统目标文件被设置为ert.tlc语言c++。

  4. 模型保存为mSend

接收组件

在接收组件中,Scope块用于表示接收消息的算法。

要准备接收组件,将导入块连接到收到块。Receive块接收消息并将其转换为信号数据。默认情况下,样品时间参数为-1

要为代码生成准备接收组件,请在模型配置参数中:

  1. 解算器窗格中,在解算器的选择节,类型被设置为固定步

  2. 固定的大小被设置为0.1

  3. 代码生成窗格中,系统目标文件被设置为ert.tlc语言c++。

  4. 模型保存为mReceive

使用序列查看器块可视化组件之间的消息转换

这是一个包含Send和Receive组件的组合模型。模型块,发送组件和接收组件,参考模型mSendmReceive,分别。

模拟模型。观察默认情况下插入的队列。消息行上方的图标表示默认队列。默认队列的容量为1并启用消息覆盖策略。您可以通过在组件之间使用queue块来定制队列。有关更多信息,请参见使用队列块来管理消息

打开顺序查看器块。该块允许您可视化消息转换事件和消息所携带的数据。

序列查看器块窗口在左边的竖条中显示模拟时间。每个time网格行包含在同一模拟时间发生的事件。每个消息转换事件都由标记有消息数据值的箭头表示。有关序列查看器块的更多信息,请参见使用序列查看器来可视化消息、事件和实体

在序列查看器块中,向上滚动或单击参加第一场活动左边的图标。注意,在时间为0时,Send块发送一个带有数据值的消息0到Receive块的时间0.1块发送另一个带有数据值的消息0.0998.块发送一个消息在每个0.1仿真时间。

另请参阅

||||

相关的话题