兰州网站建设小程序,wordpress 蜘蛛插件,响应式网页设计什么意思,商业网站建设与维护我们开发AGV的调度系统#xff0c;最重要的是要实现调度的运行#xff0c;那么调度要执行哪些任务呢#xff1f;
先来看看德国开发的开源openTCS中的功能定义#xff1a;
openTCS的控制核心是kernel#xff0c;目的是提供运输系统/工厂的抽象驾驶模型#xff0c;管理运…我们开发AGV的调度系统最重要的是要实现调度的运行那么调度要执行哪些任务呢
先来看看德国开发的开源openTCS中的功能定义
openTCS的控制核心是kernel目的是提供运输系统/工厂的抽象驾驶模型管理运输订单并计算车辆路线其内部有三种算法策略模块分别为Dispater、Router、Scheduler
派发员Dispatcher决定哪个运输订单应该由哪辆车处理。此外它需要决定车辆在某些情况下应该做什么例如当没有任何运输订单或车辆电量不足时。
路由Router为车辆找到到达目的地的最佳路线的路由器。
调度员Scheduler管理交通管理资源分配的调度程序即避免车辆相互碰撞。 重点来了我们的实现定义需要做到下面几个方法和接口
1. 定时拉取执行任务并规划相应路线
TimerFreshTask_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
一个定时器可以将需要完成的AGV任务完成 需要分发的任务分发
需要充电的机器人去充电需要去待命点的机器人去待命点
2. 发送AGV路线指令上面的任务需要发送路线调用这个方法
SendCarRoute(CarInfo car, SendRouteType RouteType, DispatchTaskDetail TaskDetail)
3. 接受处理AGV回馈信息每秒可能被执行5-10次
HandleCarFeedBack(CarStateInfo agvcar) agvcar含有该有的机器人最新信息这样机器人当前的状态所达到的地标电量等信息都能及时返回
4.发送指令给机器人的方法 Add_AGVCommand(string id, LatRcs.DispatchModel.CommandToValue ctov) 发送原理接收命令的是通讯基类命令先放到队列中。每个通讯设备都有自己一直开着的线程对应的线程会自动从队列中获取指令然后按协议发送给相关的机器人或设备。
这几个方法是调度中最重要的方法当然还有很多线程锁和辅助方法已经发送指令的方法功能都比较简单就没有列出。当代码看过3-5个不同的实现后我们会觉得方案思想会更加重要。所以互动和讨论的内容也许会优于于普通的代码会更加有价值当然初始做项目的人员还是解决方法的基本实现更有用。 如果需要讨论其他执行方法或者调度中控制细节的的可以评论或者发邮件给我 448283544qq.com