主要内容

温度控制系统与信息交流

这个例子展示了如何在一个分布式系统,使用消息通信控制器管理多个传入消息以迭代的方式从不同的发送方和发送消息将命令传达给不同的接收器。控制系统管理的示例使用一个模型在两个不同的房间温度不同的恒温器。组件的建模算法基本上遵循Stateflow例子砰砰的枪声温度控制系统模型(Stateflow),而组件之间的通信是使用仿真软件建模®消息和SimEvents®块。金宝app被引用的模型控制器和温度计,颜色蓝色,软件组件将生成独立的代码,而其他组件模型环境。

模型概述

该模型包含了N相同的房间恒温器(通过多实例模型建模的块),在那里N=2是一个模型金宝app参数在仿真软件中定义数据字典文件slddMsg.sldd,与模型和参考模型。每个房间分别可以设置定位点的温度。房间的恒温器由一个控制器,远程控制所有恒温器使用相同的控制算法。

每一个恒温器的温度信息发送到控制器0.2秒,而控制器发送命令消息命令加热打开或关闭所有的恒温器1第二。一个实体输出开关(SimEvents)块从控制器将消息路由到一个恒温器根据消息总线的数据字段的deviceID。(公共汽车也在数据字典中定义和共享所有模型)。一个消息合并块从不同的恒温器将消息路由到控制器。

最初,模型是使用总线配置类型与浮点类型字段中定义的数据字典文件slddMsg.sldd。从浮点转换到定点,改变模型的数据字典slddMsg.slddslddMsgFixpt.sldd。在建模选项卡,去模型设置>模型属性>外部数据

模型很容易可伸缩的通过改变的价值N块,增加更多的实例模型,并增加实体的端口输出开关和消息合并块。每个温度计模型房间里都有一个ID参数,必须设置的值与输出端口匹配指数实体输出开关。

一个队列块(FIFO,覆盖类型队列)的缓冲消息控制器模型,模型内的队列消息中间件的控制器。在这里,一个能力N是足够好的队列与新的覆盖最古老的消息从每个发送者,假设没有消息在传输过程中损失。的能力5 * N最糟糕的情形与信息损失,需要在哪里5是控制器的样品时间除以样本的恒温器。此外,队列前面的每一个恒温器容量1自动插入并显示徽章图标夹在“1”,因为capacity-1队列自动插入的如果你不故意放置一个队列。看到使用一块队列管理信息

查看消息和事件的序列,在仿真软件将来发布的金宝app模拟选项卡,审查结果部分中,点击顺序查看器。看到顺序查看器

控制器模型

温度控制器模型,更新子系统与轮廓尺寸块首先接收消息包含从房间温度信息。温度的子系统将信息存储在两个向量选点和当前温度。然后,为每个子系统读取向量,处理信号,并通过仿真软件功能发送控制消息金宝appsendCtrlMsg

更新温度子系统是一个延伸的子系统,它的终止条件接收端口是美联储的阻塞港口的地位,这意味着它运行,直到不能再接收来自外部的消息队列(模型)。的消息数据DeviceMsg总线类型,它是在数据字典中定义文件,并有两个字段:温度的deviceID。因此,当接收块的输出信号传播的启用子系统启用端口连接到接收块港口的地位,总线选择器块分解的信号的deviceID,温度,定位点信号。的定位点温度然后信号分配给相应的向量元素相关的的deviceID。最后,向量由单位维护延迟块输出信号的启用子系统和更新温度子系统,每个子系统。

对于每一个子系统,其块设置如上所示,设置N迭代和其输入端口都是分区。Stateflow图模型的暴烈行为控制器,它类似于一个解释砰砰的枪声温度控制系统模型(Stateflow)。它的输出端口输出一个布尔信号指示是否加热。这个信号是挤在一块nonvirtual信号在公车的创造者的deviceID(集中)的迭代数量(从零开始的)。信号的函数调用者,调用模型函数金宝appSendCtrlMsg(在每个子系统)发送消息模型。

空间模型

在房间的模型中,恒温器子系统与环境进行交互。恒温器有两个输入,控制消息和定位点温度信号,和两个输出,升温速率和温度信息的控制器。获得和积分器块模拟房间的物理加热或冷却的升温速率和房间的大小。

恒温器子系统由一个温度计传感器子系统、温度计软件模型块,和一个温度致动器子系统。温度计软件模型块定期收到一个从控制器控制消息解包成一个布尔命令(开/关)温度执行机构子系统,这决定了升温速率。温度计软件也输入信号从温度计温度传感器子系统、检测模拟温度,将其转换为数字信号,并将消息发送回控制器。

温度计模型

在温度计模型中,接收块与轮廓尺寸的块接收来自外部的控制消息队列在每个时间步。消息数据分解成一个命令信号,这是一个输出,和一个的deviceID信号,必须匹配的ID参数模型。模型中的ID参数应设置块在模型顶部。Receive块的初始值设置为与MATLAB®结构的deviceID字段等于模型参数ID命令字段的值。与此同时,数字温度的信号,选点,的deviceID打包进一个nonvirtual总线信号和作为消息发送到外港。

代码生成

对于代码生成和部署,被引用的模型控制器和温度计(蓝色)可以生成独立的嵌入式c++代码,可以单独部署在嵌入式设备与消息中间件。有关更多信息,请参见生成c++消息通信仿真软件和操作系统之间数据或中间件金宝app(嵌入式编码);另请参阅使用手写的代码集成c++与POSIX消息(嵌入式编码)

消息根级尺寸/外港不支持C代码生成和代码定制。金宝app如果你需要生成C代码和调用发送消息到消息中间件API,考虑移动仿真软件的功能金宝appsendCtrlMsg正常模型和自定义名称,以便引用模型生成一个可定制的调用外部的函数。同样,接收端,考虑使用一个模型函数包含接收块前模型和参考模型中使用一个函数调用块更换接收块。金宝app

另请参阅

|||||