RTCSD2017-Group-2

第二周周报

本周进行了模型的设计和建模,并与核心控制模块完成联调,生成了代码。git

模型整体设计

模型定义(来自概要设计)

Container

液体容器,用于保存各类液体github

Doser

定量器,用于量取必定量的液体设计

Heater

加热器,用于提供热水3d

Brewing Assembly

混合器,用于将咖啡,牛奶,糖和热水混合blog

Cup Feeder

杯架,用于提供纸杯接口

Conveyor Belt

传输带,用于物体传输事件

Control System

核心控制模块,用于各模块之间的调度rem

模块间接口定义(来自概要设计)

Container

SettingFlow(Input)

当前出口开关大小get

Amount(Output)

当前液体余量input

OutFlow(Output)

当前液体实际流出流量

Doser

Inflow(Input)

当前液体实际流入流量

SettingAmount(Input)

液体须要量取的量

OutFlow

当前液体实际流出流量

***DoserEvent(Output)

Doser完成操做的事件

FlowControl(Output)

控制对应容器的出口流量

Heater

SettingFlow(Input)

当前出口开关大小

OutFlow(Output)

当前热水实际流出流量

WaterAmount(Output)

当前可用热水余量

WaterTemp(Output)

当前热水温度

Brewing Assembly

WaterInput(Input)

热水流入流量

CoffeeInput(Input)

咖啡流入流量

MilkInput(Input)

牛奶流入流量

SugarInput(Input)

糖流入流量

Mixtrue(Output)

混合液体输出流量

MixFinishEvent(Output)

混合完成的事件

Cup Feeder

GetCup(Input)

须要杯子的事件

JustaCup(Output)

杯子的输出

FeedFinishEvent(Output)

供应杯子完成的事件

CupRemain(Output)

当前是否有杯子剩余

Conveyor Belt

Step(Input)

每次步进的距离

AddMixtrue(Input)

混合液体入口

AddCup(Input)

杯子入口

TakeOutEvent(Input)

杯子被拿走的事件

JustaCupofCoffee(Output)

一杯咖啡的输出

StepEvent(Output)

步进完成的事件

Control System

CoffeeRemain(Input)

当前剩余咖啡的输入

MilkRemain(Input)

当前剩余牛奶的输入

SugarRemain(Input)

当前剩糖的输入

WaterRemain(Input)

当前剩余水的输入

WaterTemp(Input)

当前水温的输入

CoffeeAmount(Output)

须要咖啡的量

MilkAmount(Output)

须要牛奶的量

SugarAmount(Output)

须要糖的量

WaterAmount(Output)

须要水的量

NextStep(Output)

每次步进的量

GetCupEvent(Output)

须要被子的事件

总体设计图

模块细节设计

Container

设计思路

容器有初始量InitAmount,最大输出流量量不超过MaxFlow
对所需输出流量进行积分即为液体量减小的值

模块设计图

Doser

设计思路

接收到SettingAmount后,为简便,保证在3s内完成。控制流量为SettingAmount/3,等待三秒后关闭流量

模块设计图

内部流程图

Heater

设计思路

加热器采用两段加热,避免长时间沸腾或者功率太大。
预设输入流量无上限,设定为SettingInFlow,减去当前输出流量,经积分后得当前可用热水余量
加热功率和输入流量带入的热量,以及输出流量带走的热量,积分的当前热水中所含热量,除以可用余量,得当前热水温度。
因为两段加热,能够保证输出的热水必定为100度。

模块设计图

内部流程图

Brewing Assembly

设计思路

当各个液体流量大于0的时候开始积分,等流量回落到0以后,开始混合,等待一段时间后输出便可。

模块设计图

内部流程图

Cup Feeder

设计思路

当接收到NeedCupEvent,而且当前仍有杯子,取出一个杯子并输出

模块设计图

内部流程图

Conveyor Belt

设计思路

若是有杯子进入传送带,杯子位置更新。若是有混合液体进入且当前杯子在指定位置,则存下混合液体。
每有一次Step,等待一段与Step成正比的时间。
若是杯子到达终点,则将杯子和混合液体一并输出,并等待TakeOutEvent。

模块设计图

内部流程图

最终交付件(Updating)

Link to GitHub

本站公众号
   欢迎关注本站公众号,获取更多信息