趙政


【摘 要】MDB協議又名ICP協議是由國家自動機械銷售協會(NAMA)和歐洲售貨機協會(EVA)的有關成員制訂,是一套用于協調自動售賣機的主控制器(VMC)與多個外設之間通信的協議。本文提出以STC單片機為例,實現VMC與外設的MDB/ICP協議通訊。
【關鍵詞】自動售貨機;單片機;MDB/ICP協議
【Abstract】MDB protocol, also known as the ICP protocol is formulated by the concerned members of the National Automated Machinery Sales Association (NAMA) and European vending machine Association (EVA), it is set for the communication between vending machine main controller (VMC) and multiple peripherals. This paper introduces and presents the MDB/ICP protocol communication between VMC and peripheral using STC Single chip microcomputer.
【Key words】Vending machine; Single chip microcomputer; MDB/ICP protocol
0 引言
自動售貨機被稱為“永不下班的超級營業員”。是20世紀70年代在日本和歐美發展起來的高新技術產品,這種零售方式已經在世界65個國家和地區出現。自動售貨機在日本被親切地稱為“微型小店”。 “微型小店”出售的商品,從咖啡、香煙、各種酒類已經發展到部分日常生活用品,就連報紙、大米、郵票、明信片、電池、錄像帶等也可以自動出售。在自動售貨機的使用過程中,VMC(Vending Machine Controller)與外設(讀卡器、硬幣器、紙幣器等)的通訊是很重要的,因此,采用一種可靠的內部通訊總線協議非常必要。MDB/ICP協議是由國家自動機械銷售協會(NAMA)和歐洲售貨機協會(EVA)的有關成員制訂,用于協調自動售賣機的主控制器(VMC)與多個外設之間通信的協議。
1 MDB/ICP 協議
1.1 簡介
MDB 為一個主從結構的串行總線接口標準,采用9600bps 的波特率通信。主從操作模式,MDB 規定總線有唯一1個主機和最多32個外設。每個外設有唯一的地址和命令。所有通信的外設都是主機完成初始化的。
1.2 通信格式
a.字節格式
一個字節被定義為11位的格式,1個起始位+8個數據位+1個模式位+1位停止位;其中,模式位根據傳遞方式的不同分別置0或置1:當控制器VMC 發送數據到外設時,模式位置1表示為地址字節,置0表示數據字節;當外設發送數據到控制器VMC時,模式位置1表示所有字節發送完畢。
b.塊格式
主到從:
控制器VMC 傳送給外設的數據由1個地址字節、若干數據字節和1個校驗字節組成,總數不超過36個字節。
地址字節包含兩部分命令,高5 位是外設的地址,低3 位是外設的命令。
主控器響應外設時發送應答(ACK)、非應答(NAK)、重發(RET)。5ms 超時(無響應)等價于非應答。
如果從機地址在5mS 內無響應,主控器重發相同的命令或不同的命令,直到收到從機的響應或達到最大無響應時間(硬幣器為2S、紙幣器為5S)。在這期間,主控器同時應該訪問其他外設。
主控器可以通過拉低發送線(至少100mS)對總線進行復位。
從到主:
一幀數據包含一個數據塊、1字節校驗和、1字節應答或非應答。校驗和字節包含在最大數據塊(36 字節)之內。
外設響應主控器時,主控器必須響應一個應答,非應答或重發。
外設在相應ACK或NAK時無需校驗和。
當外設發送一個數據塊之后,主控器在5ms無響應時間之內必須響應一個ACK、NAK或RET。
c.校驗和
校驗和字節在每個數據塊的最后發送。校驗和字節是地址字節和所有數據字節的累加,校驗和字節并不包含在總和中。
1.3 MDB/ICP通訊模式
每次通訊過程都由VMC發起,外設響應,這種方式可以避免總線沖突,同時利用校驗和(CHK)和重發機制實現錯誤檢查和更正,提高了內部通訊的可靠性。
幾種典型的通訊過程下圖(圖1)所示。其中:ADD表示地址字節,DAT表示數據字節,CHK表示校驗和(計算ADD和所有DAT之和的字節),“*”表示模式位置1。
2 硬件結構
在MDB總線協議基礎上,采用51系列單片機通過MDB總線與投幣機、讀鈔機和讀卡器交互,控制外設的運轉,并從外設獲得用戶的支付情況。同時也負責處理與用戶之間的交互,驅動液晶顯示,處理鍵盤輸入,控制電機運轉出貨。系統結構圖(圖2)如下:
3 軟件構架
3.1 程序流程圖(圖3)
3.2 軟件代碼
a.串口初始化
初始化串口時,主要工作是設置波特率為9600和傳輸方式為11位傳輸。為順利獲得9600波特率,本項目單片機采用11.0592Mhz晶振為。源代碼如下(采用C語言編寫,Keil編譯):
b.MDB協議通訊
這是通訊的核心部分。根據需要傳送數據包,計算校驗字節,控制方式位,在時序允許的響應時間內接受外設返回的數據,做出NAK或ACK等反應。并且按照MDB/ICP標準中推薦的方式處理異常情況,當接受數據超時或校驗和錯時, 重復發送命令多次,以增強容錯性能。將接收到的數據返回給調用者,并返回結果碼。源代碼如下(采用C語言編寫,Keil編譯):
【參考文獻】
[1]徐愛鈞,彭秀華.Keil C51單片機高級語言應用編程與實踐[M].電子工業出版社,2013.
[2]Stephen Prata. C Primer Plus [M] Addison-Wesley Educational Publishers Inc.2004.
[3]NAMA. Multi-Drop Bus/Internal Communication Protocol MDB/ICP[EB/OL]. [2003].http://ww.vending.org.
[4]洪強寧,齊國生,葉丹.基于MDB/ICP 協議的自動售賣系統的主控制器實現[J].電子技術應用,2002(9):28-30.
[5]陳安寶.基于MDB/ICP 協議的紙幣識別器與自動售貨機通訊的研究[J].機械管理開發,2004(4):77-78.
[責任編輯:楊玉潔]