主要内容

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

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

在本例中,在两个组件之间构建基于消息的通信。发送组件发送数据,接收组件消耗数据。在此场景中,send组件发送消息后,将消息存储在队列中。接收组件根据它所代表的逻辑提取消息。

两个模型块,标记为发送组件和接收组件,表示通过消息行连接的组件。基于消息的通信是通过连接到根级Outport和Inport块的Send块和Receive块实现的。

有关为模型生成C或c++代码的更多信息,请参见生成c++消息在Simulink组件之间通信数据(嵌入式编码)而且生成C消息在Simulink组件之间通信数据(嵌入式编码)

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

发送组件

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

要为基于消息的通信准备Send组件,可以使用发送块连接到根级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组件的组合模型。模型块,发送组件和接收组件,引用模型mSend而且mReceive,分别。

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

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

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

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

另请参阅

||||

相关的话题

Baidu
map