杨帆 李昆
(1.一汽-大众汽车有限公司,长春 130012;2.大众一汽发动机(大连)有限公司,大连 116000)
近年来,自动导引车(Automated Guided Vehicle,AGV)厂商在单机设计、制造、控制等方面越来越成熟和完善,但在不同品牌或者多台车辆控制上依然存在诸多问题和难度。各AGV厂家的调度系统都相互独立,当一个区域内运行多厂家生产的AGV时,如果存在路线交叉,则车辆无法有效运行,需额外投入成本解决。
本研究设计了一种调度系统,通过对其它调度系统的信号采集,可以统一控制不同厂家的调度系统,从而实现统一的管制方案,实现在同一生产区域多家AGV同时运行而互不干涉。
通过调度系统,可实现工厂级的系统运行管理、交通管制、任务分发、自动充电控制功能,同时与制造执行系统(Manufacturing Execution System,MES)、企业资源计划系统(Enterprise Resource Planning,ERP)实现无缝融合,打造全柔性、高度自动化的现代化物流。
调度系统设计的技术路线类型是设计A调度系统的第一步,通过对现阶段各种技术路线进行分析,采用最适合所需工况环境的架构进行系统设计搭建。
3.1.1 Client-Server(C/S)架构
C/S架构是程序的体系架构,服务器、客户端可以通过该架构将需要运行的任务指令合理发布到Client端和Server端(图1),从而实现预期目标,最大化降低系统通讯成本。
图1 Client-Server架构
3.1.2 Browser/Server(B/S)架构
B/S架构随着网络技术迭代而兴起,是在对C/S架构进行迭代革新而衍生出的架构。在B/S架构下,用户可以通过桌面界面对指令进行操作并实现(图2)。
图2 Browser/Server架构
3.1.3 C/S架构相对于B/S架构特点
a.技术上更成熟可靠,国内许多知名ERP系统均采用C/S架构。
b.功能更强大且更易于操作,用户体验度更好。比如在支持键盘设置快捷键操作等体验功能上,B/S架构无法满足。
c.执行远程访问更迅速,由于C/S架构比B/S架构减少一个中间层,数据在传输环节更加直接,所以在传输稳定性及结构安全性上都比B/S架构更具优势。
d.开发的系统在升级维护方面更复杂,因为结构影响必须要在每个客户端上预装专门的软件客户端才可完成。
e.开发的程序更复杂,技术难度更大,开发周期也更长,导致对技术要求过高,对程序员能力要求更严苛,成本投入更高。
3.1.4 总结
C/S架构响应速度快,安全性强,相比B/S架构来说,C/S架构迭代性更好,所以本调度系统应用C/S架构进行设计。
3.2.1 Microsoft Visual studio
美国微软公司在1995年开发的工具包系列产品。基本包含了在软件设计、升级等全生命周期内所用到的大部分工具。工具包工具缩写的代码可以适用于微软所支持的全部平台,包括Windows、Windows Mobile等,兼容性好。
3.2.2 Python
结合解释性、编译性、互动性和面向应用对象的脚步语言,是一种跨平台的计算机设计语言。可以满足多种设计场景,用于独立、大型项目的开发。
3.2.3 Java Development Kit
Java开发工具包,是一种在JAVA平台应用程序、applet和组件上构建出的开发环境(图3)。包含Java编译器、JVM等Java开发工具以及Java基础的类库和语言包规范。
图3 开发环境
3.2.4 总结
系统开发选用了Python开发环境,优点如下。
a.开源。可以自由发布软件拷贝、阅读源代码、并用于新的自由软件中。
b.可移植性。跨平台语言,在很多平台上直接写代码就可运行。
c.面向对象。既支持面向过程的函数编程也支持面向对象的抽象编程。
d.可扩展性。具有良好的可扩展性,关键代码运行更快,或希望某些算法不公开,可以把部分程序用C或C++编写,然后在程序中使用。
调度系统的程序框架结构见图4。
图4 程序框架结构
3.3.1 模块化程序框架
本系统程序设计采用分模块独立进程设计(图5),进程间通过数据库进行交互,数据库为各个独立模块的通信枢纽;程序模块按功能分为任务分配、路径规划与交通管制、AGV通信、故障处理、日志、操作界面UI。
图5 模块化程序框架
3.3.2 接口协议定义
本系统通过TCP/IP协议,读写可编程逻辑控制器(Programmable Logic Controller,PLC)内部定义数据块DB(图6)。
图6 PLC数据块DB接口定义
3.3.3 呼叫系统搭建
AGV呼叫系统搭建见图7。
图7 AGV呼叫系统
3.3.4 IT系统接入和交互
本系统开放与上层IT系统(MES/ERP/WMS等)的通信接口,通信方式包括数据库、webservice、socket。
3.3.5 数据库定义
本系统的数据库是整个调度系统的数据中心,记录所有的运行数据,根据各个独立功能模块的交互逻辑定义交互数据表,如AGV状态信息表、任务信息表、搜索路线信息表、故障信息表[1]。
3.3.6 异常处理机制
本系统的异常处理机制可以有效处理AGV脱轨、电量不足、系统崩溃、网络异常情况。
a.脱轨检测并做停车处理;
b.实时检测电量,适时调度去充电;
c.实时检测在线状态并做处理,掉线自动停车;
d.实时检测传感器状态,根据状态做相应处理。
调度系统控制算法是调度系统的核心,算法的组合直接影响调度系统的运算能力。
3.4.1 Dijkstra算法
图8首先把起点到所有点的距离存储并找出最短,然后以点进行运动,及时判断当前点到目标点是不是最短距离。
图8 Dijkstra算法
3.4.2 A*算法
图9是一种在静态网络中用算法计算出最快实现路径、最优解决方案的直接搜索算法,同时该算法也是检索问题的有效算法。在运行算法中估算值与目标实际越相近,计算结果速度越快。
图9 A*算法
3.4.3 Floyd算法
图10插点法是根据给定目标位置,不断进行动态测算,从而寻找点与点间最短的实现路径,这种算法与Dijkstra算法类似。
图10 Floyd算法
3.4.4 蚁群算法
图11是一种通过实时计算概率来优化路径的算法,这种算法的主要特征是具备启发式搜索特质、信息可以正向反馈、可以进行分布式计算,本质上该算法是一种全局优化的启发式算法。
图11 蚁群算法
3.4.5 总结
本设计中的算法通过对现场的实际观测和分析综合评估。在真实工况中存在长距离行走和短距离精确停止要求。编译逻辑是长距离采用A*算法,减少运算次数。在转向、停止位置采用Floyd算法,实现渐进精准的控制。
本系统架构编写采用独立的模块化编程思路(图12),包含通讯、数据库、任务分配、交通管制、路径规划、日志记录、LUA、监控与操作。同时这些模块以数据终端为中心,以通讯模块为桥梁,来实现AGV与线路调度系统以及各个独立模块的信号交互[2]。
图12 调度系统模块
本系统任务信息来自MES或ERP系统(图13),同时也有义务向MES或ERP汇报任务执行结果,通过各数据库模块进行任务下达及反馈,数据库模块主要用途如下[3]。
图13 MES或ERP接口通信
a.通过接入工厂信息系统MES/WMS/ERP,获取任务;
b.各数据库模块通过访问数据中心实现彼此间的信息交互;
c.存储运行过程中关键数据,如运行任务、路线、执行状态等。
调度系统与AGV终端进行实时通信,从空闲AGV终端中选择一台,并按照规定下达任务指令,使AGV按照一定的路线完成运输功能。
a.为待分配任务筛选所有可执行任务的AGV,并根据AGV运行状态及设定条件从中选出最优执行任务的AGV编号;
b.指定某台AGV执行某个或某类任务;
c.将任务分解为多个小任务执行;
d.远程暂停或取消任务。
实时路径规划根据选中AGV所在的位置,以及目标站点位置,对AGV进行前进路线优化,并指导AGV按照规划的路线行驶。
a.从AGV任务列表获取任务运行起点与终点,根据地图搜索从起动到终点的任务路线,并发送给指定AGV;
b.根据所有AGV的实时位置,根据任务运行时间最短优化最优路线;
c.路线搜索可以指定通过某一个位置;
d.将路线存储到AGV,根据任务发送对应路线编号给AGV。
根据任务目标的分解分析和设定,通过预先设计的运行逻辑对多台AGV进行统一调配(图14),避免车辆在运行中发生多车碰撞、送货不及时的情况,具体功能如下。
图14 交通避让原则
a.设定线路优先级,级别低避让级别高。
b.“先来后到”原则,先进入监控点车辆先行,后进入监控点车辆等待。
c.管制系统主动识别分析车辆运行任务及路径,分析重叠区域范围。
d.如有重叠,提前监控重叠区域内所涉及的交叉线路和监控点,提前进入监控程序并且管理相关功能点,并实时对冲突线路进行监控标记。
e.AGV在避让等待处停止等待,车辆内部系统应按照一定频率连接调度系统查询线路动态,查询先行AGV的运行状态,判断是否可以通行。
f.在特殊设定情况下执行最高等级运行模式,调度系统在交通管制中插入避让功能点,确保优先级最高的车辆顺利通行。
无线通讯模块(图15)主要负责AGV与调度系统进行信息交互,调度系统与车辆构成了应用两端,调度系统通过通讯模块向车辆发出任务指令,指挥车辆进行避让、行驶、停止、工作相关动作。同时调度系统也可以通过通讯模块接收车辆发出的运行信息[4]。
图15 通信框架
本设计使用的网络通讯模块(图16)互联型STM32F107VCT6主控制芯片通过DP83848物理芯片与工厂布局无线AP进行网络连接,并通过TCP/IP协议栈LwIP进行网络通信。无线AP使用多频点进行跳频或者AP直序扩频的数字通讯来与调度系统的上位机进行实时数据通讯,有效提高调度系统与下位机通讯的可靠性。
图16 网络通讯模块
该模块可以使用require函数和package函数加载模块,使用table模拟module来定义模块。函数require用于加载模块,module用于创建模块[5]。
通过模块化设计响应现场某些设备信号或者响应现场人工按钮动作作为呼叫信息。调度系统与现场呼叫信息均通过协议进行通信。
该模块用于对AGV运行状态及任务信息等进行监控,以图形化的界面显示其行进路线与位置信息(图17)。
图17 监控系统
a.实时显示AGV运行路线、方向位置及运行状态(图18);
图18 整体运行状态监控
b.AGV的速度、电量、报警、模式、参数信息监控(图19)。
图19 AGV状态监控
负责AGV运行状态,异常报警,任务执行记录(图20)。
图20 日志模块
a.从数据库模块导出AGV运行数据,以便后续通过一些智能算法对AGV系统的运行效率进行分析;
b.从数据库模块导出AGV运行故障数据,方便对AGV问题的定位解决;
a.环境地图设计模块。根据项目场景设计模拟环境地图及运行路线;
b.虚拟AGV设计模块。设计虚拟AGV并对其进行编号,模拟实际AGV的运行。
分为绘制、保存、存档、调取等部分,同时可以实时将下位机位置反馈在地图中。
同一区域内如果有多个厂家的AGV同时运行,一旦行车路线存在交叉或重叠等现象,本研究设计的上层调度系统,通过规范通信接口来协调多个厂家调度系统实现统一的交通管制(图21)。
图21 上层调度系统
本系统支持PLC、PLC+单片机作为控制器,带PLC以太网通信模块的AGV车型,支持PLC控制器型号:S7-200,S7-300,S7-400,S7-1200,S7-1500等市面上大多数AGV控制器型号。
软件设计上按功能模块化设计软件框架(图22),当调度数量较多时,多个功能模块可以运行在不同服务器上。
图22 模块化设计
本系统通过独立通信模块实现AGV与调度系统的信息交互,可对不同导航类型的AGV统一调度管理,实现高效协同工作,应对复杂的使用环境,通过分区域调度及系统的分布式运行可以实现超过100台AGV的大规模调度(图23)。
本系统设计友好简洁的人机界面,可实现实时监控、AGV及任务状态管理,可与视频监控融合远程监控AGV的运行状态[6](图24)。
图24 可视化管理
本系统设计支持上层MES/WMS/ERP及外围设备对接(图25),多种可扩展接口及定制的TCP/IP控制协议。
图25 多功能对接
本系统在任务分配、路径规划算法、动态优先级与管理模型进行建模(图26),减少AGV空等待时间,提高总体任务完成效率(图27)。
图26 离散化有向图路径网络建模
图27 多AGV调度管理与动态路径规划仿真路径
本系统设计的异常处理和安全机制(图28)可以有效处理脱轨、电量不足、系统崩溃、网络异常。
图28 异常处理和安全机制
a.进行脱轨检测并做停车处理;
b.实时检测电量,适时调度AGV去充电;
c.实时检测在线状态并做处理,掉线自动停车;
d.实时检测传感器状态,根据状态做相应处理。
本系统可根据实际环境进行地图设计,设定相关约束条件对调度管理及任务执行进行仿真(图29),快速验证方案有效性。
图29 建模仿真
本系统采用的操作系统IP虚拟化,关键数据异地容灾备份,权限配置管理灵活、严密。
本系统可满足整车厂大部分工况,可以有效融合各个AGV厂商现有车型,通过本调度系统的应用,各应用厂可自主掌握话语权,减少受各厂商不公开核心算法的控制。并且在产线迭代时,可自主优化程序,减少成本投入。随着AGV本体性能与功能不断提升,调度系统面临着群发群控、智能柔性、精准协调等众多问题亟待解决。本系统不断更新优化,未来可在多领域解决各应用厂的实际问题。