在各种应用中,基于消息的通信,例如控制系统架构,其中由于系统的复杂性,其中集中式架构替换为分布式架构。在分布式架构中,系统的多个组件通过共享网络进行通信。
分布式架构包含以下三个要素:
组件 - 表示使用定义的I / O接口执行一组功能或算法的设计的分区。通常,组件异步生成事件和数据。
接口——提供系统组件通信的共享边界。为了提供异步通信,消息是将事件与相关数据结合起来的有用建模构件。
中间件——提供组件所需的服务,以支持跨共享网络的异步通信。金宝app
下图显示了分布式体系结构及其元素的组成。
在建模此类架构时,通常模拟清晰可识别,可重用和可部署的组件。为了实现组件之间的基于异步事件的通信,请使用消息发送和接收接口。模型中间件,以方便基于消息发送和接收组件的数量表示组件的连接的网络拓扑,例如一对多,多对一或多对多。例如,看到建立多个发送方和接收方的共享通信通道.
要了解如何使用Simulink模拟分布式架构金宝app®,simevents.®, Stateflow®,见下面的插图。该图示包括两个消息发送和两个消息接收组件,该组件被创建为引用的模型。使用Simulink发送和接收接口的模型组件金宝app发送和收到块。如果发送和接收接口涉及状态或需要决策逻辑,请使用状态流程图。
在对组件和接口建模之后:
通过使用SimEvents对中间件建模来模拟分布式体系结构的行为。使用SimEvents库中的块,您可以建模自定义路由和通信模式,例如合并、延迟、分发和广播消息,并研究中间件对通信网络的影响。
为您的组件(包括接口)生成代码,并连接到您的中间件或操作系统通信API。
让我们首先了解邮件块如何工作。创建使用消息的模型,使用发送块来转换数据和发送消息收到块接收并将消息转换为数据。一个简单的例子,展示了如何发送和收到块的工作,看到动画和理解发送和接收消息.
用发送和收到块为模型消息发送和接收组件的接口。有关显示创建发送和接收接口的基础的一个简单示例,请参阅建立软件组件之间的消息发送和接收接口.要了解如何为同一模型生成代码,请参阅生成c++消息以在Simulink组件之间通信金宝app(嵌入式编码).
您可以进一步修改自定义行为的发送和接收接口。例如,可以将执行接收接口的时间同步到数据可用的时间。有关更多信息,请参见模型在消息可用性上运行的消息接收接口.
建模后,为发送和接收接口生成代码,并将其连接到中间件或操作系统通信API。有关为顶级模型生成代码的示例,并允许应用程序在使用外部消息协议服务的分布式系统中通信(例如,DDS,ROS,Someip或POSIX消息),请参阅生成c++消息在Simulink和操作系统或中间件之间通信金宝app(嵌入式编码).
用队列块存储,排序和队列消息。这队列块允许您指定消息存储容量以及消息转换的覆盖和排序策略。下面是一个简单的示例,它演示了如何使用队列块工作,看到使用队列块来管理消息.
您还可以使用SimEvents来建模和模拟通信网络上的中间件效果。使用SimEvents库提供的块来建模消息路由、点对点通信、无线通信、包丢失和信道延迟。有关SimEvents的更多信息,请参见Simulink模型中的离散事件仿真金宝app(SimEvents).
有关可以由SimEvents建模的基本通信模式,请参见使用SimEvents建模消息通信模式.您可以使用这些模式的组合来创建更复杂的通信行为。有关具有多个消息发送和接收组件以及具有延迟的理想共享信道的系统示例,请参见建立多个发送方和接收方的共享通信通道.要查看带有信道故障和数据包丢失的共享无线通道的模型,请参阅基于丢包和信道故障的无线消息通信模型.
要查看演示如何对更复杂的网络行为(例如使用CSMA/CD协议的以太网通信网络)建模的示例,请参见用CSMA/CD协议建立以太网通信网络模型.
请注意
SimEvents块不支持代码生成。金宝app