国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于MDB/ICP協(xié)議的自動售賣系統(tǒng)的主控制器實(shí)現(xiàn)

發(fā)布時(shí)間:2010-11-3 12:51    發(fā)布者:eetech
關(guān)鍵詞: ICP , MDB , 協(xié)議 , 主控制器 , 自動售賣
隨著國你經(jīng)濟(jì)和技術(shù)的發(fā)展,自動售賣系統(tǒng)由于其方便性、易管理性和低成本,正得到越來越廣泛的應(yīng)用。而自動售賣系統(tǒng)的外設(shè)也越來越復(fù)雜,從投幣機(jī)到讀鈔機(jī)到非現(xiàn)金交易(如IC記賬卡),導(dǎo)致對主控制器的要求越來越高。為了簡化設(shè)計(jì),采用一個(gè)簡單、穩(wěn)定的內(nèi)部通訊總線協(xié)議非常必要。  

本文介紹了歐洲售機(jī)制造者協(xié)會(EVMMA)制定的MDB/ICP總線協(xié)議。該協(xié)議簡潔明了,功能強(qiáng)大,可擴(kuò)展性強(qiáng),并且對外掛外設(shè)備數(shù)目沒有限制,是理想的自動售賣系統(tǒng)內(nèi)部總線協(xié)議。本文從主控制器的角度給出了對MDB/ICP總線進(jìn)行操作控制的硬件和軟件實(shí)現(xiàn)。  

1 MDB/ICP協(xié)議簡介  

MDB/ICP協(xié)議(Multi-Drop Bus / Internal Communication Protocol)是歐洲售貨機(jī)制造者協(xié)會制定的一套用于協(xié)調(diào)自動售賣機(jī)的主控制器(VMC)與多個(gè)外設(shè)之間通信的協(xié)議。硬幣機(jī)和讀鈔機(jī)的標(biāo)準(zhǔn)首先是由Coinco在美國可口可樂公司的指定下開發(fā)的。這個(gè)標(biāo)準(zhǔn)于1993年被NAMA協(xié)會采用,經(jīng)過一個(gè)專門的工作組修訂后,于1994年被EVMMA采用。第二階段的非現(xiàn)金交易標(biāo)準(zhǔn)由Debitek代表NAMA開發(fā),并于1994年被NAMA采用。EVMMA加入了一些兼容的指令后于1994年采用。  



MDB接口實(shí)際上是工作于9600波特率的主從型串行總線接口,所外圍設(shè)備(例如硬幣機(jī)、讀鈔機(jī)、讀卡器等)均為主控制器(傳統(tǒng)上稱售貨機(jī)控制器——VMC)的從機(jī)。所有外圍設(shè)備與VMC之間的通信方式都一致。  

MDB協(xié)議的串行位格式為:1個(gè)起始位,8個(gè)數(shù)據(jù)位,1個(gè)方式位與1個(gè)停止位,共11位。位傳遞的順序如圖1所示。其中方式位根據(jù)傳遞的方式不同置0或置1。在MDB總線上,VMC通過廣播方式向外發(fā)送命令。第一字節(jié)為地址字節(jié)(實(shí)際上只有高5位尋址信息,低3位為對外設(shè)的指令),該字節(jié)被所有的外設(shè)讀取,但只有符合地址字節(jié)所指定的外設(shè)才處理其后的數(shù)據(jù)字節(jié),并做出反應(yīng)。在VMC到外設(shè)的數(shù)據(jù)中,地址字節(jié)的方式位被置1,數(shù)據(jù)字節(jié)的方式位被置0,外設(shè)通過檢驗(yàn)接收到的方式位確認(rèn)是地址命令還是數(shù)據(jù)。當(dāng)數(shù)據(jù)從外設(shè)發(fā)送到主機(jī)時(shí),最后送出的字節(jié)方式位被置1,標(biāo)志著數(shù)據(jù)發(fā)送完畢。  

VMC向外設(shè)傳送的指令由一個(gè)地址字節(jié)、一些可選的數(shù)據(jù)字節(jié)與一個(gè)校驗(yàn)和(CHK)字節(jié)構(gòu)成。發(fā)送指令后,外設(shè)應(yīng)答VMC的通信塊可以由一個(gè)數(shù)據(jù)塊和一個(gè)CHK字節(jié)組成,或者一個(gè)應(yīng)答字節(jié)(ACK),或者一個(gè)無應(yīng)答字節(jié)(NAK)。如果外設(shè)應(yīng)答數(shù)據(jù)塊的話,VMC將通過一個(gè)應(yīng)答字節(jié)(ACK)、無應(yīng)答字節(jié)(NAK)或得發(fā)字節(jié)(RET)應(yīng)答外設(shè)傳回的數(shù)據(jù)。  

圖2至圖5為幾個(gè)典型的會話例子,其中“*”表示傳送時(shí)方式位置1,“ADD”表示地址字節(jié),“CHK”表示傳送數(shù)據(jù)的校驗(yàn)和。  

2 硬件系統(tǒng)結(jié)構(gòu)  

在MDB/ICP總線協(xié)議基礎(chǔ)上,筆者構(gòu)建了一個(gè)實(shí)際的自動售賣系統(tǒng),系統(tǒng)原理圖如圖6所示。VMC通過MDB總線與投幣機(jī)、讀鈔機(jī)和讀卡器交互,控制外設(shè)的運(yùn)轉(zhuǎn),并從外設(shè)獲得用戶的支持情況。同時(shí),VMC也負(fù)責(zé)處理與用戶之間的交互,驅(qū)動液晶顯示,處理鍵盤輸入,驅(qū)動符合用戶需要的電機(jī)運(yùn)轉(zhuǎn)出貨。在本項(xiàng)目中,VMC還需通過MODEM自動撥號連接公司總線的服務(wù)器,將銷售數(shù)據(jù)傳送回公司。  

如圖6所示,所有MDB外設(shè)均掛在同一總線上,由總線提供24V和5V的電源,數(shù)據(jù)線與單片機(jī)的串口相連。  

本項(xiàng)目中選用的單片機(jī)為DALLAS DS5002FP。該單片機(jī)代碼級兼容MCS-51系列單片機(jī),在使用外存的情況下仍然可以使用4個(gè)PO作為數(shù)據(jù)I/O,帶外設(shè)的能力較強(qiáng)。但它只有一個(gè)串口,控制MDB總線和控制MODEM都需要使用串口,因此必須將串口進(jìn)行復(fù)用。通過一個(gè)譯碼器實(shí)現(xiàn)選通功能。  

3 MDB/ICP會話控制  

將VMC與外設(shè)之間通過MDB總線的會話分為四個(gè)層次:  

(1)串口初始化  

初始化串口時(shí),主要工作是設(shè)置波率(9600)和傳輸方式(11位)。為順利獲得9600波特率,單片機(jī)采用的晶振為11.0592MHz。源代碼如下(采用Franklin C51語言編寫):  

// 一點(diǎn)常量定義  
#define uchar unsigned char  
#define T_RESPONSE 0xee //*5.0毫秒*/  
#define MAX_BLOCK_SIZF 36 /*數(shù)據(jù)塊最大長度*/  
#define ERR_TIME_OUT 0x81 /*超時(shí)*/  
#define ERR_NO_MODE_BIT 0x82*/未收到最后字節(jié)*/  
#define ERR_CHECKSUM 0x83 /*校驗(yàn)和錯(cuò)*/  
#define ACK 0x00  
#define RET 0xaa  
#define NAK 0xff  

//初始化串口  
void InitSerialPort()  
{  
SCON = 0xd0; //設(shè)置串口為方式3(9bit)  
TMOD %26;amp;=0x0f;  
TMOD I=0x20; //設(shè)置定時(shí)器1為方式2  
TR1 =1; //定時(shí)器1使能  
TH1 = 0xfd; //設(shè)定波行率:9600 NRZ  
PCON %26;amp;=0x7f; //Set SMOD=0  
RI=0;  
TI=0;  
}





(2)字節(jié)的傳送  

這里需要注意的是:發(fā)送數(shù)據(jù)時(shí)要根據(jù)需要設(shè)置方式位,而接收數(shù)據(jù)時(shí)要返回方式位的值,以判斷是否收完所有數(shù)據(jù)。  

// 傳送字節(jié)  
void TransmitByte(uchar byte,bit mode)  
//形參:byte——準(zhǔn)備發(fā)送的字節(jié)  
// mode——預(yù)備要設(shè)置的方式位  
{  
TB8=mode; //設(shè)置方式位  
SBUF = byte; //發(fā)送字節(jié)  
While(!TI); //等待發(fā)送完畢  
TI=0;  
}  

//接收字節(jié)  
#pragma disable  
uchar ReceiveByte(uchar *byte,uchar *bMode)  
//形參:*byte——返回接收到的字節(jié)值  
// *bMode——返回接收到的字節(jié)的方式位  
//返回值:0—超時(shí),1—成功接收  
{  
TMOD %26;amp;=0xf0;  
TMOD |=0x01; //設(shè)置定時(shí)器0為方式1(16位)  
TH0=T_RESPONSE;  
TL0=0x00; //設(shè)置超時(shí)門限  
TF0=0;  
TR0=1; //定時(shí)器0使能  
While (!RI %26;amp;%26;amp; !TF0)  
; //等待接收字節(jié)直至超時(shí)  
TF0=0;  
if(RI){ //已接收字節(jié)  
RI=0;  
*byte=SBUF; //返回字節(jié)值  
*bMode=RB8; //返回方式位  
return 1;  
}else{ //超時(shí)  
RI=0;  
return 0;  
}  
}  

(3)數(shù)據(jù)塊的傳送  

這部分與下面的會話部分放在一個(gè)函數(shù)體內(nèi)實(shí)現(xiàn)。  

(4)會話



這是MDB會話控制的核心部分。根據(jù)需要傳送數(shù)據(jù)包,計(jì)算校驗(yàn)字節(jié),控制方式位,在時(shí)序允許的響應(yīng)時(shí)間內(nèi)接愛外設(shè)返回的數(shù)據(jù),做出ACK或NAK等反應(yīng)。并且按照MDB/ICP標(biāo)準(zhǔn)中堆薦的方式處理異常情況,當(dāng)接受數(shù)據(jù)超時(shí)或校驗(yàn)和錯(cuò)時(shí),重復(fù)發(fā)送命令多次,以增強(qiáng)容錯(cuò)性能。將接收到的數(shù)據(jù)返回給調(diào)用乾,并返回結(jié)果碼。源程序如下:  

//與外設(shè)會話,在調(diào)用之前確認(rèn)譯碼器選通MDB總線  
uchar Session(uchar add,uchar dat[],uchar count)  
//形參:add——VMC發(fā)送的地址指令字節(jié)  
// dat[]——VMC發(fā)送的數(shù)據(jù)塊  
// count——數(shù)據(jù)塊的大小  
//返回值:0——外設(shè)應(yīng)答ACK  
//非0且小于0x80——外設(shè)應(yīng)答的數(shù)據(jù)塊的大小  
//大于等于0x80——會話中出錯(cuò)  
//外設(shè)應(yīng)答的數(shù)據(jù)塊存放在全局?jǐn)?shù)組uchar recBuff[]  
{  
uchar data check,i,j,err;  
uchar data mode;  
for(j=0;j1) {  
//收到數(shù)據(jù)塊  
if(check !=recBuff[i-1]){ //校驗(yàn)和錯(cuò)  
TransmitByte(NAK,0);  
err=ERR_CHECKSUM;  
} else{  
//一切正常,發(fā)送ACK后跳出循環(huán)  
TransmitByte(ACK,0);  
break;  
}  
} else  
//收到外設(shè)傳來的ACK  
break;  
}//if(!err)  
Wait(T_RESPONSE); //防止與外設(shè)數(shù)據(jù)沖突  
}//for j  
//返回接收到的數(shù)據(jù)塊大小或出錯(cuò)代碼  
return err?err:(i-1);  
}  
本文使用DS5002FP實(shí)現(xiàn)了對MDB總線的控制與訪問。通過將MDB/ICP協(xié)議進(jìn)行分解,很好地實(shí)現(xiàn)了總線驅(qū)動。實(shí)踐證明該驅(qū)動程序穩(wěn)定、可靠,大大降低了上層界面開發(fā)的難度,提高了系統(tǒng)的可維護(hù)性,節(jié)約了成本。
本文地址:http://m.qingdxww.cn/thread-35981-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • PIC32CK SG單片機(jī)——輕松滿足新型網(wǎng)絡(luò)安全要求
  • 探索PIC16F13145 MCU系列——快速概覽
  • PIC32CM LS00 Curiosity Pro評估工具包
  • PIC32CM LS60 Curiosity Pro評估工具包
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产精品综合久久久| 一级a毛片免费观看| 欧美成人看片一区二区三区尤物| 午夜a级毛片| 亚洲小视频网站| 色老头一区二区三区在线观看| 亚洲国产综合人成综合网站00| 日本免费久久| 亚洲成人自拍| 日本午夜大片免费观看视频| 欧美成人精品一区二区三区| 性夜黄a爽爽免费视频国产| 欧美视频三区| 日韩精品专区| 亚洲国产成人久久综合一区| 人人草人人| 四虎影视永久免费观看| 四虎永久在线视频| 亚洲午夜久久久| 一级毛片中文字幕| 亚洲第一综合网| 亚洲综合偷自成人网第页| 三a毛片| 日韩国产片| 一级片观看| 亚洲欧美日韩综合久久久久| 亚洲成a人片在线看| 亚洲韩国日本欧美一区二区三区 | 色中文字幕在线| 欧美国产精品va在线观看| 日本视频网站在线www色| 欧美日韩中| 四虎免费在线视频| 亚洲国产一区二区三区在线观看| 五月天狠狠操| 日韩精品一区在线| 亚洲第一页色| 三级全黄60分钟| 日本亚洲欧洲高清有码在线播放 | 欧美一区二区三区网站| 日本三级三级三级免费看|