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