国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于LPC2134和UCOSII的自動售貨機狀態機模型

電子設計 ? 2018-10-08 08:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

由于售貨機的功能不斷增多,售貨機控制系統也相應得不斷變得龐大,這就使原來的面向過程的開發方法變得越來難以擴展和維護,根據自動狀態機的理論,提出一種在售貨機上的狀態機模型,該模型對系統狀態進行抽象和分離,建立了系統狀態表和狀態轉換表,是一種網狀的狀態機模型。根據系統事件和當前狀態來查找系統狀態轉換表,如果有匹配項,則進行狀態轉換。經過實驗表明,該模型能解決系統的代碼龐大問題,并且使系統開發變得易于維護。

1 概述

自動售貨機是一種全新的商業零售形式,20世紀70 年代自日本和歐美發展起來。現在,自動售貨機產業正在走向信息化并進一步實現合理化。例如實行聯機方式,通過GPRS 將自動售貨機內的庫存信息及時地傳送各營業點的電腦中,從而確保 了商品的發送、補充以及商品選定的順利進行。并且,為防止地球暖化,自動售貨機的開發致力于能源的節省,節能型清涼飲料自動售貨機成為該行業的主流。在夏季電力消費高峰時,這種機型的自動售貨機即使在關掉冷卻器的狀況下也能保持低溫,與以往的自動售貨機相比,它能夠節約10-15%的電力。進入21 世紀 時,自動售貨機也將進一步向節省資源和能源以及高功能化的方向發展。這就導致了售貨機的控制系統(VenclingMachine Controller,VMC)的復雜度大大增加。先前的基于匯編程序的VMC控制系統雖然效率高,但是存在著可擴展性差,程序結構性差,不易維護等缺點。因此本文提出了一種基于ARM7的新型VMC主板的有限狀態機的結構,對VMC 進行改進。本文所用的硬件環境為使能LPC2134 的ARM7 主板,有一個RS232 串口接GPRS 模塊,一個MDB 總線模塊,一個電機驅動模塊,外接一個顯示和按鍵模塊。

軟件方面采用的操作系統ucosII操作系統,這是一種開源的實時多任務操作系統,在數據同步和互斥上提供了信號量,消息隊列,消息郵箱等功能,本文主要采用的是信號量和消息隊列。

總的來說,有限狀態機系統,是指在不同階段會呈現出不同的運行狀態的系統,這些狀態是有限的、不重疊的。這樣的系統在某一時刻一定會處于其所有狀態中的一個狀態,此時它接收一部分允許的輸入,產生一部分可能的響應,并且遷移到一部分可能的狀態。 一個有限狀態機(FSM)是一個五元組,M=(S,G,E,A,T)。

State(狀態),就是一個系統在其生命周期中某一時刻的運行情況,此時,系統會執行一些動作,或者等待一些外部輸入。

Guard(條件),狀態機對外部消息進行響應的時候,除了需要判斷當前的狀態,還要判斷跟這個狀態相關的一些條件是否成立。這種判斷稱為guard("條件")。guard 通過允許或者禁止某些操作來影響狀態機的行為。

Event(事件),就是在一定的時間和空間上發生的對系統有意義的事情。

Action(動作), 當一個Event 被狀態機系統分發的時候,狀態機用Action("動作")來進行響應,比如修改一下變量的值、進行輸入輸出、產生另外一個Event或者遷移到另外一個狀態等等。

Transition(遷移), 從一個狀態切換到另一個狀態被稱為Transition("遷移")。引起狀態遷移的事件被稱為triggering event ("觸發事件"),或者被簡稱為trigger(觸發)。

有限狀態機一般有2 種表示方式:狀態轉移表和狀態轉移圖。通常用有向圖來表示有限狀態機,其節點代表狀態。如圖1 所示,售貨機售貨流程一共分5 個狀態,每個狀態都是根據消息的不同來進行轉換。

圖1 自動售貨機中的狀態轉換圖:

2 實現方式

2.1 嵌套Switch方式

即先定義一個狀態和消息的枚舉,再通過嵌套的2層switch-case結構實現,外層switch-case結構判斷狀態,雖然這種方法結構簡單,便于理解,但是代碼冗長,不便維護,因此不建議在復雜雜的狀態機下運行。

2.2 狀態表方式

這種實現方法對第一種方法進行了改良,根據State,Event 做成二維表格,表格中的項表示Action和Transmission,狀態采用枚舉量。這種方法結構簡單,便于理解,代碼比較簡練,效率最高,但是代碼結構不是太好。

2.3 用函數指針作為狀態

這種方法用函數地址代替state 值,比較直觀,可以方便地增加entry/exit 操作,并且效率較高。

3 具體實現

綜合以上幾種方式,本文提出一種結合第二種和第三種方式的狀態機實現方式,即創立一個狀態表和一個狀態轉換表,其中狀態表中有exit,entry,default處理方法,當進入該狀態時,先執行entry方法,然后在狀態運行時執行default方法,退出狀態時執行exit方法,狀態之間的切換是通過狀態轉換表實現的,即首先狀態等待一個系統消息,如果在狀態轉換表中對應當前狀態和當前消息的項,則進行消息轉換,具體實現如下3.1 數據結構。

首先定義一個大小為10 的系統消息隊列用來接收外設和系統消息:

3.2 狀態轉換算法

先建立一個狀態轉換表, 建立一個FSM_STATE_TRAN 指針數組。即FSM_STATE_TRAN*fsm_tran[7];將每個狀態下的轉換項都存在該狀態下的鏈表中。

在有限狀態機中,狀態是通過系統消息和當前狀態來查找狀態轉換表,如果有對應的項則進行轉換,沒有則繼續當前狀態:算法如下:

4 模型分析

4.1 擴展性

為狀態機添加新狀態,只需在狀態表中添加新狀態及其處理方法,以及在狀態轉換表中添加該狀態的轉換方式。

4.2 查找算法分析

設總共有n個狀態,m個事件,每個狀態平均響應的事件為k.

由于在這里每個狀態都是互斥的,因此狀態轉換時的時間開銷主要是花費在查找狀態表上面,這里采用了基數排序查找的思想。因此主要查找開銷是每個狀態的狀態轉換個數。由于在售貨機中,每個狀態大概都只有3-4 個狀態轉換表。因此查找的時間復雜度比O(m)小。

5 結語

通過建立有限狀態機模型,并應用改進的數據結構與狀態轉換算法,自動售貨機控制器的程序結構更為清晰。原來存在于程序中的諸多標志變量,由狀態機的各個狀態所取代,使系統具有更好的擴展性;并且模型很好地利用了狀態的相關性,縮短了查找所花費的時間。應用于別的嵌入式系統也有較高的意義。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • LPC2134
    +關注

    關注

    0

    文章

    6

    瀏覽量

    9866
  • UCOSIII
    +關注

    關注

    2

    文章

    26

    瀏覽量

    7048
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    如何用威佛RS232-MDB適配器在售貨機上實現”REMOTE VEND”

    用威佛RS232-MDB適配器在售貨機上實現”REMOTE VEND”
    的頭像 發表于 12-19 11:13 ?317次閱讀
    如何用威佛RS232-MDB適配器在<b class='flag-5'>售貨機</b>上實現”REMOTE VEND”

    睿遠研究院丨IO-Link規范解讀(十一):ISDU狀態機與EVENT事件

    上篇我們介紹了ISDU的典型編碼格式和應用案例,本篇我們就來詳細介紹下,ISDU的狀態機,并把EVENT事件的邏輯,給大家好好解析下。 1主站ISDU狀態機 如上圖所示,ISDU的狀態機的核心
    的頭像 發表于 11-29 18:28 ?4724次閱讀
    睿遠研究院丨IO-Link規范解讀(十一):ISDU<b class='flag-5'>狀態機</b>與EVENT事件

    什么是狀態機

    另一個狀態的過程稱作遷移,遷移不是自動發生的,需要外界對系統施加影響。停轉的電動機自己不會轉起來,讓它轉起來必須上電。 事件:某一時刻發生的對系統有意義的事情,狀態機之所以發生狀態遷移
    發表于 11-27 08:15

    嵌入式開發為何經常用到狀態機架構

    一個管腳電平跳變或者一個串口數據,讓整個程序都不動的情況也讓我非常糾結,如果事件一直不發生電平跳變,你要等到世界末日么? 如果應用狀態機編程思想,程序只需要用全局變量記錄下工作狀態,就可以轉頭去干別的
    發表于 11-25 07:08

    睿遠研究院丨IO-Link規范解讀(八):M-Sequence Type 與消息處理狀態機

    丟棄,減少后端工作量。 那么今天我們就來深入研究下,消息處理模塊中提到的各類M-Sequence,以及主從站的消息處理狀態機! ? 1 M-Sequence Type 上回講到主站發出來的MC和CKT
    的頭像 發表于 11-07 16:18 ?6312次閱讀
    睿遠研究院丨IO-Link規范解讀(八):M-Sequence Type 與消息處理<b class='flag-5'>狀態機</b>

    睿遠研究院丨IO-Link規范解讀(六):主從站狀態機解析

    前言 書接上文,今天我們就來好好聊聊主從站的DL-Mode狀態機,還請各位童鞋前排坐好! 1主站狀態機解析 主站的DL-Mode狀態機有5個大狀態,也是我們很熟悉的 建立通信、開始、預
    的頭像 發表于 10-28 17:34 ?6199次閱讀
    睿遠研究院丨IO-Link規范解讀(六):主從站<b class='flag-5'>狀態機</b>解析

    東芝TB5128HG步進驅動芯片,在商用售貨機上的體驗

    對于硬件工程師來說,硬件芯片選型一直是讓人最頭疼的事之一。最近一位做售貨機的工程師,用我們的? TB5128HG ?替換了之前的舊方案,分享一下客戶在替換過程中的感受。 一、 最初為什么選它? 客戶
    的頭像 發表于 10-21 14:43 ?383次閱讀

    法拉電容有哪些型號和規格

    法拉電容通過不同結構和參數滿足多樣化儲能需求,適用于便攜設備、自動售貨機及太陽能系統等場景,具備高能量密度與靈活模組化設計。
    的頭像 發表于 08-27 09:21 ?1137次閱讀
    法拉電容有哪些型號和規格

    請問如何在FX10上使用GPIF III狀態機 *.h 文件?

    LVCMOS 2 位 SlaveFIFO GPIF III 狀態機的演示中有一個 cy_gpif_header_lvcmos.h 文件。 我想知道如何使用.h文件,只需放入.h文件放入 FX10 項目? 您有它的用戶指南文檔嗎?
    發表于 07-16 08:17

    NVMe高速傳輸之擺脫XDMA設計之八:PCIe初始化狀態機設計

    PCIe配置初始化狀態機實現PCIe設備枚舉和配置空間初始化過程,在完成鏈路訓練后,使用DFS(深度優先搜索)算法枚舉PCIe總線上的設備,完成PCIe總線域的地址分配和設備的初始化。PCIe配置
    發表于 07-05 22:00

    嵌入式系統安全面臨的挑戰和解決方案

    正當人們盡情享受智能化帶來的種種便利的同時,殊不知那些隱藏在邊緣設備中的一些漏洞隨時有可能誘發嚴重的安全隱患。自動取款、支付終端、自動售貨機、售票亭、斷層掃描等大型醫療設備,甚至
    的頭像 發表于 06-06 14:49 ?1866次閱讀
    嵌入式系統安全面臨的挑戰和解決方案

    有可能在 FX3 GPIF2 中創建兩個獨立的狀態機嗎?

    我想,如果我想通過 FX3 GPIF2 創建兩個獨立的傳輸流接口,我需要在 GPIF2 設計器中創建兩個獨立的狀態機,我是否有可能在 GPIF2 設計器中創建兩個獨立的狀態機?
    發表于 05-20 06:14

    cypress3014視頻格式改變的話,GPIF狀態機需不需要重新配置?

    你好,請問視頻格式改變的話,GPIF狀態機需不需要重新配置
    發表于 05-14 07:28

    求助,關于srammaster.cydsn中狀態機的問題求解

    晚上好。 我目前正在學習 GPIF II。 查看..EZ-USB FX3 SDK1.3firmwaregpif_examplescyfxsrammastersrammaster.cydsn中的狀態機,有狀態START和START1。 這意味著什么?
    發表于 05-12 06:20

    自助售貨機內嵌掃描器應該要如何選用?

    隨著移動支付和新零售的蓬勃發展,自助售貨機作為"無人零售"的重要載體,正經歷著智能化升級的浪潮。作為設備核心組件的內嵌掃描器,其性能表現直接影響著交易效率與用戶體驗。本文將從
    的頭像 發表于 05-07 14:25 ?641次閱讀
    自助<b class='flag-5'>售貨機</b>內嵌掃描器應該要如何選用?