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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于ARM-LINUX的物流復檢系統(tǒng)設計

          基于ARM-LINUX的物流復檢系統(tǒng)設計

          作者: 時間:2016-09-12 來源:網(wǎng)絡 收藏

          摘要:分揀環(huán)節(jié)在現(xiàn)代物流中的作用顯得尤為重要。為了確保分揀的準確度,提出了一種基于的物流復檢系統(tǒng)設計方案。該系統(tǒng)采用的主從架構方式,通過總線互聯(lián),通過在上采用結構和接收終端節(jié)點上的條碼數(shù)據(jù)來達到處理比對條碼數(shù)據(jù)庫信息的目的。實際應用表明,該復檢系統(tǒng)能夠保證分揀機構精準高效運行,測試時達到了設計的要求。

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

          關鍵詞:;終端節(jié)點;;

          隨著電子商務的快速發(fā)展,物流的重要性也日益凸顯,而分揀環(huán)節(jié)在物流系統(tǒng)中是十分關鍵的。因此,要有效的保證分揀機構的精準高效運行。目前分揀的識別方式主要靠條形碼識別,通過光電開關觸發(fā)條形碼掃描設備等捕獲條形碼信息,然后由光電開關信號以及延時控制分揀機完成最終的分揀。但是由于光電開關的靈敏度,貨物的位置以及條形碼粘貼的質量等原因,會造成物流成本的增加和物流效率的降低,給企業(yè)造成嚴重的損失。

          可見,提高物流分揀的準確度變得尤為重要。為了解決分揀系統(tǒng)中的分揀錯誤,提高物流的效率,在做了需求分析的基礎上,提出了一種基于ARM-LINUX的物流復檢系統(tǒng)設計方案。該復檢系統(tǒng)能夠提高物流分揀的準確度,解決系統(tǒng)的分揀錯誤。

          1 總體設計

          該復檢系統(tǒng)通過將安放終端節(jié)點在分揀系統(tǒng)的各個出線口,通過總線將各個終端節(jié)點與主控節(jié)點進行通信,通過以太網(wǎng)主控節(jié)點可以訪問遠端數(shù)據(jù)庫服務器,圖1所示即是整個復檢系統(tǒng)的架構。終端節(jié)點采用的是居于Cortex—M3內核架構的STM32F103RBT6處理器,移植RT-Thread作為軟件平臺,通過RS232接口獲取激光掃碼頭讀取到的一維條碼,然后由接口將條碼上報到主控節(jié)點,利用不同的CAN數(shù)據(jù)包ID號來標識不同的下線口號。主控通過CAN總線得到不同下線口所對應的終端節(jié)點上報的條碼信息后,通過以太網(wǎng)查詢局域網(wǎng)內的數(shù)據(jù)庫服務器,并將所查詢項標識為已查詢。在查詢完數(shù)據(jù)庫之后,主控節(jié)點需要根據(jù)結果刷新圖形界面的顯示,發(fā)出報警信號,并通知分揀系統(tǒng)的控制系統(tǒng)分揀出錯以實現(xiàn)聯(lián)動。

          基于ARM-LINUX的物流復檢系統(tǒng)設計

          主控節(jié)點還要將查詢結果返回給對應的終端節(jié)點,由其來控制下線口的輸送裝置,執(zhí)行相應的動作,比如伸縮皮帶機的運停。

          2 終端節(jié)點的設計

          2.1 終端節(jié)點的硬件設計

          終端節(jié)點被安裝在分揀系統(tǒng)的末端,可以根據(jù)實際下線口數(shù)配置多個。終端節(jié)點主要負責采集前期分揀后貨物的條碼信息,然后再通過CAN總線上傳給主控節(jié)點。系統(tǒng)結構框圖如圖2所示,它顯示了終端節(jié)點主要的硬件模塊,STM32處理器負責控制各個模塊,對于終端接口使用的STM32F103RBT6,為了使其正常工作,至少應具備供電電路、復位電路、時鐘電路、電源濾波電路、JTAG程序調試下載電路以及啟動模式選擇電路這幾個部分。STM32需要3.3 V供電,而條碼掃描器和CAN物理層驅動器需要5 V供電,供電模塊的任務就是為系統(tǒng)提供穩(wěn)定優(yōu)質的電源。條碼掃描器使用高速率高精度的激光條碼掃描器,它在下線口處重新采集分揀系統(tǒng)分揀后貨物的條碼信息,通過RS232總線發(fā)送給STM32處理器。CAN模塊是為了和主控節(jié)點取得可靠的通信,傳輸終端節(jié)點上傳的條碼等信息以及主控節(jié)點發(fā)送的控制信息,CAN接口設計如圖4所示。皮帶機模塊是為了根據(jù)主控節(jié)點發(fā)送的控制信息控制下線口出皮帶機的運行。無線模塊和數(shù)據(jù)采集模塊是為了擴展系統(tǒng)的功能,無線模塊可以輔助人工控制皮帶機,方便操作人員;數(shù)據(jù)采集模塊可以幫助采集末端設備工作狀態(tài)、環(huán)境溫度等信息。

          基于ARM-LINUX的物流復檢系統(tǒng)設計

          2.2 RT-Thread在STM32F103RBT6上的移植

          RT-Thread采用模塊化設計,不儀儀包禽一個穩(wěn)定高效的實時內核,更是一套完備的嵌入式系統(tǒng)軟件平臺。移植過程中采用ARM公司推出的RealView MDK作為系統(tǒng)的開發(fā)工具。目前RealView MDK已經(jīng)集成了業(yè)內最領先的技術,囊括了Vision3集成開發(fā)環(huán)境以及RealView編譯器。支持最新的Cortex—M3核處理器,集成Flash燒寫模塊,配有Simulation設備模擬,性能分析等功能,使之十分適合RTOS的開發(fā)。

          2.3 CAN接口程序設計

          為了使CAN模塊能夠正常工作,還要對其編程來控制其完成指定的任務。對CAN的控制通過對其一系列的寄存器的操作來完成,為了方便對寄存器組的操作,按照各個寄存器在內存中的相對地址定義了一個結構體CAN_TypeDef,將CAN寄存器組基地址CAN_BASE強制類型轉換為

          (CAN_TypeDef*)指針后宏定義為CAN,然后通過CAN指向CAN_TypeDef結構的成員來訪問CAN控制器的相關寄存器。在硬件復位以后,CAN控制器進入休眠模式以節(jié)省電能。為了正常使用CAN,就需要對其進行初始化,對CAN的初始化需要在初始化模式中進行,通過對CAN->MCR的INRQ位編程為1來進入初始化模式,與此同時硬件會置位CAN->MSR的INAK來應答。在完成初始化后,復位CAN->MCR的INRQ位,在CAN與總線取得同步后,進入正常模式。正常模式中就可以完成報文的正常收發(fā)。為發(fā)送報文,首先要查詢CAN-TSR寄存器,選擇一個空的郵箱,設置標識符,數(shù)據(jù)長度,和待發(fā)送數(shù)據(jù),然后將TXRQ置位來請求發(fā)送。由條碼掃描器通過串口發(fā)送過來的條碼格式為ASSIC碼,并且條碼長度也有差異,而一個CAN數(shù)據(jù)報文最多發(fā)送八個字節(jié)的數(shù)據(jù),所以要分多次發(fā)送,最后在條碼數(shù)據(jù)的結尾加入‘/r’和‘/n’字符表示一次完整的條碼傳輸。

          2.4 系統(tǒng)應用程序的設計

          在完成RT-Thread到STM32F103RBT6目標平臺的移植之后,接下來的工作就是開發(fā)系統(tǒng)應用程序,來實現(xiàn)所需要的功能。應用程序開發(fā)的第一步就是完成相關硬件或者外設的初始化。存RT-Thread中,相關的初始化工作可以有兩種方法來完成。一種是同一的在board.c文件中編寫對應模塊的初始化函數(shù),并將其放在rt_hw_board_init函數(shù)內調用。另一種方式是放在線程函數(shù)中完成。然后進行應用線程的開發(fā),采用多線程技術可以以較小的系統(tǒng)開銷,降低應用程序開發(fā)的復雜度,提高系統(tǒng)的可靠性。RT-Thread以線程為最小的調度單位,采用基于優(yōu)先級的全搶占式調度算法。針對本應用,創(chuàng)建了CAN線程、barcode線程、daemon及deal線程這四個主要線程,并通過線程問同步和通信方法進行它們之間的協(xié)調。


          上一頁 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); })();