基于ARM-LINUX的物流復(fù)檢系統(tǒng)設(shè)計
摘要:分揀環(huán)節(jié)在現(xiàn)代物流中的作用顯得尤為重要。為了確保分揀的準確度,提出了一種基于ARM-LINUX的物流復(fù)檢系統(tǒng)設(shè)計方案。該系統(tǒng)采用主控節(jié)點和終端節(jié)點的主從架構(gòu)方式,終端節(jié)點和主控節(jié)點通過CAN總線互聯(lián),通過在終端節(jié)點上采用ARM-LINUX結(jié)構(gòu)和接收終端節(jié)點上的條碼數(shù)據(jù)來達到處理比對條碼數(shù)據(jù)庫信息的目的。實際應(yīng)用表明,該復(fù)檢系統(tǒng)能夠保證分揀機構(gòu)精準高效運行,測試時達到了設(shè)計的要求。
本文引用地址:http://www.ex-cimer.com/article/201609/305180.htm關(guān)鍵詞:主控節(jié)點;終端節(jié)點;CAN;ARM-LINUX
隨著電子商務(wù)的快速發(fā)展,物流的重要性也日益凸顯,而分揀環(huán)節(jié)在物流系統(tǒng)中是十分關(guān)鍵的。因此,要有效的保證分揀機構(gòu)的精準高效運行。目前分揀的識別方式主要靠條形碼識別,通過光電開關(guān)觸發(fā)條形碼掃描設(shè)備等捕獲條形碼信息,然后由光電開關(guān)信號以及延時控制分揀機完成最終的分揀。但是由于光電開關(guān)的靈敏度,貨物的位置以及條形碼粘貼的質(zhì)量等原因,會造成物流成本的增加和物流效率的降低,給企業(yè)造成嚴重的損失。
可見,提高物流分揀的準確度變得尤為重要。為了解決分揀系統(tǒng)中的分揀錯誤,提高物流的效率,在做了需求分析的基礎(chǔ)上,提出了一種基于ARM-LINUX的物流復(fù)檢系統(tǒng)設(shè)計方案。該復(fù)檢系統(tǒng)能夠提高物流分揀的準確度,解決系統(tǒng)的分揀錯誤。
1 總體設(shè)計
該復(fù)檢系統(tǒng)通過將安放終端節(jié)點在分揀系統(tǒng)的各個出線口,通過CAN總線將各個終端節(jié)點與主控節(jié)點進行通信,通過以太網(wǎng)主控節(jié)點可以訪問遠端數(shù)據(jù)庫服務(wù)器,圖1所示即是整個復(fù)檢系統(tǒng)的架構(gòu)。終端節(jié)點采用的是居于Cortex—M3內(nèi)核架構(gòu)的STM32F103RBT6處理器,移植RT-Thread作為軟件平臺,通過RS232接口獲取激光掃碼頭讀取到的一維條碼,然后由接口將條碼上報到主控節(jié)點,利用不同的CAN數(shù)據(jù)包ID號來標(biāo)識不同的下線口號。主控通過CAN總線得到不同下線口所對應(yīng)的終端節(jié)點上報的條碼信息后,通過以太網(wǎng)查詢局域網(wǎng)內(nèi)的數(shù)據(jù)庫服務(wù)器,并將所查詢項標(biāo)識為已查詢。在查詢完數(shù)據(jù)庫之后,主控節(jié)點需要根據(jù)結(jié)果刷新圖形界面的顯示,發(fā)出報警信號,并通知分揀系統(tǒng)的控制系統(tǒng)分揀出錯以實現(xiàn)聯(lián)動。
主控節(jié)點還要將查詢結(jié)果返回給對應(yīng)的終端節(jié)點,由其來控制下線口的輸送裝置,執(zhí)行相應(yīng)的動作,比如伸縮皮帶機的運停。
2 終端節(jié)點的設(shè)計
2.1 終端節(jié)點的硬件設(shè)計
終端節(jié)點被安裝在分揀系統(tǒng)的末端,可以根據(jù)實際下線口數(shù)配置多個。終端節(jié)點主要負責(zé)采集前期分揀后貨物的條碼信息,然后再通過CAN總線上傳給主控節(jié)點。系統(tǒng)結(jié)構(gòu)框圖如圖2所示,它顯示了終端節(jié)點主要的硬件模塊,STM32處理器負責(zé)控制各個模塊,對于終端接口使用的STM32F103RBT6,為了使其正常工作,至少應(yīng)具備供電電路、復(fù)位電路、時鐘電路、電源濾波電路、JTAG程序調(diào)試下載電路以及啟動模式選擇電路這幾個部分。STM32需要3.3 V供電,而條碼掃描器和CAN物理層驅(qū)動器需要5 V供電,供電模塊的任務(wù)就是為系統(tǒng)提供穩(wěn)定優(yōu)質(zhì)的電源。條碼掃描器使用高速率高精度的激光條碼掃描器,它在下線口處重新采集分揀系統(tǒng)分揀后貨物的條碼信息,通過RS232總線發(fā)送給STM32處理器。CAN模塊是為了和主控節(jié)點取得可靠的通信,傳輸終端節(jié)點上傳的條碼等信息以及主控節(jié)點發(fā)送的控制信息,CAN接口設(shè)計如圖4所示。皮帶機模塊是為了根據(jù)主控節(jié)點發(fā)送的控制信息控制下線口出皮帶機的運行。無線模塊和數(shù)據(jù)采集模塊是為了擴展系統(tǒng)的功能,無線模塊可以輔助人工控制皮帶機,方便操作人員;數(shù)據(jù)采集模塊可以幫助采集末端設(shè)備工作狀態(tài)、環(huán)境溫度等信息。
2.2 RT-Thread在STM32F103RBT6上的移植
RT-Thread采用模塊化設(shè)計,不儀儀包禽一個穩(wěn)定高效的實時內(nèi)核,更是一套完備的嵌入式系統(tǒng)軟件平臺。移植過程中采用ARM公司推出的RealView MDK作為系統(tǒng)的開發(fā)工具。目前RealView MDK已經(jīng)集成了業(yè)內(nèi)最領(lǐng)先的技術(shù),囊括了Vision3集成開發(fā)環(huán)境以及RealView編譯器。支持最新的Cortex—M3核處理器,集成Flash燒寫模塊,配有Simulation設(shè)備模擬,性能分析等功能,使之十分適合RTOS的開發(fā)。
2.3 CAN接口程序設(shè)計
為了使CAN模塊能夠正常工作,還要對其編程來控制其完成指定的任務(wù)。對CAN的控制通過對其一系列的寄存器的操作來完成,為了方便對寄存器組的操作,按照各個寄存器在內(nèi)存中的相對地址定義了一個結(jié)構(gòu)體CAN_TypeDef,將CAN寄存器組基地址CAN_BASE強制類型轉(zhuǎn)換為
(CAN_TypeDef*)指針后宏定義為CAN,然后通過CAN指向CAN_TypeDef結(jié)構(gòu)的成員來訪問CAN控制器的相關(guān)寄存器。在硬件復(fù)位以后,CAN控制器進入休眠模式以節(jié)省電能。為了正常使用CAN,就需要對其進行初始化,對CAN的初始化需要在初始化模式中進行,通過對CAN->MCR的INRQ位編程為1來進入初始化模式,與此同時硬件會置位CAN->MSR的INAK來應(yīng)答。在完成初始化后,復(fù)位CAN->MCR的INRQ位,在CAN與總線取得同步后,進入正常模式。正常模式中就可以完成報文的正常收發(fā)。為發(fā)送報文,首先要查詢CAN-TSR寄存器,選擇一個空的郵箱,設(shè)置標(biāo)識符,數(shù)據(jù)長度,和待發(fā)送數(shù)據(jù),然后將TXRQ置位來請求發(fā)送。由條碼掃描器通過串口發(fā)送過來的條碼格式為ASSIC碼,并且條碼長度也有差異,而一個CAN數(shù)據(jù)報文最多發(fā)送八個字節(jié)的數(shù)據(jù),所以要分多次發(fā)送,最后在條碼數(shù)據(jù)的結(jié)尾加入‘/r’和‘/n’字符表示一次完整的條碼傳輸。
2.4 系統(tǒng)應(yīng)用程序的設(shè)計
在完成RT-Thread到STM32F103RBT6目標(biāo)平臺的移植之后,接下來的工作就是開發(fā)系統(tǒng)應(yīng)用程序,來實現(xiàn)所需要的功能。應(yīng)用程序開發(fā)的第一步就是完成相關(guān)硬件或者外設(shè)的初始化。存RT-Thread中,相關(guān)的初始化工作可以有兩種方法來完成。一種是同一的在board.c文件中編寫對應(yīng)模塊的初始化函數(shù),并將其放在rt_hw_board_init函數(shù)內(nèi)調(diào)用。另一種方式是放在線程函數(shù)中完成。然后進行應(yīng)用線程的開發(fā),采用多線程技術(shù)可以以較小的系統(tǒng)開銷,降低應(yīng)用程序開發(fā)的復(fù)雜度,提高系統(tǒng)的可靠性。RT-Thread以線程為最小的調(diào)度單位,采用基于優(yōu)先級的全搶占式調(diào)度算法。針對本應(yīng)用,創(chuàng)建了CAN線程、barcode線程、daemon及deal線程這四個主要線程,并通過線程問同步和通信方法進行它們之間的協(xié)調(diào)。
評論