唐一晟 陳俊凱 陳涌楠 周定鵬 劉佐濂
摘 要:文中設(shè)計了一套應(yīng)用于物聯(lián)網(wǎng)的輕量級AGV小車的系統(tǒng),主控使用STM32F103單片機,結(jié)合NFC芯片實現(xiàn)循跡以及路徑定位的功能,并將信息由SIM7600LTE芯片通過MQTT協(xié)議傳遞到服務(wù)器。同時設(shè)計了移動端APP,實現(xiàn)輕量級的AGV實時監(jiān)控與調(diào)度管理系統(tǒng)。相對于傳統(tǒng)的MES系統(tǒng),所提系統(tǒng)使用模塊化的設(shè)計理念,具有更友好的UI界面和更靈活的功能。
關(guān)鍵詞:物聯(lián)網(wǎng);MQTT協(xié)議;AGV;云服務(wù);STM32F103;APP
中圖分類號:TP391文獻標(biāo)識碼:A文章編號:2095-1302(2020)07-00-03
0 引 言
隨著物流系統(tǒng)迅速發(fā)展,AGV(Automated Guided Vehicle)應(yīng)用領(lǐng)域也在不斷擴展。AGV是一種自動導(dǎo)引車,一般都是在工廠車間內(nèi)使用,需要搭配特定的制造企業(yè)生產(chǎn)過程執(zhí)行管理系統(tǒng) (Manufacture Execute System,MES)[1]。這套系統(tǒng)一般由專業(yè)公司針對大企業(yè)用戶成套銷售,對于普通用戶成本過于昂貴,定制難度大,實用性不高。
本文的目的是研究輕量級的AGV小車系統(tǒng),使其能適用于更多的場景。為了在更多的場景下對AGV的調(diào)度,使用模塊化的設(shè)計理念,設(shè)計了一個服務(wù)端程序用于與下位機進行數(shù)據(jù)交互處理的架構(gòu),同時設(shè)計移動端APP用于用戶交互。
1 系統(tǒng)整體設(shè)計
設(shè)計的AGV物流小車整體系統(tǒng)框圖如圖1所示。
相較于傳統(tǒng)的AGV小車系統(tǒng),本設(shè)計出發(fā)點在于如何改善相對于復(fù)雜與高成本的AGV系統(tǒng)的靈活性,擴大使用范圍。
AGV小車系統(tǒng)主要分為三部分:小車端,服務(wù)器端和用戶端。初次開啟小車端時,會進入自檢然后上報車輛信息到服務(wù)器端,通過LTE使用MQTT協(xié)議進行傳輸,服務(wù)器端接收然后更新vehicle數(shù)據(jù)庫,車輛和地圖信息再通過APP發(fā)送給用戶,小車在起點等候接收服務(wù)器信息反饋,然后開始工作。
當(dāng)小車掃碼檢測到包裹條碼時,上報位置標(biāo)簽信息和包裹信息,服務(wù)器端接收到后比對查詢數(shù)據(jù)庫,并計算返回最優(yōu)路徑信息到小車端。小車接收到信息后進行下一步動作,服務(wù)器同步更新信息后反饋給用戶端。用戶端可以隨時通過APP查詢小車狀態(tài),對小車進行控制操作,形成閉環(huán)監(jiān)控。
2 硬件電路設(shè)計
2.1 硬件電路總體設(shè)計
圖2為AGV小車系統(tǒng)的硬件系統(tǒng)框架。AGV小車主控使用的是ST公司Cortex-M3內(nèi)核的STM32F103ZET6,該芯片主頻72 MHz,有多個UART。系統(tǒng)通過主控實現(xiàn)紅外循跡和數(shù)據(jù)處理,通過串口,SPI等接口實現(xiàn)對NFC標(biāo)簽的識別定位,并實時通過LTE通信技術(shù)與服務(wù)器進行信息交互。
2.2 NFC定位與交互
在實際的環(huán)境中,貨架多數(shù)是采用柵格的形式來規(guī)劃放置,因此只需在合適的路徑點上放上NFC芯片,就可以依靠NFC芯片實現(xiàn)準(zhǔn)確的定位功能。
AGV小車的定位識別使用的技術(shù)是近場通信(Near Field Communication,NFC)[2]。NFC的識別過程不需要人為干預(yù)而且抗干擾能力強,可用于各種惡劣環(huán)境,適用于更多的場景。NFC比RFID更具有靈活性強的特點,操作方便只需要相應(yīng)地點放置標(biāo)簽,NFC同時支持讀寫模式,卡模式,點對點(P2P)模式,可以控制AGV對標(biāo)簽進行讀寫操作。其也可在兩臺AGV小車之間進行通信,大大提升了各AGV之間的交互。用于定位的標(biāo)簽因為是無源的所以不需要額外的電源,使得功耗和維護成本大大降低,具有高的可移植性[3-4]。
RFID定位標(biāo)簽數(shù)據(jù)主要是當(dāng)前標(biāo)簽的相對坐標(biāo)位置信息,該坐標(biāo)可以根據(jù)不同情況使用需求進行設(shè)置。綜合考慮需求,本文選用NXP公司的PN532芯片。PN532是一個高度集成的非接觸讀寫芯片,它包含80C51微控制器內(nèi)核,集成了13.56 MHz下的各種主動/被動式非接觸通信方法和協(xié)議(串行UART,I2C,SPI)。經(jīng)使用測試,在速度和精度上能滿足要求。
2.3 LTE通信
為了提高AGV系統(tǒng)移植靈活性,使AGV的實用場景不止局限于傳統(tǒng)的車間工廠,因此對傳輸通信的靈活性要求很高,但是常規(guī)的AGV使用時候需要自己組網(wǎng),組建和維護成本大大提升,可移植性不高,所以這里選用的通信技術(shù)是LTE(Long Term Evolution)。因為基站由移動運營商進行維護與建設(shè),大大降低了使用與維護成本,可移植性得到了大大提高。截至2019年5月,中國建成了437萬個4G基站,已經(jīng)可以滿足一般的使用場景的覆蓋使用,而且相較于傳統(tǒng)的GSM和WCDMA,它的傳輸速率更高。
AGV小車與服務(wù)器之間通信時使用MQTT協(xié)議。車輛發(fā)送給服務(wù)器時發(fā)送內(nèi)容普通幀分為四部分:第一部分為車輛ID信息,一般為固定值,用戶也可自行修改;第二部分為途徑點識別的標(biāo)簽ID信息;第三部分為當(dāng)前車輛運輸?shù)陌畔?,由起始時掃描二維碼或抵達終點更新;第四部分為AGV當(dāng)前動作,將當(dāng)前車輛情況信息打包發(fā)送至服務(wù)器,然后服務(wù)器將會根據(jù)算法計算反饋回AGV小車下一個行動。
此次使用LTE芯片是SIMCOM公司的SIM7600CE芯片,它可支持GSM, TD-SCDMA, CDMA, WCDMA,TDD-LTE和FDD-LTE等頻段,支持TCP/IP/IPV4/IPV6/MQTT等,可以根據(jù)實際情況靈活選擇通信協(xié)議和方式,支持LTE-CAT4,上行最大速率50 Mb/s,下行最大速率150 Mb/s,經(jīng)過實物調(diào)試,可以滿足AGV于服務(wù)器之間的數(shù)據(jù)信息交互[5]。
3 服務(wù)器端及移動APP設(shè)計
3.1 基于MQTT協(xié)議的服務(wù)端與小車客戶端通信部分設(shè)計
MQTT消息隊列遙測傳輸(Message Queuing Telemetry Transport)是ISO 標(biāo)準(zhǔn)(ISO/IEC PRF 20922)[6]下基于發(fā)布/
訂閱范式的消息協(xié)議。它工作在TCP/IP協(xié)議族上,是為硬件性能低下的遠程設(shè)備以及網(wǎng)絡(luò)狀況糟糕的情況下而設(shè)計的發(fā)布/訂閱型消息協(xié)議[7]。
相較于傳統(tǒng)的HTTP查詢,MQTT具有以下的優(yōu)勢[8]:
(1)MQTT使用發(fā)布/訂閱范式,可以提供雙向的鏈接。
(2)MQTT帶有QoS(Quality of Service)功能,對于容量有限的網(wǎng)絡(luò)可以提供高傳輸保證,共有三個QoS等級:保證盡力交付;保證消息至少傳送一次;保證每個消息僅被對方接收一次。
(3)MQTT帶有遺言(Last Will and Testament)和保留信息(Retained Messages)功能,前者使客戶端在異常離線之后服務(wù)端能及時接收到客戶端異常離線的信息,后者使上線后客戶端能及時接收到服務(wù)端發(fā)送的信息。
一種MQTT連接(QoS 0)的示例如圖3所示。
表1為分別使用兩種方式請求云服務(wù)器10次,并收到服務(wù)器返回字符串{“hello”:“world”}字符串的抓包統(tǒng)計數(shù)據(jù),從統(tǒng)計結(jié)果可知,MQTT協(xié)議相較于HTTP GET方式在傳送數(shù)據(jù)包個數(shù)以及數(shù)據(jù)包長度上均有明顯優(yōu)勢。
本次使用的MQTT Broker為EMQX,其提供有方便的Docker部署以及便利的儀表板可用作Broker的管理和信息的發(fā)送接收,通過編寫Dockerfile和Docker-composer封裝成容器之后,可以在其他服務(wù)器中簡單的配置好環(huán)境,配置環(huán)境如命令如下:
$ docker pull emqx/emqx:v3.1.0
$ docker run -d --name emqx31 -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:v3.1.0
當(dāng)Broker收到消息后轉(zhuǎn)發(fā)給服務(wù)器后端進行處理,本例服務(wù)器端采用Eclipse Paho MQTT Python Client接收Broker轉(zhuǎn)發(fā)的信息。Eclipse Paho MQTT Python Client除了支持以非阻塞的模式運行以外,還提供了許多回調(diào)函數(shù)可供在不同情況下使用與處理回調(diào)信息[9]。
本文通過使用on_message回調(diào)函數(shù),自動將MQTTClient接收到的信息存儲到變量msg中,再通過調(diào)用自行編寫的write_payload函數(shù)傳遞給主程序進行處理。
多線程架構(gòu)如圖4所示。
為了提高服務(wù)器后端的工作效率,本文中分別對RESTful API和MQTTClient創(chuàng)建了一個進程,通過使用threading庫調(diào)度兩個線程協(xié)同運作。
3.2 基于RESTful API的服務(wù)器與APP通信部分設(shè)計
表現(xiàn)層狀態(tài)轉(zhuǎn)換(Representational State Transfer,REST)是Roy Thomas Fielding于2000年在他的博士論文[10]中提出來的一種萬維網(wǎng)軟件架構(gòu)風(fēng)格,目的是便于不同軟件/程序在網(wǎng)絡(luò)中互相傳遞信息。
RESTful API將服務(wù)器上存儲的數(shù)據(jù)抽象成為一個資源,并用URL作為其標(biāo)識,使用通用的HTTP請求方法(GET,POST,PUT,DELETE)對其進行增改刪查的操作。相較于普通的API,RESTful API建模的過程與面向?qū)ο蟮慕_^程類似,因此也比較契合Python的編程思想。
服務(wù)器后臺程序基于以上原理使用Python進行編寫。Python有非常方便的庫用于構(gòu)建RESTful API和處理Json格式數(shù)據(jù),同時也可以移植到其他系統(tǒng)。本文中APP使用wx.reguest向服務(wù)器請求數(shù)據(jù)后可以直接解析調(diào)用,十分方便。
APP分為總覽、車輛管理和包裹管理三部分。總覽部分可以看到一些基本的統(tǒng)計信息,車輛管理部分可以對小車進行下線和召回等的管理,包裹管理可以對包裹進行新增、修改、分配小車運送等的管理。APP界面如圖5所示。
4 結(jié) 語
本文設(shè)計了一套應(yīng)用于物聯(lián)網(wǎng)技術(shù)AGV小車的系統(tǒng),通過NFC技術(shù)實現(xiàn)標(biāo)簽定位識別,小車通過LTE通信技術(shù),使用靈活的MQTT協(xié)議與服務(wù)器之間建立通信交互,在服務(wù)器端進行數(shù)據(jù)處理整合,通過APP將信息反饋給用戶,形成閉環(huán),相較于傳統(tǒng)的AGV系統(tǒng)降低了成本,提高了靈活性。
參考文獻
[1]張辰貝西,黃志球.自動導(dǎo)航車(AGV)發(fā)展綜述[J].中國制造業(yè)信息化,2010,39(1):53-59.
[2]盧少平.基于RFID的AGV定位與導(dǎo)引研究[D].濟南:山東大學(xué),2011.
[3]唐浩強. 基于物聯(lián)網(wǎng)的智慧工廠實驗系統(tǒng)的設(shè)計與開發(fā)[D].南京:南京理工大學(xué),2017.
[4]潘軍,王焜,繆欣呈.AGV智能制造平臺方案的設(shè)計與研究[J].物流技術(shù)與應(yīng)用,2019,24(12):146-148.
[5]丘源,經(jīng)本欽,李精華.基于ESP8266WiFi模塊和MQTT協(xié)議的物聯(lián)網(wǎng)傳感節(jié)點設(shè)計[J].物聯(lián)網(wǎng)技術(shù),2019,9(6):24-26.
[6] International Organization for Standardization. ISO/IEC 20922:2016-Information technology-message queuing telemetry transport (MQTT)v3.1.1 [S]. Geneva:IX-ISO,2016.
[7]郭力,胡偉,張政成.試析MQTT協(xié)議在物聯(lián)網(wǎng)中的應(yīng)用[J].電腦知識與技術(shù),2019,15(28):31-32.
[8]成聞博.基于MQTT協(xié)議的物聯(lián)網(wǎng)消息推送系統(tǒng)構(gòu)建[J].信息與電腦,2019(18):161-162.
[9] ARLEN Nipper. MQTT's role as an IoT message transport [J]. Control Engineering,2019,66(1):20-21.
[10] FIELDING Roy Thomas. Architectural styles and the design of network-based software architectures [D]. Irvine:University of California,2000.