摘要
摘要:文中设计了一套应用于物联网的轻量级AGV小车的系统,主控使用STM32F103单片机,结合NFC芯片实现循迹以及路径定位的功能,并将信息由SIM7600LTE芯片通过MQTT协议传递到服务器。同时设计了移动端APP,实现轻量级的AGV实时监控与调度管理系统。相对于传统的MES系统,所提系统使用模块化的设计理念,具有更友好的UI界面和更灵活的功能。
0 引 言
随着物流系统迅速发展,AGV(Automated Guided Vehicle)应用领域也在不断扩展。AGV是一种自动导引车,一般都是在工厂车间内使用,需要搭配特定的制造企业生产过程执行管理系统(Manufacture Execute System,MES)[1]。这套系统一般由专业公司针对大企业用户成套销售,对于普通用户成本过于昂贵,定制难度大,实用性不高。
本文的目的是研究轻量级的AGV小车系统,使其能适用于更多的场景。为了在更多的场景下对AGV的调度,使用模块化的设计理念,设计了一个服务端程序用于与下位机进行数据交互处理的架构,同时设计移动端 APP 用于用户交互。
1 系统整体设计
设计的 AGV 物流小车整体系统框图如图 1 所示。
图 1 系统整体设计框图
相较于传统的AGV小车系统,本设计出发点在于如何改善相对于复杂与高成本的 AGV 系统的灵活性,扩大使用范围。
AGV小车系统主要分为三部分 :小车端,服务器端和用户端。初次开启小车端时,会进入自检然后上报车辆信息到服务器端,通过LTE使用MQTT协议进行传输,服务器端接收然后更新vehicle数据库,车辆和地图信息再通过APP发送给用户,小车在起点等候接收服务器信息反馈,然后开始工作。
当小车扫码检测到包裹条码时,上报位置标签信息和包裹信息,服务器端接收到后比对查询数据库,并计算返回最优路径信息到小车端。小车接收到信息后进行下一步动作,服务器同步更新信息后反馈给用户端。用户端可以随时通过APP查询小车状态,对小车进行控制操作,形成闭环监控。
2 硬件路设计
2.1 硬件电路总体设计
图 2 为 AGV 小车系统的硬件系统框架。AGV 小车主控使用的是ST公司Cortex-M3内核的STM32F103ZET6,该芯片主频72 MHz,有多个UART。系统通过主控实现红外循迹和数据处理,通过串口,SPI等接口实现对NFC标签的识别定位,并实时通过LTE通信技术与服务器进行信息交互。
图 2 硬件系统框图
2.2 NFC定位与交互
在实际的环境中,货架多数是采用栅格的形式来规划放置,因此只需在合适的路径点上放上NFC芯片,就可以依靠NFC芯片实现准确的定位功能。
AGV小车的定位识别使用的技术是近场通信(Near Field Communication,NFC)[2]。NFC的识别过程不需要人为干预而且抗干扰能力强,可用于各种恶劣环境,适用于更多的场景。NFC比RFID更具有灵活性强的特点,操作方便只需要相应地点放置标签,NFC同时支持读写模式,卡模式,点对点(P2P)模式,可以控制AGV对标签进行读写操作。其也可在两台AGV小车之间进行通信,大大提升了各AGV之间的交互。用于定位的标签因为是无源的所以不需要额外的电源,使得功耗和维护成本大大降低,具有高的可移植性[3-4]。
RFID定位标签数据主要是当前标签的相对坐标位置信息,该坐标可以根据不同情况使用需求进行设置。综合考虑需求,本文选用NXP公司的PN532芯片。PN532是一个高度集成的非接触读写芯片,它包含80C51微控制器内核,集成了13.56MHz下的各种主动/被动式非接触通信方法和协议(串行UART,I2C,SPI)。经使用测试,在速度和精度上能满足要求。
2.3LTE通信
为了提高AGV系统移植灵活性,使AGV的实用场景不止局限于传统的车间工厂,因此对传输通信的灵活性要求很高,但是常规的AGV使用时候需要自己组网,组建和维护成本大大提升,可移植性不高,所以这里选用的通信技术是LTE(Long Term Evolution)。因为基站由移动运营商进行维护与建设,大大降低了使用与维护成本,可移植性得到了大大提高。截至2019年5月,中国建成了437万个4G基站,已经可以满足一般的使用场景的覆盖使用,而且相较于传统的GSM和WCDMA,它的传输速率更高。
AGV小车与服务器之间通信时使用MQTT协议。车辆发送给服务器时发送内容普通帧分为四部分:第一部分为车辆ID信息,一般为固定值,用户也可自行修改;第二部分为途径点识别的标签ID信息;第三部分为当前车辆运输的包裹信息,由起始时扫描二维码或抵达终点更新;第四部分为AGV当前动作,将当前车辆情况信息打包发送至服务器,然后服务器将会根据算法计算反馈回AGV小车下一个行动。
此次使用LTE芯片是SIMCOM公司的SIM7600CE芯片,它可支持GSM,TD-SCDMA,CDMA,WCDMA,TDD-LTE和FDD-LTE等频段,支持TCP/IP/IPV4/IPV6/MQTT等,可以根据实际情况灵活选择通信协议和方式,支持LTE-CAT4,上行最大速率50Mb/s,下行最大速率150Mb/s,经过实物调试,可以满足AGV于服务器之间的数据信息交互[5]。
3 服务器端及移动APP设计
3.1 基于MQTT协议的服务端与小车客户端通信部分设计
MQTT 消息队列遥测传输(Message Queuing Telemetry Transport)是ISO标准(ISO/IEC PRF 20922)[6] 下基于发布/订阅范式的消息协议。它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布 / 订阅型消息协议 [7]。
相较于传统的 HTTP 查询,MQTT 具有以下的优势 [8] :
(1)MQTT 使用发布 / 订阅范式,可以提供双向的链接。
(2)MQTT 带有 QoS(Quality of Service)功能,对于容量有限的网络可以提供高传输保证,共有三个 QoS 等级 :保证尽力交付 ;保证消息至少传送一次 ;保证每个消息仅被对方接收一次。
(3)MQTT 带有遗言(Last Will and Testament)和保留信息(Retained Messages)功能,前者使客户端在异常离线之后服务端能及时接收到客户端异常离线的信息,后者使上线后客户端能及时接收到服务端发送的信息。
一种 MQTT 连接(QoS 0)的示例如图 3 所示。
图 3 一种 MQTT 连接(QoS 0)的示例
表 1 为分别使用两种方式请求云服务器 10 次,并收到服务器返回字符串 {“hello”:“world”} 字符串的抓包统计数据,从统计结果可知,MQTT 协议相较于 HTTP GET 方式在传送数据包个数以及数据包长度上均有明显优势。
表 1 MQTT 协议和 HTTP 协议网络流量统计
本次使用的 MQTT Broker 为 EMQX,其提供有方便的Docker 部署以及便利的仪表板可用作 Broker 的管理和信息的发送接收,通过编写 Dockerfile 和 Docker-composer 封装成容器之后,可以在其他服务器中简单的配置好环境,配置环境如命令如下 :
$ 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
当 Broker 收到消息后转发给服务器后端进行处理,本例服务器端采用Eclipse Paho MQTT Python Client接收Broker转发的信息。Eclipse Paho MQTT Python Client除了支持以非阻塞的模式运行以外,还提供了许多回调函数可供在不同情况下使用与处理回调信息 [9]。
本文通过使用on_message回调函数,自动将MQTTClient接收到的信息存储到变量msg中,再通过调用自行编写的write_payload函数传递给主程序进行处理。多线程架构如图 4 所示。
图 4 多线程架构
为了提高服务器后端的工作效率, 本文中分别对RESTful API和MQTTClient创建了一个进程, 通过使用threading库调度两个线程协同运作。
3.2 基于 RESTful API 的服务器与 APP 通信部分设计
表现层状态转换(Representational State Transfer,REST)是Roy Thomas Fielding于2000年在他的博士论文 [10] 中提出来的一种万维网软件架构风格,目的是便于不同软件 /程序在网络中互相传递信息。
RESTful API 将服务器上存储的数据抽象成为一个资源,并用 URL 作为其标识,使用通用的 HTTP 请求方法(GET,POST,PUT,DELETE)对其进行增改删查的操作。相较于普通的 API,RESTful API 建模的过程与面向对象的建模过程类似,因此也比较契合 Python 的编程思想。
服务器后台程序基于以上原理使用 Python 进行编写。Python 有非常方便的库用于构建 RESTful API 和处理 Json格式数据,同时也可以移植到其他系统。本文中 APP 使用wx.reguest 向服务器请求数据后可以直接解析调用,十分方便。
APP 分为总览、车辆管理和包裹管理三部分。总览部分可以看到一些基本的统计信息,车辆管理部分可以对小车进行下线和召回等的管理,包裹管理可以对包裹进行新增、修改、分配小车运送等的管理。APP 界面如图 5 所示。
图5 APP 界面
4 结 语
本文设计了一套应用于物联网技术 AGV 小车的系统,通过 NFC 技术实现标签定位识别,小车通过 LTE 通信技术,使用灵活的 MQTT 协议与服务器之间建立通信交互,在服务器端进行数据处理整合,通过 APP 将信息反馈给用户,形成闭环,相较于传统的 AGV 系统降低了成本,提高了灵活性。
参考文献
[1] 张辰贝西,黄志球 . 自动导航车(AGV)发展综述 [J]. 中国制造业信息化,2010,39(1):53-59.
[2] 卢少平 . 基于 RFID 的 AGV 定位与导引研究 [D]. 济南:山东大学,2011.
[3] 唐浩强 . 基于物联网的智慧工厂实验系统的设计与开发 [D]. 南京:南京理工大学,2017.
[4] 潘军,王焜,缪欣呈 .AGV 智能制造平台方案的设计与研究 [J].物流技术与应用,2019,24(12):146-148.
[5] 丘源,经本钦,李精华 . 基于 ESP8266WiFi 模块和 MQTT 协议的物联网传感节点设计 [J]. 物联网技术,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 协议在物联网中的应用 [J]. 电脑知识与技术,2019,15(28):31-32.
[8] 成闻博 . 基于 MQTT 协议的物联网消息推送系统构建 [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.