<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 設計應用 > 基于RS485總線的智能門禁系統(tǒng)的實現(xiàn)方案

          基于RS485總線的智能門禁系統(tǒng)的實現(xiàn)方案

          作者: 時間:2013-02-26 來源:網(wǎng)絡 收藏

          本文引用地址:http://www.ex-cimer.com/article/259869.htm

          隨著網(wǎng)絡技術、數(shù)字技術,特別是射頻通信識別技術的進步,門禁系統(tǒng)在安全性、方便性、易管理性等方面也得到了長足的發(fā)展,成為確保小區(qū)及其它重要部門出入口安全的有效措施,已廣泛應用于交通、物流管理等多個領域。主機調(diào)度網(wǎng)以其組網(wǎng)容易、造價低、軟硬件豐富、添加節(jié)點方便快截、數(shù)據(jù)傳輸可靠穩(wěn)定、誤碼率較低及傳輸距離適中等優(yōu)點,仍是目前中小型網(wǎng)絡管理系統(tǒng)的主流形式。本工作研究了一種基于技術的的硬件和軟件實現(xiàn)方案。

          1系統(tǒng)整體構成

          系統(tǒng)總體框圖見圖1,其結構采用集散式控制形式,各下位機分別監(jiān)控各自節(jié)點內(nèi)的操作狀況,又統(tǒng)一受上位機的監(jiān)控。該系統(tǒng)采用PC機作為上位機,主要負責住戶信息的數(shù)據(jù)庫管理、各節(jié)點住戶實時操作的監(jiān)控與信息記錄等,具體信息包括:卡信息、住戶個人信息、密碼信息、實時操作信息和歷史記錄及系統(tǒng)時間等。各下位機采用WINBOND公司生產(chǎn)的W77E58單片機作為微處理器,負責本節(jié)點內(nèi)卡的管理、用戶權限的判定及門狀態(tài)的控制等。各節(jié)點內(nèi)的485收發(fā)器MAX485負責接收來自485總線的PC機控制數(shù)據(jù)或者通過總線向上位機發(fā)送實時操作信息見圖2.各門禁控制器通過一個串口讀取RFID卡信息,并通過另一個串口與485總線通信。上位機通過串口并經(jīng)232—485電平轉換后連接至485總線,統(tǒng)一管理各門禁控制器。



          圖1總體框圖

          系統(tǒng)工作過程為:用戶將持有的RFID卡接近讀卡器時,讀卡器識別卡信息并通過串口將卡信息傳送給單片機控制器。用戶也可以通過鍵盤輸入密碼,單片機控制器將卡信息或鍵盤信息與外部EEPR0M中存儲的信息比較,驗證用戶權限,進而控制門狀態(tài)。單片機通過另一個串口經(jīng)由485收發(fā)器通過總線與上位機通信,將卡信息、各時刻操作信息、鍵盤信息等傳送到總線上,上位機通過總線對這些信息進行文件和數(shù)據(jù)庫的存儲;同時,上位機對各住戶的卡、密碼及個人信息以注冊或者注銷等形式進行數(shù)據(jù)庫管理,以便于查詢。



          圖2 485收發(fā)器電路

          2系統(tǒng)硬件設計

          2.1硬件組成

          上位機硬件是PC機和232—485轉接卡。下位機硬件主要包括RFID讀卡器、485收發(fā)器和門禁控制器。下位機節(jié)點結構見圖3.



          圖3下位機門禁控制器總體框圖

          下位機的核心部分是W77E58單片機微控制器,其主要特點是具有兩個獨立的串行通訊口。

          RFID讀卡器采用周立功公司的ZLG500CMifare卡讀寫模塊嘲,利用單片機控制器的P1.4引腳作為其復位信號。讀卡器與控制器的接口引線還包括電源線、地線及RXD、TXD串口數(shù)據(jù)線,二者為串行通信方式。

          485總線收發(fā)器采用MAXIM公司的MAX485,其電路原理見圖2.其中加入光隔離以實現(xiàn)抗干擾及保護功能。利用單片機的P2.3引腳對其內(nèi)部的發(fā)送和接收驅動器進行控制,通過單片機的一個串口與之通信。

          2.2工作原理

          W77E58具有2個串口,這一點在該系統(tǒng)是至關重要的。

          單片機控制器既要通過串口與RFID讀卡器通信,又要通過串口與485總線控制器MAX485通信,因此選擇具有2個串口的單片機是解決這一矛盾的最佳方案。而且在相同的時鐘頻率下,它的指令執(zhí)行速度比標準8051快2.5倍,這對于作為門禁控制器核心的單片機來說也是大有優(yōu)勢的。

          鍵盤具有12個按鍵,各按鍵的功能定義為:數(shù)字鍵0-9、確認鍵及取消鍵。用戶可以通過鍵盤輸入密碼信息,也可以通過鍵盤呼叫開門。EEPROM存儲器AT24C256用來存儲用戶密鑰信息及RFID卡的卡號和密碼信息,它具有IIC總線功能,可以在IIC總線的時序下對它進行讀寫操作;DS1302時鐘芯片用來向系統(tǒng)提供時鐘,為了方便,該時鐘應與上位機一致;另外,采用MAX813看門狗芯片監(jiān)視程序的運行;采用EA_D20040AR液晶顯示器顯示用戶通過鍵盤輸入的密碼、實時操作信息及系統(tǒng)時間信息等;采用DS2Y—S繼電器控制電門的開關狀態(tài)。

          3系統(tǒng)軟件設計

          系統(tǒng)軟件由上位機管理平臺和下位機門禁控制程序組成。

          上位機管理軟件是在WindowsXP操作平臺上,利用VisualC++6.0開發(fā)的,功能包括RFID卡注冊注銷、住戶信息添加、刪除、查找、編輯、排序、顯示、實時監(jiān)控、管理員登錄驗證等,具有友好的人機交互界面,顯示直觀,操作方便。系統(tǒng)運行時,各門禁控制器將采集到的卡信息、鍵盤信息及實時操作信息以TxT文件的形式存儲在上位機中;各小區(qū)的單元住戶信息以“樹”視圖的形式顯示在平臺界面的左側窗口中。點擊相應的節(jié)點,各單元的住戶信息以數(shù)據(jù)庫表的形式顯示在平臺界面的右側窗口中。平臺下面的“Tab”控件用來實時顯示各門禁控制器的實時操作信息。

          下位機控制程序采用8OC51語言編程,Wave6000編譯仿真。該部分實現(xiàn)的主要功能包括:按鍵密碼及卡信息的讀取和驗證、液晶LCD及LED顯示、時間設置和讀取、經(jīng)由485總線接收及發(fā)送操作信息等。軟件主程序流程見圖4.



          圖4下位機主程序流程

          3.1 485通信

          通信波特率設為9600bit.S-1.通信協(xié)議為起始字符+本機地址+功能字符+數(shù)據(jù)長度+數(shù)據(jù)信息+結束字符其中,起始字符為‘@@@’,結束字符為‘$$$’,本機地址為:0~32(可以按照需要選擇);廣告地址為:Oxffo功能字符為:‘0’~‘F’。

          3.2串口中斷處理

          串口的功能包括:其一,向上位機發(fā)送操作信息,例如刷卡或者密碼認證信息等;其二,接收上位機發(fā)送的密碼修改和卡注冊注銷信息,并依此修改EEPROM相應內(nèi)容,達到實時更新。中斷流程見圖5.



          圖5下位機串口中斷流程

          3.3卡及密碼管理與認證機制

          一般情況下每個門禁控制節(jié)點的密碼只有一個,該密碼既存儲在上位機的數(shù)據(jù)庫里,也存儲在EEPR0M里,當上位機修改此密碼時,將修改信息經(jīng)由總線發(fā)送給下位機,進行同步修改。

          光耦相關文章:光耦原理


          萬用表相關文章:萬用表怎么用


          c++相關文章:c++教程


          斷路器相關文章:斷路器原理


          高壓真空斷路器相關文章:高壓真空斷路器原理
          漏電斷路器相關文章:漏電斷路器原理

          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();