摘要
摘要:文中设计了一套应用于物联网的轻量级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 封装成容器之后,可以在其他服务器中简单的配置好环境,配置环境如命令如下 :