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