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