基于DS80C410內(nèi)嵌CAN總線食堂售飯系統(tǒng)的設(shè)計(jì)
摘要:介紹了一種基于DS80C410內(nèi)嵌CAN總線網(wǎng)絡(luò)的食堂售飯系統(tǒng)的設(shè)計(jì),包括系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)和硬件設(shè)計(jì)。重點(diǎn)介紹了系統(tǒng)中窗口機(jī)的硬件、軟件設(shè)計(jì),并詳細(xì)描述了DS80C410內(nèi)嵌CAN模塊的初始化過程和報(bào)文收發(fā)過程。
關(guān)鍵詞:DS80C410CAN總線食堂售飯系統(tǒng)窗口機(jī)
1.引言
CAN總線(Controller Area Network Bus)是一種有效支持分布式控制的串行通信網(wǎng)絡(luò)。它比一般的通信總線具有更高的可靠性、實(shí)時(shí)性和靈活性。CAN為多主方式工作,網(wǎng)絡(luò)上任一節(jié)點(diǎn)均可在任意時(shí)刻主動(dòng)地向網(wǎng)絡(luò)上其他節(jié)點(diǎn)發(fā)送信息,而且不分主從,通信方式靈活,無需站地址等節(jié)點(diǎn)信息。CAN總線現(xiàn)已廣泛應(yīng)用于工業(yè)現(xiàn)場(chǎng)控制、小區(qū)安防、環(huán)境監(jiān)控等眾多領(lǐng)域中。
2.系統(tǒng)結(jié)構(gòu)
實(shí)時(shí)通信的食堂售飯系統(tǒng)的通信特點(diǎn)非常適合于采用CAN總線。它的短幀結(jié)構(gòu)非常適合系統(tǒng)對(duì)抗干擾能力和實(shí)時(shí)通信能力要求較高,單次通信量很小的場(chǎng)合;靈活的組網(wǎng)特點(diǎn)完全可以解決大型食堂售飯系統(tǒng)中多個(gè)食堂和營業(yè)網(wǎng)點(diǎn)較分散的問題。
基于CAN總線的食堂售飯系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。采用總線型接法,主要包含三層:服務(wù)器、中繼器和終端。其中服務(wù)器包括工作服務(wù)器和備用服務(wù)器,這兩個(gè)服務(wù)器在營業(yè)時(shí)同時(shí)工作,互為備用,保證系統(tǒng)的穩(wěn)定可靠。中繼器可以延伸通信距離,增加終端數(shù)目,變換通信速率,并能起到濾波和隔離作用。終端主要是銷售用的窗口機(jī),還包括掛失機(jī)、解掛機(jī)、發(fā)卡/充值機(jī)等。
圖1 食堂售飯系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)圖
圖2 窗口機(jī)硬件結(jié)構(gòu)框圖
3.窗口機(jī)硬件設(shè)計(jì)
窗口機(jī)是直接與售飯人員和用戶打交道的主要前臺(tái)設(shè)備。圖2為窗口機(jī)的硬件結(jié)構(gòu)框圖。采用Dallas內(nèi)嵌CAN控制器的高速網(wǎng)絡(luò)微控制器 DS80C410作為窗口機(jī)的微處理器,負(fù)責(zé)整個(gè)窗口機(jī)和鍵盤的監(jiān)控。MMM為非接觸式IC(Mifare)卡讀/寫器模塊。該模塊在微處理器的控制下,可完成對(duì)卡片的非接觸式讀/寫等操作。窗口機(jī)的通信任務(wù)是DS80C410內(nèi)嵌的CAN控制器在CPU控制下完成的,CAN控制器通過CAN總線收發(fā)器PCA82C250接收總線上的數(shù)據(jù),供CPU讀取,也可以將CPU送來的數(shù)據(jù)發(fā)送到CAN總線上。內(nèi)嵌CAN控制器通過DS80C410芯片上的P5.1(C0RX-CAN接收)和P5.0(C0TX-CAN發(fā)送)腳分別與收發(fā)器的RXD(接收數(shù)據(jù)輸出)和TXD(發(fā)送數(shù)據(jù)輸入)腳相連。窗口機(jī)硬件還包括一個(gè)44鍵盤(10個(gè)數(shù)字鍵、6個(gè)功能鍵)、前后各10位數(shù)碼顯示(顯示內(nèi)容完全相同)、32KB的EEPROM(用來存儲(chǔ)消費(fèi)記錄)、看門狗等部分電路。
4.窗口機(jī)軟件設(shè)計(jì)
4.1主程序設(shè)計(jì)
窗口機(jī)具有連網(wǎng)和脫網(wǎng)兩種運(yùn)行方式。窗口機(jī)的默認(rèn)工作方式分為連網(wǎng)運(yùn)行,只有在出現(xiàn)網(wǎng)絡(luò)故障或其他原因無法連網(wǎng)運(yùn)行時(shí),才通過開關(guān)設(shè)定為脫網(wǎng)運(yùn)行。圖3為窗口機(jī)運(yùn)行的主程序流程圖。窗口機(jī)初始化后,先進(jìn)行鍵盤處理,LED顯示處理,并判斷是否回收消費(fèi)記錄。然后查詢是否讀到卡,讀到卡后,調(diào)用相應(yīng)連網(wǎng)或脫網(wǎng)子程序,進(jìn)行營業(yè)操作。
圖3 窗口機(jī)主程序流程圖
4.1.1 CAN的初始化
窗口機(jī)的初始化,包括對(duì)CAN模塊的初始化。當(dāng)系統(tǒng)硬件復(fù)位后,首先屏蔽CAN中斷,然后將位于DS80C410的SFR(特殊功能寄存器)中的 C0C(CAN控制寄存器)中的CRST(復(fù)位) 位清0,即清除了CAN控制器的復(fù)位狀態(tài),同時(shí) SWINT(軟件初始化) 位要置 1,即禁止CAN 的總線活動(dòng),這樣才允許程序?qū)?CAN 模塊中的控制寄存器和擴(kuò)展幀的屏蔽寄存器(C0EGM0~C0EGM3)進(jìn)行寫操作,并設(shè)置通信波特率、窗口機(jī)ID、窗口機(jī)號(hào)、CAN狀態(tài)、CAN口使能、CAN定時(shí)等參數(shù), 初始化CAN模塊。最后恢復(fù)CAN中斷。初始化結(jié)束后,要清 SWINT位,恢復(fù) CAN 總線的活動(dòng)。
4.2子程序設(shè)計(jì)
4.2.1工作流程
在連網(wǎng)情況下,當(dāng)窗口機(jī)通過MMM獲取卡號(hào)后,將卡號(hào)發(fā)送給服務(wù)器,服務(wù)器收到卡號(hào)后,在數(shù)據(jù)庫中查找對(duì)應(yīng)卡號(hào)的用戶余額并將其返回給窗口機(jī)。窗口機(jī)顯示接收到的用戶余額,當(dāng)一次營業(yè)操作完成以后,窗口機(jī)將用戶總消費(fèi)額發(fā)送給服務(wù)器,服務(wù)器接收到消費(fèi)額后進(jìn)行相應(yīng)數(shù)據(jù)庫記錄的更新,并將已接收消費(fèi)額的確認(rèn)幀(ACK)返回給窗口機(jī)。如果窗口機(jī)將讀到的卡號(hào)(SNR)發(fā)送給服務(wù)器的過程中幀丟失,即窗口機(jī)沒有收到服務(wù)器的余額幀,這時(shí)窗口機(jī)等待一個(gè)重發(fā)時(shí)間,仍未收到服務(wù)器的余額幀后,將重發(fā)先前的卡號(hào)。最多重發(fā)3次,當(dāng)重發(fā)3次仍無法收到服務(wù)器的回應(yīng)幀后,顯示相應(yīng)的提示信息。如果在結(jié)帳以后,窗口機(jī)發(fā)給服務(wù)器的用戶消費(fèi)額幀丟失,即服務(wù)器沒有收到消費(fèi)額幀,無法進(jìn)行相應(yīng)記錄的更新,同樣采取上述方法重發(fā)用戶消費(fèi)額。圖4為連網(wǎng)子程序流程圖。
圖4 連網(wǎng)子程序流程圖
脫網(wǎng)情況下,窗口機(jī)采用的是記帳的辦法,將脫網(wǎng)狀態(tài)下用戶的卡號(hào)和消費(fèi)記錄全部存儲(chǔ)在窗
口機(jī)的EEPROM中,等系統(tǒng)恢復(fù)連網(wǎng)運(yùn)行以后,服務(wù)器從各窗口機(jī)中回收存儲(chǔ)的數(shù)據(jù),進(jìn)行服務(wù)器數(shù)據(jù)庫的更新。由于脫網(wǎng)情況下窗口機(jī)不能和服務(wù)器進(jìn)行實(shí)時(shí)通信,所以程序較簡(jiǎn)單,就不再給出流程圖了。
圖5 發(fā)送子程序
圖6接收子程序
4.2.2 幀的發(fā)送和接收
DS80C410中CAN模塊提供了15個(gè)報(bào)文中心,作為發(fā)送或接收數(shù)據(jù)的存儲(chǔ)器。幀的發(fā)送和接收通過這15個(gè)報(bào)文中心實(shí)現(xiàn),也可以選擇一個(gè)或若干個(gè)報(bào)文中心發(fā)送或接收幀。這15個(gè)報(bào)文中心發(fā)送或接收數(shù)據(jù)的優(yōu)先級(jí)順序是以報(bào)文中心的逆序排列的。報(bào)文中心1-14可設(shè)置為接收或發(fā)送數(shù)據(jù),報(bào)文中心15只能接收數(shù)據(jù)。報(bào)文中心的控制寄存器(C0M1C~C0M15C)位于SFR中。每個(gè)報(bào)文中心有一個(gè)格式寄存器(C0MyF)、4個(gè)仲裁寄存器和8個(gè)字節(jié)(C0MyD0~C0MyD7)的數(shù)據(jù)區(qū)域。仲裁寄存器的值可以在初始化中設(shè)置,也可以在發(fā)送程序中設(shè)置,而且它的值可隨著數(shù)據(jù)的接收而自動(dòng)更改。另外,報(bào)文中心15的C015M0~C015M3寄存器,還可以執(zhí)行附加的濾波。
當(dāng)網(wǎng)絡(luò)中某一窗口機(jī)處于發(fā)送狀態(tài)時(shí),首先對(duì)使用的報(bào)文中心初始化,把要發(fā)送的報(bào)文裝入報(bào)文中心,報(bào)文中心仲裁寄存器的值作為幀的標(biāo)識(shí)符發(fā)送出去。圖5為使用報(bào)文中心1發(fā)送數(shù)據(jù)的程序流程圖,其中MSRDY(報(bào)文中心就緒),DTUP(數(shù)據(jù)更新),MTRQ(CPU發(fā)送請(qǐng)求)等位是報(bào)文中心1的控制寄存器C0M1C的位。
當(dāng)窗口機(jī)處于接收狀態(tài)時(shí),CAN控制器將根據(jù)屏蔽寄存器和接收?qǐng)?bào)文中心的仲裁寄存器的值對(duì)接收幀的ID標(biāo)識(shí)符進(jìn)行判斷,確定報(bào)文中心是否接收,只有當(dāng)接收幀的標(biāo)識(shí)符與仲裁寄存器的值相等的時(shí)候,幀才被接收;另外,CAN模塊還有媒體屏蔽寄存器和媒體仲裁寄存器,可對(duì)接收的數(shù)據(jù)幀的第0和1兩個(gè)字節(jié)進(jìn)行額外的校驗(yàn)。圖6是使用報(bào)文中心2接收數(shù)據(jù)的程序流程圖。其中 MSRDY,DTUP,MTRQ等位是報(bào)文中心 2的控制寄存器 C0M2C的位。
5.結(jié)束語
DS80C410是帶有以太網(wǎng)和CAN的網(wǎng)絡(luò)微控制器。包括一個(gè)10/100以太網(wǎng)MAC,三個(gè)全雙工硬件串行口,8個(gè)雙向8位端口,一個(gè)可選的CAN2.0B控制器,1-Wire®主機(jī)和64個(gè)I/O引腳及用于存儲(chǔ)用戶應(yīng)用和網(wǎng)絡(luò)堆棧的64K字節(jié)內(nèi)部SRAM。內(nèi)嵌CAN模塊支持標(biāo)準(zhǔn)(11位)和擴(kuò)展(29位)標(biāo)識(shí)符和通用掩模,媒體字節(jié)過濾, DeviceNet,SDS和高層CAN協(xié)議,自動(dòng)波特率模式和SIESTA低功耗模式。基于DS80C410內(nèi)嵌CAN總線的食堂售飯系統(tǒng),不僅有良好的穩(wěn)定性、安全性和可靠性,而且實(shí)時(shí)響應(yīng)能力強(qiáng),網(wǎng)絡(luò)維護(hù)方便,用戶界面友好、軟件使用、升級(jí)和移植方便,成本低廉。
本文創(chuàng)新點(diǎn):DS80C410集成度較高,16MB連續(xù)存儲(chǔ)空間,能夠同時(shí)完成對(duì)窗口和鍵盤的監(jiān)控。高達(dá)75MHz的系統(tǒng)時(shí)鐘頻率,使單周期指令僅54ns。內(nèi)嵌CAN模塊,使窗口機(jī)硬件結(jié)構(gòu)更為簡(jiǎn)單,節(jié)省硬件資源。CAN模塊的15個(gè)報(bào)文中心,使通信效率增強(qiáng)。對(duì)CAN模塊操作與對(duì)單片機(jī)擴(kuò)展外部程序/數(shù)據(jù)存貯器的操作是相同的,軟件實(shí)現(xiàn)不復(fù)雜。
參考文獻(xiàn):
[1] Dallas/Maxim semiconductor. DS80C410/DS80C411 Network Microcontrollers with Ethernet and CAN, 2005.
[2] Dallas/Maxim semiconductor. High-Speed Microcontroller User’s Guide, 2004.
[3] Dallas/Maxim semiconductor. High-Speed Microcontroller User’s Guide: Network Microcon- troller Supplement, 2005.
[4] 饒運(yùn)濤, 鄒繼軍, 鄭勇蕓. 現(xiàn)場(chǎng)總線CAN原理與應(yīng)用技術(shù) [M]. 北京: 北京航空航天大學(xué)出版社, 2003.
[5] 任敏 趙躍華. 內(nèi)嵌CAN總線在智能繼路器中的應(yīng)用 [J]. 電力自動(dòng)化設(shè)備,2003, (11) :0060-03,P60~62.
[6] DallasMaxim集成產(chǎn)品公司. CAN總線及其集成解決方案 [J]. 今日電子,2003(5),P29~31.
[7] 鄒繼軍,饒運(yùn)濤,鄭勇蕓,馮林. CAN總線在食堂售飯系統(tǒng)中的應(yīng)用[J]. 廈門大學(xué)學(xué)報(bào)(自然科學(xué)版),2001(8), 增刊1, 第40卷, P252~254.
[8] 鄒繼軍,饒運(yùn)濤. 食堂售飯系統(tǒng)窗口機(jī)設(shè)計(jì)[J]. 東華理工學(xué)院學(xué)報(bào),2004(3),第27卷, P293~297.
[9] 田希暉,張^,張連超,羅詩途.CAN總線及其應(yīng)用技術(shù)[J].微計(jì)算機(jī)信息(測(cè)控自動(dòng)化)2004,(10).
評(píng)論