接上次研究,经同事一起测试及实现,最终无法实现直接使用OpenTCS直接转Web页面。
现实现方式为第四种 -- 自行创建Web项目,然后实现前后端代码跳转,仿OpenTCS实现功能
功能实现有最主要的几个数据:
1、AGV车辆管理:实现启用AGV,加入功能队列,或闲置AGV,AGV充电,有货,无货等多种状态
2、路径点管理:分配现场AGV输送路径,路径上每个需AGV停止的位置 或 进行操作的点位(我这里设计的点位仿照OpenTCS实现暂停点位(车辆暂时停止 或者说是缓存区暂时储存AGV),充电位置,扫描位置(AGV到此位置时向程序进行汇报),操作位置(实现货物转接等操作))
3、订单管理:AGV小车需执行的动作,此时订单只是创建,并且订单都为自动创建,特殊情况可在后台权限进行订单创建,但并不会进行分配,例:订单A:点1 到 点5,订单B:点7 到 点10,订单C:点5 到 点9,这些信息可在后台进行查看管理,此处创建订单和放弃订单在正式工厂运行中都有一定风险,所以设计时需谨慎。
4、订单分配:此功能是订单管理的一部分,每次创建订单后,这份订单会分配给此功能,此功能会根据算法(算法就根据需求自定义了)自动匹配合适的AGV进行分配。
例:根据先后顺序创建了上述订单A,B,C,现场只有一辆AGV小车(AGV1),位置为点3,状态为启用,无货,那么会先进行查看点1位置是否有AGV,无在查看启用,无货的AGV,并计算各AGV到点1的距离,选取最短的一个(AGV1),交由订单管理创建订单,订单D:点3 到 点1,再重复上述,会直接匹配到AGV1,并分配此订单,当AGV完成订单D后,会再次分配订单A,订单C,在创建订单E:点9 到 点 7 分配给AGV1,在分配订单B。即 创建3=>1执行1=>5=>9创建9=>7执行7=>10
5、路劲算法,我想的算法分两种:(此处具体的就不说了,网上大神们写的很多)
一:时间计算
计算单个订单最短执行时间,时间最短的为最佳路径,然后确认此订单所走路径
二:距离计算
计算单个订单最短执行距离,距离最短的为最佳路径,然后确认此订单所走路径
再之后应该就不会研究这个了(当然算法另说),毕竟这个这样弄就相当于一个普通项目了。