自動售賣機結構

2008-07-23 7:07 am
因為今年會考既題目其中一條係要整個自動售賣機既模型,所以希望各位可以解答我一下自動售賣機操作原理及運作方法,最好係用機械式操作既,萬分感謝

回答 (1)

2008-08-01 12:18 am
✔ 最佳答案
嵌入式系统是消费电子领域使用最多的系统之一,我们这里给出一个利用MUCOS RTOS的自动售卖系统的设计方案。整个方案假设系统为固体商品销售系统,并且以硬币为主要交易方式。
3.1系统需求
图1给出了自动售卖系统的基本结构。


硬币投放口P1J、P5J,P1Y
:Port_1J
:Port_5J
:Port_1Y
硬币总额决策器
: Port_Deliver
:Port_Refund
: Port_ExRefund
: Port_Collect
硬币退还通道
货物通道
货物容器
LCD显示
――――――――――――――――――――――――――――――――――――
选择商品
图2给出了自动售卖系统的顺序状态图。


处理器启动
加载并初始化整个系统
↓时间
:Read_Port_Slot

No signal
顾客选择商品
顾客插入硬币
判断累计货币数额(PM)与商品价格(PG)的差异
if (PM<PG)
if(PM=PG)?
计算多余的货币金额
if(PM>PG)
发送顾客购买的商品
if(PM=PG)
if(PM>=PG)
找零
结束复位
自动售卖系统中的任务及其同步模型

Task_ReadPorts只在信号量Semfinish被Task_Collect、Task_Refund或者Task_ExRefund复位并发送的时候才开始动作。该任务通过发送SemMKey1访问临界资源SemAmtCount,然后等待来自Port_1J、Port_5J和Port_1Y的信号。通过发送信号给SemAmtCount,开始计算金额。在收到等于商品价格的金额时,发送事件标志Semflag1给Task_Deliver。如果金额大于商品价格还要发送Semflag2给Task_ExRefund。如果金额没有达到足够数量或者操作超时,则放松Semflag3给Task_Refund。同时,还要发送Semflag4给Task_Display。
Task_Deliver等待获取SemAmtCount和Semflag1释放SemDeliver,使得 Task_Collect可以操作电机投放商品。同时发送Semflag4给Task_Display更新邮槽消息。同理,Task_Refund和Task_ExRefund在获得SemAmtCount和Semflag2/3后,释放SemRefund/SemExRefund,使得Task_Collect投放硬币。同时还要更新邮槽消息。
Task_Display等待获取Semflag4。在任务向Port_Display发送字节流之前,获得互斥量SemMKey2,并在发送后释放该互斥量。该任务显示消息指针*Collect、*Deliver、*Refund和*ExRefund所指向的邮槽消息。
Task_TimeDataDisply在每1000个系统时钟节拍后超时,复位为1ms。超时后更新指针*tiemData所指的日期时间,并将值发送到邮槽*timeData中去。


收錄日期: 2021-04-11 16:39:09
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20080722000051KK03395

檢視 Wayback Machine 備份