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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于CAN總線的電梯主控系統(tǒng)

          基于CAN總線的電梯主控系統(tǒng)

          作者: 時間:2012-08-30 來源:網(wǎng)絡(luò) 收藏

          圖4 光耦輸入電路

          圖4 光耦輸入電路。

          當然部分的對實時信號要求不是特別高的輸入信號如消防、鎖梯、直駛、滿載、超載等,可以通過轎廂板或者外召板以同樣的方式采集,然后通過 傳遞給。

          2.4 繼電器輸出電路

          的輸出模塊中,為了減小外部電路對微控制器的影響,采用了以2803 驅(qū)動繼電器的開關(guān)量輸出形式。如主輸出、開/關(guān)門輸出、抱閘輸出、蜂鳴器、到站鐘、電源管理、鎖梯輔助、消防基站、超載指示、上行/下行指示。對于中輸出信號,與輸入信號類似可以通過 把信號傳遞給轎廂板或者外召板,然后采用以相同繼電器輸出形式輸出。

          2.5 其他模塊

          電源模塊:采用24V 供電, 經(jīng)LM2576 和AS1117-3.3 產(chǎn)生 5V 與3.3V 電壓,用于的不同模塊。復(fù)位模塊:為使系統(tǒng)能夠穩(wěn)定可靠工作,復(fù)位電路是必不可少的,系統(tǒng)采用的是MAX708,其是具有比較器、手動復(fù)位輸入、兩組電平輸出的微控制器芯片。液晶顯示與按鍵模塊:采用經(jīng)典的四按鍵與12864點陣液晶的設(shè)計,能夠?qū)︼@示菜單比較合理的操作,在系統(tǒng)中用GPIO 控制。存儲模塊:主要用來保存用戶參數(shù)的和系統(tǒng)的運行參數(shù)(比如用戶密碼、操作員管理密碼、從變頻器采集到的脈沖數(shù)等)。存儲芯片選用了鐵電技術(shù)的64K 位非易失性鐵電存儲器FM24CL64,與微控制器采用的是標準兩線I2C 的接口,這樣能夠較好地與LPC2294 連接。

          圖5 繼電器輸出電路。

          圖5 繼電器輸出電路。

          3 控制系統(tǒng)軟件設(shè)計

          控制系統(tǒng)軟件設(shè)計時采用了當前主流的keil 集成開發(fā)環(huán)境。軟件設(shè)計以搶占式多任務(wù)實時操作系統(tǒng)μC/OS 為平臺實現(xiàn)[5]了系統(tǒng)的調(diào)度分配、通信、液晶顯示三個任務(wù),如圖6 所示。

          圖6 系統(tǒng)控制通信圖

          圖6 系統(tǒng)控制通信圖。

          任務(wù)之間通信以消息隊列和郵箱方式進行通信。

          在與硬件接口上根據(jù)LPC2294 芯片手冊和應(yīng)用的需要,完成了CAN 模塊的驅(qū)動、I2C 的模塊的驅(qū)動、和GPIO 的模式的按鍵和12864 點陣液晶驅(qū)動,這樣使得在μC/OS 的任務(wù)中無需關(guān)注LPC2294 芯片板上資源的具體使用,而只需要調(diào)用相應(yīng)的接口函數(shù),方便了系統(tǒng)軟件的升級和改動。

          3.1 主控調(diào)度任務(wù)

          在主控調(diào)度任務(wù)中完成當前梯呼梯信號的整合,然后再根據(jù)當前收集到的群控正常等輸入信號判斷當前梯的運行狀態(tài)(如自動狀態(tài)、消防狀態(tài)、鎖梯狀態(tài)等),做出當前狀態(tài)的處理;在電梯處在可調(diào)度的狀態(tài)下,根據(jù)相應(yīng)的調(diào)度算法完成對電梯的呼梯的合理配置;并通過消息隊列和郵箱與CAN 通信任務(wù)、液晶顯示任務(wù)進行任務(wù)間通信,完成數(shù)據(jù)的交互。

          3.2 CAN 通信任務(wù)

          原則上對4 路CAN 控制器的資源分配為:CAN0外呼通信、CAN1 內(nèi)召通信、CAN2 變頻器通信、CAN3群控子系統(tǒng)通信[7].但系統(tǒng)中可以在軟件上進行相應(yīng)的配置,然后使得任意CAN 控制器可以與任意的外部子系統(tǒng)相連,這樣就增加了系統(tǒng)的靈活性,也給操作人員帶來了方便。在CAN 通信任務(wù)調(diào)用之前,需要調(diào)用相應(yīng)的CAN 控制器初始化函數(shù),對CAN 控制器中斷、波特率、驗收過濾器等進行相關(guān)的設(shè)置。在CAN通信任務(wù)中,一方面需要完成4 路CAN 控制器通過中斷方式接收到緩沖區(qū)中的數(shù)據(jù)再驗證無誤后交付給主控調(diào)度任務(wù),令一方面需把主控會把給群控調(diào)度器、變頻器、內(nèi)召板、轎廂板發(fā)送的信號或者命令交付給CAN 通信任務(wù)。CAN 通信任務(wù)再接收到主控的數(shù)據(jù)做相應(yīng)的驗證,封裝成相應(yīng)的協(xié)議格式的幀,然后發(fā)送給相應(yīng)的子系統(tǒng)。

          在CAN 通信中,發(fā)送數(shù)據(jù)的封裝和接收數(shù)據(jù)的解封遵循的格式除了變頻器部分參考第三方提供的CAN 總線通信協(xié)議,其他模塊與主控系統(tǒng)的通信完全依靠下述自定義協(xié)議。在電梯控制系統(tǒng)中,CAN 通信全部采用CAN2.0 所規(guī)定的擴展數(shù)據(jù)幀[5-7],其格式如表1 所示。傳輸?shù)膸?9 位ID 按下表劃分(全0 或者全1 將被舍棄)。

          表1 擴展幀ID 格式

          表1 擴展幀ID 格式

          在表1 中,主控部分的子設(shè)備dev 有外呼、內(nèi)召、群控、變頻器,以序號001、010、011、100 等;-部分是在設(shè)計協(xié)議中沒有用到的數(shù)據(jù)位,程序中用0填充;cmd 表示發(fā)送方給接收方發(fā)送的命令字(如相應(yīng)信號登記命令、相應(yīng)信號清除命令);data 部分表示發(fā)送方給接收方發(fā)送的信號數(shù)據(jù),由于在系統(tǒng)設(shè)計的時候考慮的最高樓層為64,因此數(shù)據(jù)部分在傳輸?shù)臅r候,每次主控給與外呼、內(nèi)召通信的時只需要一幀就可以完成,其數(shù)據(jù)字節(jié)bye1 的BIT0 表示第1 樓信號,byte8的BIT8 表示第64 樓信號。

          3.3 液晶顯示任務(wù)

          從任務(wù)間通信角度,液晶顯示任務(wù)主要接收主控任務(wù)以消息隊列方式傳入的相關(guān)系統(tǒng)參數(shù)(如上/下行、當前樓層、目標樓層等),然后通過調(diào)用12864 點陣液晶驅(qū)動函數(shù)和查詢用戶按鍵的輸入狀態(tài),提供給用戶相應(yīng)的顯示菜單,以現(xiàn)實相關(guān)的系統(tǒng)參數(shù)。

          當然該任務(wù),也得提供給用戶相關(guān)系統(tǒng)參數(shù)設(shè)置的接口, 然后把相關(guān)參數(shù)保存在鐵電存儲器FM24CL64 中。

          4 結(jié)束語

          本文設(shè)計的CAN 總線的電梯主控制系統(tǒng)具有成本低,工作穩(wěn)定等特點,完全能夠滿足國標GB7588-2003 對電梯控制系統(tǒng)的各項指標。由于篇幅的限制,本文沒有給出相應(yīng)的外召板、內(nèi)叫板,群控板的設(shè)計及其具體的實現(xiàn),另外與變頻器的接口完全按照變頻器第三方CAN 總線的具體通信協(xié)議。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();