AGV、RGV、四向车openTCS调度系统(六)openTCS订单的使用

运输订单

由类的实例表示,描述了由车辆执行的进程。 通常,此过程是货物从一个地点到另一个地点的实际运输。 然而,A也可以只描述车辆到目的地位置的运动以及要执行的可选车辆操作。TransportOrderTransportOrder

以下所有内容都是 openTCS 中“运输订单”的示例,即使实际上没有传输任何内容:

  • 将货物从某个地方运输到其他地方的经典订单:
    a) 移动到位置“A”并在那里执行“装载货物”操作。
    b) 移动到位置“B”并在那里执行“卸载货物”操作。
  • 操纵运输或固定货物:
    a) 移动到位置“A”并在那里执行“钻取”操作。
    b) 移动到位置“B”并在那里执行“锤子”操作。
  • 将车辆移至停车位置的命令:
    a) 移动到点“Park 01”(不执行任何特定操作)。
  • 为车辆电池充电的命令:
    a) 移动到位置“充电站”并在那里执行“充电电池”操作。

订单的生命周期

→ RAW:初始化状态
→ACTIVE:被激活
→DISPATCHABLE / UNROUTABLE:如果可以到达,状态更改为等待派发,如果目的地无法到达,状态更改为不可路由。
→BEING_PROCESSED:正在执行状态。
→WITHDRAWN:如果废弃了更改为废弃状态,
→FAILED:订单运行过程中失败,置为失败。
→FINISHED:订单结束。

AGV、RGV、四向车openTCS调度系统(六)openTCS订单的使用_第1张图片

订单组成结构

一个订单包含多个driverOrder,一个driverOrder包含一个目的地和对应的操作,对应0或者1个路由。如果车辆在原地做动作,路由为0,如果去到目的地做动作,路由为1。一个路由有多个step组成,小车适配器获取step执行。

AGV、RGV、四向车openTCS调度系统(六)openTCS订单的使用_第2张图片
AGV、RGV、四向车openTCS调度系统(六)openTCS订单的使用_第3张图片

创建订单

web API创建订单:AGV、RGV、四向车openTCS调度系统(六)openTCS订单的使用_第4张图片
rmi创建订单:

// 目的地列表,一个目的地对应一个driverOrder
List<DestinationCreationTO> destinations
    = List.of(
        new DestinationCreationTO("Some location", "Some operation")
    );
// 订单
TransportOrderCreationTO orderTO
    = new TransportOrderCreationTO("MyTransportOrder", destinations);
// 指定订单运行车辆,以及结束时间,可选。如果不指定运行车辆,内核会自动选择
orderTO = orderTO
    .withIntendedVehicleName("Some vehicle")
    .withDeadline(Instant.now().plus(1, ChronoUnit.HOURS));

// 创建订单
TransportOrderService transportOrderService = getATransportOrderService();
transportOrderService.createTransportOrder(orderTO);

撤销订单


// 根据订单名撤销
DispatcherService dispatcherService = getADispatcherService();
dispatcherService.withdrawByTransportOrder(someOrder.getReference(), true);

// 根据车辆撤销
DispatcherService dispatcherService = getADispatcherService();
dispatcherService.withdrawByVehicle(curVehicle.getReference(), true);

查看订单

web API:
AGV、RGV、四向车openTCS调度系统(六)openTCS订单的使用_第5张图片
rmi接口:


Set<org.opentcs.data.order.TransportOrder> transportOrders = kernelServicePortal.getTransportOrderService().
                fetchObjects(org.opentcs.data.order.TransportOrder.class, new TransportOrderFilter());

// 过滤器
public class TransportOrderFilter implements Predicate<TransportOrder>, Serializable {
  @Override
  public boolean test(TransportOrder transportOrder) {
    return true;
  }
}

上一篇:利用openTCS实现车辆调度系统(五)openTCS WEB接口及扩展
下一篇:路径规划二次开发

你可能感兴趣的:(车辆调度系统,java)