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

本站公眾號
   歡迎關注本站公眾號,獲取更多信息