发明内容
本发明实施例提出AGV任务调度方法、装置、调度服务器及系统,以提高AGV搬运货物的效率。
本发明实施例的技术方案是这样实现的:
一种自动导引运输车AGV任务调度方法,所述AGV具有并列的两载物平台,该方法包括:
调度服务器接收并列的相邻两产线中的第二产线发来的货物搬运请求信号,第二产线为所述相邻两产线中的任一产线;
判断当前是否存在针对第一产线且还未进行货物搬运的AGV调度任务,第一产线为所述相邻两产线中除第二产线外的另一产线;
若是,则通过过滤掉第二产线发来的货物搬运请求信号而避免生成针对第二产线的AGV调度任务,使得已经为第一产线调度的AGV能够利用并列的两载物平台一次性搬走第一产线和第二产线上的货物;
否则,生成针对第二产线的AGV调度任务。
所述方法进一步包括:
预先为第一产线和第二产线分别维护第一计数器count1、第二计数器count2,且初始化count1等于第一预设值,以及初始化count2等于第一预设值;count1等于第一预设值表示当前不存在针对第一产线且还未进行货物搬运的AGV调度任务,count2等于第一预设值表示当前不存在针对第二产线且还未进行货物搬运的AGV调度任务;
且,所述判断当前是否存在针对第一产线且还未进行货物搬运的AGV调度任务包括:
判断count1是否为第一预设值,若是,则判定当前不存在针对第一产线且还未进行货物搬运的AGV调度任务;否则,判定当前存在针对第一产线且还未进行货物搬运的AGV调度任务;
且,所述通过过滤掉第二产线发来的货物搬运请求信号而避免生成针对第二产线的AGV调度任务之后进一步包括:
将count1的取值减第二预设值;
所述生成针对第二产线的AGV调度任务之后进一步包括:
将count2的取值加第二预设值;
且,当确定AGV根据AGV调度任务完成对第一产线和第二产线的货物搬运动作时,若该AGV调度任务针对第一产线,则将count1的取值减第二预设值;若该AGV调度任务针对第二产线,则将count2的取值减第二预设值。
所述方法进一步包括:预先为第一产线和第二产线分别维护计数器标志decrease1、decrease2,且初始化decrease1指示count1未减过第二预设值、decrease2指示count2未减过第二预设值;
且,所述将count1的取值减第二预设值之后进一步包括:
将decrease1修改为指示count1减过第二预设值;
且,当确定AGV根据AGV调度任务完成对第一产线和第二产线的货物搬运动作时,若该AGV调度任务针对第一产线时,所述将count1的取值减第二预设值之前进一步包括:
判断count1不为第一预设值且decrease1指示count1未减过第二预设值是否同时成立,若是,则执行所述将count1的取值减第二预设值的动作;
若该AGV调度任务针对第二产线时,所述将count2的取值减第二预设值之前进一步包括:
判断count2不为第一预设值且decrease2指示count2未减过第二预设值是否同时成立,若是,则执行所述将count2的取值减第二预设值的动作。
所述方法进一步包括:预先为第一产线和第二产线分别维护第一AGV调度任务FIFO队列、第二AGV调度任务FIFO队列,且两队列初始为空;
所述生成针对第二产线的AGV调度任务之后进一步包括:
将生成的AGV调度任务的标识放入第二AGV调度任务FIFO队列;
所述将count1的取值减第二预设值之后进一步包括:
将第一AGV调度任务FIFO队列中队首的AGV调度任务标识删除;
所述判定count1不为第一预设值且decrease1指示count1未减过第二预设值同时成立之后、将count1的取值减第二预设值之前进一步包括:
判断删除的AGV调度任务标识是否与第一AGV调度任务FIFO队列中队首的AGV调度任务标识相同,若相同,则执行所述将count1的取值减第二预设值的动作;
所述判定count2不为第一预设值且decrease2指示count2未减过第二预设值同时成立之后、将count2的取值减第二预设值之前进一步包括:
判断删除的AGV调度任务标识是否与第二AGV调度任务FIFO队列中队首的AGV调度任务标识相同,若相同,则执行所述将count2的取值减第二预设值的动作。
所述方法进一步包括:
预先为第一产线和第二产线分别维护第三计数器count3、第四计数器count4,且初始化count3等于第三预设值,以及初始化count4等于第三预设值;count3等于第三预设值表示当前不存在针对第一产线且还未进行货物搬运的AGV调度任务,count4等于第三预设值表示当前不存在针对第二产线且还未进行货物搬运的AGV调度任务;
且,所述判断当前是否存在针对第一产线且货物还未搬运的AGV调度任务包括:
判断count3是否为第三预设值,若是,则判定当前不存在针对第一产线且还未进行货物搬运的AGV调度任务;否则,判定当前存在针对第一产线且还未进行货物搬运的AGV调度任务;
且,所述通过过滤掉第二产线发来的货物搬运请求信号而避免生成针对第二产线的AGV调度任务之后进一步包括:
将count3的取值加第四预设值;
所述生成针对第二产线的AGV调度任务之后进一步包括:
将count4的取值减第四预设值;
且,当确定AGV根据AGV调度任务完成对第一产线和第二产线的货物搬运动作时,若该AGV调度任务针对第一产线,则将count3的取值加第四预设值;若该AGV调度任务针对第二产线,则将count4的取值加第四预设值。
所述方法进一步包括:预先为第一产线和第二产线分别维护计数器标志decrease3、decrease4,且初始化decrease3指示count3未加过第四预设值、decrease4指示count4未加过第四预设值;
且,所述将count3的取值加第四预设值之后进一步包括:
将decrease3修改为指示count3加过第四预设值;
且,当确定AGV根据AGV调度任务完成对第一产线和第二产线的货物搬运动作时,若该AGV调度任务针对第一产线时,所述将count3的取值加第四预设值之前进一步包括:
判断count3不为第三预设值且decrease3指示count3未加过第四预设值是否同时成立,若是,则执行所述将count3的取值加第四预设值的动作;
若该AGV调度任务针对第二产线时,所述将count4的取值加第四预设值之前进一步包括:
判断count4不为第三预设值且decrease4指示count4未加过第四预设值是否同时成立,若是,则执行所述将count4的取值加第四预设值的动作。
所述方法进一步包括:预先为第一产线和第二产线分别维护第三AGV调度任务FIFO队列、第四AGV调度任务FIFO队列,且两队列初始为空;
所述生成针对第二产线的AGV调度任务之后进一步包括:
将生成的AGV调度任务的标识放入第四AGV调度任务FIFO队列;
所述将count3的取值加第四预设值之后进一步包括:
将第三AGV调度任务FIFO队列中队首的AGV调度任务标识删除;
所述判定count3不为第三预设值且decrease3指示count3未加过第四预设值同时成立之后、将count3的取值加第四预设值之前进一步包括:
判断删除的AGV调度任务标识是否与第三AGV调度任务FIFO队列中队首的AGV调度任务标识相同,若相同,则执行所述将count3的取值加第四预设值的动作;
所述判定count4不为第三预设值且decrease4指示count4未加过第四预设值同时成立之后、将count4的取值加第四预设值之前进一步包括:
判断删除的AGV调度任务标识是否与第四AGV调度任务FIFO队列中队首的AGV调度任务标识相同,若相同,则执行所述将count4的取值加第四预设值的动作。
一种自动导引运输车AGV任务调度方法,所述AGV具有两载物平台,该方法包括:
调度服务器接收到产线发来的货物搬运请求信号;
判断当前是否存在针对所述产线且还未进行货物搬运的AGV调度任务,若是,则通过过滤掉第二产线发来的货物搬运请求信号而避免生成针对所述产线的AGV调度任务,以使得:已经为该产线调度的AGV能够利用并列的两载物平台一次性搬走该产线上的两个货物,否则,生成针对所述产线的AGV调度任务。
所述方法进一步包括:预先为产线设置任务生成标志genTaskFlag,并初始化genTaskFlag指示未生成针对该产线的AGV调度任务;
所述判断当前是否存在针对所述产线且还未进行货物搬运的AGV调度任务包括:
判断所述产线的genTaskFlag是否指示已生成针对该产线的AGV调度任务,若是,判定当前存在针对所述产线且还未进行货物搬运的AGV调度任务;否则,判定当前不存在针对所述产线且还未进行货物搬运的AGV调度任务;
且,所述生成针对所述产线的AGV调度任务之后进一步包括:
将所述genTaskFlag修改为指示已生成针对该产线的AGV调度任务;
当确定AGV根据AGV调度任务完成了对该产线的两次货物搬运动作时,将所述genTaskFlag修改为指示未生成针对该产线的AGV调度任务。
一种自动导引运输车AGV任务调度装置,所述AGV具有并列的两载物平台,该装置包括:
任务生成处理模块,用于接收并列的相邻两产线中的第二产线发来的货物搬运请求信号,第二产线为所述相邻两产线中的任一产线;判断当前是否存在针对第一产线且还未进行货物搬运的AGV调度任务,第一产线为所述相邻两产线中除第二产线外的另一产线;若是,则通过过滤掉第二产线发来的货物搬运请求信号而避免生成针对第二产线的AGV调度任务,使得已经为第一产线调度的AGV能够利用并列的两载物平台一次性搬走第一产线和第二产线上的货物;否则,生成针对第二产线的AGV调度任务。
一种自动导引运输车AGV任务调度装置,所述AGV具有两载物平台,该装置包括:
任务生成处理模块,用于接收到产线发来的货物搬运请求信号;判断当前是否存在针对所述产线且还未进行货物搬运的AGV调度任务,若是,则通过过滤掉第二产线发来的货物搬运请求信号而避免生成针对所述产线的AGV调度任务,以使得:已经为该产线调度的AGV能够利用并列的两载物平台一次性搬走该产线上的两个货物,否则,生成针对所述产线的AGV调度任务。
一种自动导引运输车AGV任务调度系统,该系统包括:调度服务器、AGV、并列且相邻的第一产线和第二产线,所述AGV具有两载物平台,其中:
调度服务器接收第二产线发来的货物搬运请求信号,第二产线为相邻两产线中的任一产线,判断当前是否存在针对第一产线且还未进行货物搬运的AGV调度任务,第一产线为所述相邻两产线中除第二产线外的另一产线,若是,则通过过滤掉第二产线发来的货物搬运请求信号而避免生成针对第二产线的AGV调度任务,使得已经为第一产线调度的AGV能够利用并列的两载物平台一次性搬走第一产线和第二产线上的货物,否则,生成针对第二产线的AGV调度任务;向AGV发送调度任务;
AGV在接收到调度服务器发来的调度任务并到达并列的相邻两产线时,先驱动一载物平台接第一产线上的货物,并启动第一定时器,且,若在第一定时器超时前从第一产线上接到了货物或者第一定时器超时,则驱动另一载物平台接第二产线上的货物,并启动第二定时器,若在第二定时器超时前从第二产线上接到了货物或者第二定时器超时,则开始向搬运目标位置移动。
一种自动导引运输车AGV任务调度系统,该系统包括:调度服务器、AGV、产线,所述AGV具有两载物平台,其中:
调度服务器接收到产线发来的货物搬运请求信号,判断当前是否存在针对所述产线且还未进行货物搬运的AGV调度任务,若是,则通过过滤掉第二产线发来的货物搬运请求信号而避免生成针对所述产线的AGV调度任务,以使得:已经为该产线调度的AGV能够利用并列的两载物平台一次性搬走该产线上的两个货物,否则,生成针对所述产线的AGV调度任务;向AGV发送调度任务;
AGV在接收到调度服务器发来的调度任务并到达产线时,先驱动一载物平台接该产线上的第一货物,并启动第一定时器,且,若在第一定时器超时前从该产线上接到了第一货物或者第一定时器超时,则驱动另一载物平台接该产线上的第二货物,并启动第二定时器,若在第二定时器超时前从该产线上接到第二货物或者第二定时器超时,则开始向搬运目标位置移动。
一种非瞬时计算机可读存储介质,非瞬时计算机可读存储介质存储指令,该指令在由处理器执行时使得处理器执行如上任一所述方法的步骤。
一种电子设备,包括如上所述的非瞬时计算机可读存储介质、以及可访问非瞬时计算机可读存储介质的上述处理器。
本发明一实施例使得在相邻产线已经生成AGV调度任务时,无需重复生成,从而使得AGV可以一次性地搬走相邻两个产线上的货物,从而提高了AGV的利用率和搬运效率,且减少了AGV在路上的移动时间,并减少了AGV在产线处的等待时间;
本发明另一实施例使得在产线已经生成针对一货物的AGV调度任务时,再有货物到达产线时,不再生成新的调度任务,从而使得一个AGV能够一次性搬走产线上的两个货物,从而提高了AGV的利用率和搬运效率,且减少了AGV在路上的移动时间,并减少了AGV在产线处的等待时间。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图1为本发明一实施例提供的AGV任务调度方法流程图,本实施例中,AGV具有并列的两载物平台,其具体步骤如下:
步骤101:调度服务器接收并列的相邻两产线中的第二产线发来的货物搬运请求信号,第二产线为所述相邻两产线中的任一产线。
步骤102:调度服务器判断当前是否存在针对第一产线且还未进行货物搬运的AGV调度任务,第一产线为所述相邻两产线中除第二产线外的另一产线;若是,则不生成针对第二产线的AGV调度任务,使得已经为第一产线调度的AGV能够一次性搬走第一产线和第二产线上的货物;否则,生成针对第二产线的AGV调度任务。
其中,AGV在接收到调度服务器发来的调度任务并到达并列的相邻两产线时,先驱动一载物平台接第一产线上的货物,并启动第一定时器,且,若在第一定时器超时前从第一产线上接到了货物或者第一定时器超时,则驱动另一载物平台接第二产线上的货物,并启动第二定时器,若在第二定时器超时前从第二产线上接到了货物或者第二定时器超时,则开始向搬运目标位置移动。
对于滚筒AGV来说,其对接的产线也是滚筒式的,待调度的货物前后顺序排列在产线的滚筒上。当AGV到达产线边缘时,驱动自己的滚筒滚动,同时上报调度服务器自己已到达调度位置,则调度服务器通知产线滚动滚筒,产线驱动滚筒向AGV方向滚动,使得货物滚到AGV的滚筒上。其中,对于产线来说,当货物到达产线边缘时,产线停止对货物所在处的滚筒进行滚动,以避免货物掉落,而只驱动后方的滚筒进行滚动,以将后方的货物滚动到产线边缘。
通过上述实施例,使得在相邻产线已经生成AGV调度任务时,无需重复生成,从而使得AGV可以一次性地搬走相邻两个产线上的货物,从而提高了AGV的利用率和搬运效率,且减少了AGV在路上的移动时间,并减少了AGV在产线处的等待时间。
在实际应用中,上述步骤101和102可通过如下方式实现:预先为第一产线和第二产线分别维护第一计数器count1、第二计数器count2,且初始化count1等于第一预设值,以及初始化count2等于第一预设值;count1等于第一预设值表示当前不存在针对第一产线且还未进行货物搬运的AGV调度任务,count2等于第一预设值表示当前不存在针对第二产线且还未进行货物搬运的AGV调度任务;
且,步骤102中,判断当前是否存在针对第一产线且还未进行货物搬运的AGV调度任务包括:判断count1是否为第一预设值,若是,则判定当前不存在针对第一产线且还未进行货物搬运的AGV调度任务;否则,判定当前存在针对第一产线且还未进行货物搬运的AGV调度任务;
且,步骤102中,不生成针对第二产线的AGV调度任务之后进一步包括:将count1的取值减第二预设值;
步骤102中,生成针对第二产线的AGV调度任务之后进一步包括:将count2的取值加第二预设值;
且,当确定AGV根据AGV调度任务完成对第一产线和第二产线的货物搬运动作时,若该AGV调度任务针对第一产线,则将count1的取值减第二预设值;若该AGV调度任务针对第二产线,则将count2的取值减第二预设值。
在实际应用中,上述方法进一步包括:预先为第一产线和第二产线分别维护计数器标志decrease1、decrease2,且初始化decrease1指示count1未减过第二预设值、decrease2指示count2未减过第二预设值;
且,步骤102中,不生成针对第二产线的AGV调度任务、将count1的取值减第二预设值之后进一步包括:将decrease1修改为指示count1减过第二预设值;
且,当确定AGV根据AGV调度任务完成对第一产线和第二产线的货物搬运动作时,若该AGV调度任务针对第一产线时,将count1的取值减第二预设值之前进一步包括:判断count1不为第一预设值且decrease1指示count1未减过第二预设值是否同时成立,若是,则执行所述将count1的取值减第二预设值的动作;
且,当确定AGV根据AGV调度任务完成对第一产线和第二产线的货物搬运动作时,若该AGV调度任务针对第二产线时,将count2的取值减第二预设值之前进一步包括:判断count2不为第一预设值且decrease2指示count2未减过第二预设值是否同时成立,若是,则执行所述将count2的取值减第二预设值的动作。
通过设置decrease1和decrease2来记录一次任务中count1、count2是否减过第二预设值,避免了count1和count2被重复减第二预设值而导致货物搬运请求被错误忽略的情况,提高了AGV任务调度的准确性。
在实际应用中,上述方法进一步包括:预先为第一产线和第二产线分别维护第一AGV调度任务FIFO(First In First Out,先进先出)队列、第二AGV调度任务FIFO队列,且两队列初始为空;
且,步骤102中,生成针对第二产线的AGV调度任务之后进一步包括:将生成的AGV调度任务的标识放入第二AGV调度任务FIFO队列;
步骤102中,不生成针对第二产线的AGV调度任务、将count1的取值减第二预设值之后进一步包括:将第一AGV调度任务FIFO队列中队首的AGV调度任务标识删除;
且,判定count1不为第一预设值且decrease1指示count1未减过第二预设值同时成立之后、将count1的取值减第二预设值之前进一步包括:判断删除的AGV调度任务标识是否与第一AGV调度任务FIFO队列中队首的AGV调度任务标识相同,若相同,则执行将count1的取值减第二预设值的动作;
且,判定count2不为第一预设值且decrease2指示count2未减过第二预设值同时成立之后、将count2的取值减第二预设值之前进一步包括:判断删除的AGV调度任务标识是否与第二AGV调度任务FIFO队列中队首的AGV调度任务标识相同,若相同,则执行将count2的取值减第二预设值的动作。
通过设置第一AGV调度任务FIFO队列、第二AGV调度任务FIFO队列,使得在AGV完成第一产线的货物搬入时刻起至完成第二产线的货物搬入时刻止,这期间若有新的货物搬运请求产生,而将对应产线的count值加第二预设值后,能够避免在完成第二产线的货物搬入后、错误地将对应产线的count值又减第二预设值从而导致该新的货物搬运请求被错误过滤掉,即,对于快节拍的生产场景能够做到合理高效调度AGV执行任务,不会出现AGV漏接任务或生成多余AGV任务的情况,进一步提高了AGV任务调度的准确率。
或者,在实际应用中,上述步骤101和102可通过如下方式实现:预先为第一产线和第二产线分别维护第三计数器count3、第四计数器count4,且初始化count3等于第三预设值,以及初始化count4等于第三预设值;count3等于第三预设值表示当前不存在针对第一产线且还未进行货物搬运的AGV调度任务,count4等于第三预设值表示当前不存在针对第二产线且还未进行货物搬运的AGV调度任务;
且,步骤102中,判断当前是否存在针对第一产线且货物还未搬运的AGV调度任务包括:判断count3是否为第三预设值,若是,则判定当前不存在针对第一产线且还未进行货物搬运的AGV调度任务;否则,判定当前存在针对第一产线且还未进行货物搬运的AGV调度任务;
且,步骤102中,不生成针对第二产线的AGV调度任务之后进一步包括:将count3的取值加第四预设值;
步骤102中,生成针对第二产线的AGV调度任务之后进一步包括:将count4的取值减第四预设值;
且,当确定AGV根据AGV调度任务完成对第一产线和第二产线的货物搬运动作时,若该AGV调度任务针对第一产线,则将count3的取值加第四预设值;若该AGV调度任务针对第二产线,则将count4的取值加第四预设值。
在实际应用中,上述方法进一步包括:预先为第一产线和第二产线分别维护计数器标志decrease3、decrease4,且初始化decrease3指示count3未加过第四预设值、decrease4指示count4未加过第四预设值;
且,步骤102中,不生成针对第二产线的AGV调度任务、将count3的取值加第四预设值之后进一步包括:将decrease3修改为指示count3加过第四预设值;
且,当确定AGV根据AGV调度任务完成对第一产线和第二产线的货物搬运动作时,若该AGV调度任务针对第一产线时,所述将count3的取值加第四预设值之前进一步包括:
判断count3不为第三预设值且decrease3指示count3未加过第四预设值是否同时成立,若是,则执行所述将count3的取值加第四预设值的动作;
且,当确定AGV根据AGV调度任务完成对第一产线和第二产线的货物搬运动作时,若该AGV调度任务针对第二产线时,所述将count4的取值加第四预设值之前进一步包括:
判断count4不为第三预设值且decrease4指示count4未加过第四预设值是否同时成立,若是,则执行所述将count4的取值加第四预设值的动作。
在实际应用中,上述方法进一步包括:预先为第一产线和第二产线分别维护第三AGV调度任务FIFO队列、第四AGV调度任务FIFO队列,且两队列初始为空;
且,步骤102中,生成针对第二产线的AGV调度任务之后进一步包括:将生成的AGV调度任务的标识放入第四AGV调度任务FIFO队列;
步骤102中,不生成针对第二产线的AGV调度任务、将count3的取值加第四预设值之后进一步包括:将第三AGV调度任务FIFO队列中队首的AGV调度任务标识删除;
且,判定count3不为第三预设值且decrease3指示count3未加过第四预设值同时成立之后、将count3的取值加第四预设值之前进一步包括:判断删除的AGV调度任务标识是否与第三AGV调度任务FIFO队列中队首的AGV调度任务标识相同,若相同,则执行所述将count3的取值加第四预设值的动作;
且,判定count4不为第三预设值且decrease4指示count4未加过第四预设值同时成立之后、将count4的取值加第四预设值之前进一步包括:判断删除的AGV调度任务标识是否与第四AGV调度任务FIFO队列中队首的AGV调度任务标识相同,若相同,则执行所述将count4的取值加第四预设值的动作。
图2为本发明另一实施例提供的AGV任务调度方法流程图,本实施例中,AGV具有两载物平台,任一载物平台的大小与产线上的货物的大小匹配,其具体步骤如下:
步骤201:调度服务器接收到产线发来的货物搬运请求信号。
步骤202:调度服务器判断当前是否存在针对该产线且还未进行货物搬运的AGV调度任务,若是,则不生成针对该产线的AGV调度任务,否则,生成针对该产线的AGV调度任务。
其中,AGV在接收到调度任务并到达该产线、且使得一载物平台与该产线对齐时,先驱动对齐的该载物平台接该产线上的第一货物,并启动第一定时器,且,若在第一定时器超时前从该产线上接到了第一货物或者第一定时器超时,则移动自身以使得另一载物平台与该产线对齐,并在对齐后驱动该另一载物平台接该产线上的第二货物,并启动第二定时器,若在第二定时器超时前从该产线上接到第二货物或者第二定时器超时,则开始向搬运目标位置移动。
通过上述实施例,使得AGV可以一次性地搬走一个产线上的两个货物,从而提高了AGV的利用率和搬运效率,且减少了AGV在路上的移动时间,并减少了AGV在产线处的等待时间。
在实际应用中,预先为产线设置任务生成标志genTaskFlag,并初始化genTaskFlag指示未生成针对该产线的AGV调度任务;
且,步骤202中,判断当前是否存在针对该产线且还未完成的AGV调度任务包括:判断该产线的genTaskFlag是否指示已生成针对该产线的AGV调度任务,若是,判定当前存在针对该产线且还未完成的AGV调度任务;否则,判定当前不存在针对该产线且还未完成的AGV调度任务;
且,步骤202中,生成针对该产线的AGV调度任务之后进一步包括:将genTaskFlag修改为指示已生成针对该产线的AGV调度任务;
当确定AGV根据AGV调度任务完成了对该产线的两次货物搬运动作时,将genTaskFlag修改为指示未生成针对该产线的AGV调度任务。
图3为本发明又一实施例提供的AGV任务调度方法流程图,本实施例中,AGV具有并列的两载物平台如:滚筒,该两滚筒的大小和装配位置与并列的相邻两产线边缘放置的货物的大小和位置匹配,其具体步骤如下:
步骤301:调度服务器为第一产线维护第一计数器count1,为第二产线维护第二计数器count2,并初始化count1=0,以表示当前不存在针对第一产线且还未进行货物搬运的AGV调度任务,初始化count2=0,以表示当前不存在针对第二产线且还未进行货物搬运的AGV调度任务;为第一产线维护count1是否减过1标志decrease1,为第二产线维护count2是否减过1标志decrease2,初始化decrease1=false,以表示count1未减过1,初始化decrease2=false,以表示count2未减过1;为第一产线维护第一AGV调度任务FIFO队列,为第二产线维护第二AGV调度任务FIFO队列,且两队列初始为空。
其中,第一产线和第二产线并列且相邻。
步骤302:调度服务器接收到并列的相邻两产线中的任一产线,设为第二产线的光电装置发来的光电信号,判断相邻产线:第一产线的count1>0是否成立,若是,执行步骤303;否则,执行步骤304。
当料箱到达产线边缘时,会触发产线边缘的光电装置发出光电信号。
步骤303:调度服务器忽略该光电信号,即不为第二产线生成任务,并将count1的取值减去1,并设置decrease1=True,且将第一AGV调度任务FIFO队列中队首的任务编码删除,转至步骤305。
步骤304:调度服务器生成针对第二产线的任务,将该任务的编码放入第二AGV调度任务FIFO队列,并将Count2的取值加1,为该任务分配AGV,向分配的AGV发送携带第一和第二产线位置和目标位置的任务执行命令。
实际应用中,任务执行命令携带的第一产线和第二产线位置具体为:第一产线和第二产线前方的中心位置,以使得AGV的两个滚筒的中心正好分别与第一产线的中心和第二产线的中心对齐。
步骤305:当AGV接收到任务执行命令时,根据该命令中携带的第一产线和第二产线前方的中心位置,到达第一产线和第二产线前方的中心位置处,先滚动第一滚筒,同时启动第一定时器,同时调度服务器通知第一产线滚动(以使得若第一产线边缘处存在料箱,则将料箱滚入第一滚筒),在第一滚筒接到料箱或者在第一定时器到时时,AGV开始滚动第二滚筒,同时启动第二定时器,同时调度服务器通知第二产线滚动(以使得若第二产线边缘处存在料箱,则将料箱滚入第二滚筒),在第二滚筒接到料箱或者在第二定时器到时时,AGV开始向目标位置前进,并向调度服务器返回滚动完成消息。
步骤306:调度服务器接收到滚动完成消息,判断该消息对应的任务是针对第一产线生成的还是针对第二产线生成的,若针对第一产线生成的,执行步骤307;若针对第二产线生成的,执行步骤308。
步骤307:调度服务器判断如下三个条件是否同时成立:count1>0、decrease1=false、该消息对应的任务编码与第一AGV调度任务FIFO队列的队首的任务编码相同,若同时成立,则将count1的取值减1,本流程结束;否则,保持count1的取值不变,本流程结束。
count1>0、decrease1=false、该消息对应的任务编码与第一AGV调度任务FIFO队列的队首的任务编码相同,这三个条件同时成立,表明:在开始执行针对第一产线的当前AGV调度任务后、直到完成对第一、二产线的料箱搬运动作前,count1从未被减过1,且,在AGV开始执行对第一产线的料箱的搬运动作后直至完成对第二产线的料箱的搬运动作前,没有新的针对第一产线的货物搬运请求产生。
步骤308:调度服务器判断如下三个条件是否同时成立:count2>0、decrease2=false、该消息对应的任务编码与第二AGV调度任务FIFO队列的队首的任务编码相同,若同时成立,则将count2的取值减1;否则,保持count2的取值不变。
图4是一个AGV同时与并列相邻的两产线对接的示意图。
以下给出本发明的应用示例一:
本应用示例如图4所示,设定:初始时,产线A上有料箱到达产线A边缘,则触发光电装置生成光电信号,调度服务器接收到该光电信号,发现相邻的产线B的countB=0,即代表产线B无AGV调度任务,则将countA加1,即countA=1,并为产线A生成AGV调度任务TaskA,在等待区的AGV中选择一个AGV1来执行TaskA。
情况一、若在AGV1完成针对产线B的滚筒的滚动过程前(设定AGV1先进行针对产线A的滚筒的滚动过程,再进行针对产线B的滚筒的滚动过程),产线B有料箱到达其边缘,触发光电信号,调度服务器接收到该光电信号,由于此时countA>0,代表产线A已经有AGV调度任务,故产线B的光电信号被过滤掉,因为AGV1可以同时接走产线A、B上的这两个料箱。此时考虑到:若不将countA立即减1,则此时如果产线B上又有一个料箱到达其边缘触发光电信号后,调度服务器会由于countA>0,又将产线B的该光电信号过滤掉,而此时实际上该光电信号不应被过滤掉,因此,此时需要将countA立即减1。
情况二、若在AGV1完成针对产线B的滚筒的滚动过程前(设定AGV1先进行针对产线A的滚筒的滚动过程,再进行针对产线B的滚筒的滚动过程),产线A上又有一个料箱到达其边缘,触发光电信号,此时由于countB=0,则调度服务器会生成一个新的AGV调度任务,并将countA加1。从而,同一个产线的两个料箱由两个AGV接,减少了AGV不必要的移动。
情况三、若在AGV1完成针对产线B的滚筒的滚动过程前(设定AGV1先进行针对产线A的滚筒的滚动过程,再进行针对产线B的滚筒的滚动过程),产线B没有料箱到达产线边缘,为减少AGV不必要的等待时间,在AGV的一个滚筒接走产线A上的料箱之后,在另一滚筒的等待时间到达超时时间T之后,AGV只带着产线A的料箱前往机械臂。
在AGV的两个滚筒的滚动过程都完成时,此时还要对产线A和B的countA和countB的取值是否需要减1作判断,不然对于只接一个料箱的场景会出现count未清零的异常情况;
另外,对于一个产线连续投2个及以上料箱的情况,还需要根据decrease的取值,来防止产线的count出现多减1的情况,从而避免多生成AGV调度任务、多分配AGV的情况;
另外,对于节拍较快的情况,例如:在AGV的第一个滚筒的滚动过程完成后和第二个滚筒的滚动过程完成前,若产线A上又有料箱到达产线边缘触发光电信号,则会生成一个新的任务,且countA会加1,则AGV在第二个滚筒的滚动过程完成后会将countA错误地减1,从而出现countA取值维护错误,如countA错误减1后取值变为0,导致此后产线B上再有料箱到达边缘后,会因为countA=0,而又生成AGV调度任务,从而导致多调度了AGV。为了避免该情况的发生,可分别为产线A、B维护FIFO队列,在生成针对一产线的任务时,将任务编码放入对应产线的队列,并在本产线虽然触发光电信号但由于相邻产线已经有任务、因此不生成针对本产线的任务时,将相邻产线的FIFO队列的队首的任务编码删除,并在AGV已经完成两个滚筒的滚动过程后,通过判断当前任务的编码是否与对应产线的FIFO队列的队首的任务编码是否相同,来确定是否对对应产线的count减1。
图5为本发明又一实施例提供的AGV任务调度方法流程图,本实施例中,AGV具有两载物平台如:滚筒,任一滚筒的大小与产线上的货物的大小匹配,其具体步骤如下:
步骤501:调度服务器为产线设置任务生成标志genTaskFlag,并初始化genTaskFlag=false,以指示未生成针对该产线的AGV调度任务。
步骤502:当产线上有料箱到达产线边缘触发光电装置生成光电信号时,调度服务器接收该光电信号,判断产线的genTaskFlag是否为false,若是,执行步骤503;否则,执行步骤504。
步骤503:调度服务器生成AGV调度任务,向调度的AGV发送携带产线位置和目标位置的任务执行命令,并修改genTaskFlag=true,以指示已生成针对该产线的AGV调度任务,转至步骤505。
步骤504:调度服务器忽略该光电信号。
步骤505:AGV根据接收到的任务执行命令,移动到产线,将第一滚筒对齐该产线并开始滚动,同时启动第一定时器,同时调度服务器通知该产线滚动,在第一滚筒接到料箱或者在第一定时器到时时,AGV移动自身直至第二滚筒对齐该产线,开始滚动第二滚筒,同时启动第二定时器,同时调度服务器通知该产线滚动,在第二滚筒接到料箱或者在第二定时器到时时,AGV开始向目标位置前进,并向调度服务器发送滚动完成消息。
步骤506:调度服务器接收到滚动完成消息,修改genTaskFlag=false。
图6是一个AGV与一个产线对接的示意图。
以下给出本发明的应用示例二:
本应用示例如图6所示,初始时,设定:产线A的genTaskFlag=false。
当料箱1到达产线A边缘触发光电信号时,由于此时genTaskFlag=false,因此调度服务器生成AGV调度任务,并修改genTaskFlag=true;
情况一、在AGV到达产线A并完成第二滚筒的滚动过程前,若又有料箱2到达产线A边缘触发光电信号,则由于此时genTaskFlag=true,该光电信号被忽略不会生成新的AGV调度任务。料箱1和2会被AGV一次性接走。
AGV一次接走两个料箱,可以减少AGV在路上的移动时间。
情况二、在AGV到达产线A并完成第二滚筒的滚动过程前,若没有料箱到达产线A边缘,则本次AGV只会接走料箱1,避免AGV在产线处长时间的等待。
无论AGV一次接走一个还是两个料箱,在完成第二滚筒的滚动过程时都要立即将genTaskFlag置false,以便新的到达产线边缘的料箱可以触发生成新的AGV调度任务,避免出现正常的AGV调度任务被过滤掉的异常情况。
需要说明的是,本发明实施例分别给出了AGV与单一产线和双产线对接的情况,对于三个以上产线,均可以分解成单一产线与双产线的组合,或者多个双产线的组合,本发明实施例具有很好的拓展性,可以根据业务场景做拓展组合。
图7为本发明一实施例提供的AGV任务调度装置的结构示意图,本实施例中,AGV具有并列的两载物平台,该装置主要包括:货物搬运请求接收模块71和任务生成处理模块72,其中:
货物搬运请求接收模块71,用于接收并列的相邻两产线中的第二产线发来的货物搬运请求信号,第二产线为所述相邻两产线中的任一产线。
任务生成处理模块72,用于在货物搬运请求接收模块71接收到货物搬运请求信号后,判断当前是否存在针对第一产线且还未进行货物搬运的AGV调度任务,第一产线为所述相邻两产线中除第二产线外的另一产线;若是,则不生成针对第二产线的AGV调度任务,使得已经为第一产线调度的AGV能够一次性搬走第一产线和第二产线上的货物;否则,生成针对第二产线的AGV调度任务。
其中,AGV在接收到调度服务器发来的调度任务并到达并列的相邻两产线时,先驱动一载物平台接第一产线上的货物,并启动第一定时器,且,若在第一定时器超时前从第一产线上接到了货物或者第一定时器超时,则驱动另一载物平台接第二产线上的货物,并启动第二定时器,若在第二定时器超时前从第二产线上接到了货物或者第二定时器超时,则开始向搬运目标位置移动。
在实际应用中,任务生成处理模块72进一步用于:预先为第一产线和第二产线分别维护第一计数器count1、第二计数器count2,且初始化count1等于第一预设值,以及初始化count2等于第一预设值;count1等于第一预设值表示当前不存在针对第一产线且还未进行货物搬运的AGV调度任务,count2等于第一预设值表示当前不存在针对第二产线且还未进行货物搬运的AGV调度任务;
且,判断当前是否存在针对第一产线且还未进行货物搬运的AGV调度任务包括:判断count1是否为第一预设值,若是,则判定当前不存在针对第一产线且还未进行货物搬运的AGV调度任务;否则,判定当前存在针对第一产线且还未进行货物搬运的AGV调度任务;
且,不生成针对第二产线的AGV调度任务之后进一步用于:将count1的取值减第二预设值;
生成针对第二产线的AGV调度任务之后进一步用于:将count2的取值加第二预设值;
且,当确定AGV根据AGV调度任务完成对第一产线和第二产线的货物搬运动作时,若该AGV调度任务针对第一产线,则将count1的取值减第二预设值;若该AGV调度任务针对第二产线,则将count2的取值减第二预设值。
在实际应用中,任务生成处理模块72进一步用于:预先为第一产线和第二产线分别维护计数器标志decrease1、decrease2,且初始化decrease1指示count1未减过第二预设值、decrease2指示count2未减过第二预设值;
且,不生成针对第二产线的AGV调度任务、将count1的取值减第二预设值之后进一步用于:将decrease1修改为指示count1减过第二预设值;
且,当确定AGV根据AGV调度任务完成对第一产线和第二产线的货物搬运动作时,若该AGV调度任务针对第一产线时,所述将count1的取值减第二预设值之前进一步用于:判断count1不为第一预设值且decrease1指示count1未减过第二预设值是否同时成立,若是,则执行所述将count1的取值减第二预设值的动作;若该AGV调度任务针对第二产线时,将count2的取值减第二预设值之前进一步用于:判断count2不为第一预设值且decrease2指示count2未减过第二预设值是否同时成立,若是,则执行所述将count2的取值减第二预设值的动作。
在实际应用中,任务生成处理模块72进一步用于:预先为第一产线和第二产线分别维护第一AGV调度任务FIFO队列、第二AGV调度任务FIFO队列,且两队列初始为空;
且,生成针对第二产线的AGV调度任务之后进一步用于:将生成的AGV调度任务的标识放入第二AGV调度任务FIFO队列;
不生成针对第二产线的AGV调度任务、将count1的取值减第二预设值之后进一步用于:将第一AGV调度任务FIFO队列中队首的AGV调度任务标识删除;
判定count1不为第一预设值且decrease1指示count1未减过第二预设值同时成立之后、将count1的取值减第二预设值之前进一步用于:判断删除的AGV调度任务标识是否与第一AGV调度任务FIFO队列中队首的AGV调度任务标识相同,若相同,则执行所述将count1的取值减第二预设值的动作;
判定count2不为第一预设值且decrease2指示count2未减过第二预设值同时成立之后、将count2的取值减第二预设值之前进一步用于:判断删除的AGV调度任务标识是否与第二AGV调度任务FIFO队列中队首的AGV调度任务标识相同,若相同,则执行所述将count2的取值减第二预设值的动作。
在实际应用中,任务生成处理模块72进一步用于:预先为第一产线和第二产线分别维护第三计数器count3、第四计数器count4,且初始化count3等于第三预设值,以及初始化count4等于第三预设值;count3等于第三预设值表示当前不存在针对第一产线且还未进行货物搬运的AGV调度任务,count4等于第三预设值表示当前不存在针对第二产线且还未进行货物搬运的AGV调度任务;
且,判断当前是否存在针对第一产线且货物还未搬运的AGV调度任务包括:判断count3是否为第三预设值,若是,则判定当前不存在针对第一产线且还未进行货物搬运的AGV调度任务;否则,判定当前存在针对第一产线且还未进行货物搬运的AGV调度任务;
且,不生成针对第二产线的AGV调度任务之后进一步用于:将count3的取值加第四预设值;
生成针对第二产线的AGV调度任务之后进一步用于:将count4的取值减第四预设值;
且,当确定AGV根据AGV调度任务完成对第一产线和第二产线的货物搬运动作时,若该AGV调度任务针对第一产线,则将count3的取值加第四预设值;若该AGV调度任务针对第二产线,则将count4的取值加第四预设值。
在实际应用中,任务生成处理模块72进一步用于:预先为第一产线和第二产线分别维护计数器标志decrease3、decrease4,且初始化decrease3指示count3未加过第四预设值、decrease4指示count4未加过第四预设值;
且,不生成针对第二产线的AGV调度任务、将count3的取值加第四预设值之后进一步用于:将decrease3修改为指示count3加过第四预设值;
且,当确定AGV根据AGV调度任务完成对第一产线和第二产线的货物搬运动作时,若该AGV调度任务针对第一产线时,所述将count3的取值加第四预设值之前进一步用于:判断count3不为第三预设值且decrease3指示count3未加过第四预设值是否同时成立,若是,则执行所述将count3的取值加第四预设值的动作;
若该AGV调度任务针对第二产线时,所述将count4的取值加第四预设值之前进一步用于:判断count4不为第三预设值且decrease4指示count4未加过第四预设值是否同时成立,若是,则执行所述将count4的取值加第四预设值的动作。
在实际应用中,任务生成处理模块72进一步用于:预先为第一产线和第二产线分别维护第三AGV调度任务FIFO队列、第四AGV调度任务FIFO队列,且两队列初始为空;
生成针对第二产线的AGV调度任务之后进一步用于:将生成的AGV调度任务的标识放入第四AGV调度任务FIFO队列;
不生成针对第二产线的AGV调度任务、将count3的取值加第四预设值之后进一步用于:将第三AGV调度任务FIFO队列中队首的AGV调度任务标识删除;
判定count3不为第三预设值且decrease3指示count3未加过第四预设值同时成立之后、将count3的取值加第四预设值之前进一步用于:判断删除的AGV调度任务标识是否与第三AGV调度任务FIFO队列中队首的AGV调度任务标识相同,若相同,则执行所述将count3的取值加第四预设值的动作;
判定count4不为第三预设值且decrease4指示count4未加过第四预设值同时成立之后、将count4的取值加第四预设值之前进一步用于:判断删除的AGV调度任务标识是否与第四AGV调度任务FIFO队列中队首的AGV调度任务标识相同,若相同,则执行所述将count4的取值加第四预设值的动作。
图8为本发明另一实施例提供的AGV任务调度装置的结构示意图,本实施例中,AGV具有两载物平台,该装置主要包括:货物搬运请求接收模块81和任务生成处理模块82,其中:
货物搬运请求接收模块81,用于接收产线发来的货物搬运请求信号。
任务生成处理模块82,用于在货物搬运请求接收模块81接收到货物搬运请求信号后,判断当前是否存在针对所述产线且还未进行货物搬运的AGV调度任务,若是,则不生成针对所述产线的AGV调度任务,以使得:已经为该产线调度的AGV能够一次性搬走该产线上的两个货物,否则,生成针对所述产线的AGV调度任务。
其中,AGV在接收到调度服务器发来的调度任务并到达产线时,先驱动一载物平台接该产线上的第一货物,并启动第一定时器,且,若在第一定时器超时前从该产线上接到了第一货物或者第一定时器超时,则驱动另一载物平台接该产线上的第二货物,并启动第二定时器,若在第二定时器超时前从该产线上接到第二货物或者第二定时器超时,则开始向搬运目标位置移动。
在实际应用中,任务生成处理模块82进一步用于:预先为产线设置任务生成标志genTaskFlag,并初始化genTaskFlag指示未生成针对该产线的AGV调度任务;
且,判断当前是否存在针对所述产线且还未进行货物搬运的AGV调度任务包括:判断所述产线的genTaskFlag是否指示已生成针对该产线的AGV调度任务,若是,判定当前存在针对所述产线且还未进行货物搬运的AGV调度任务;否则,判定当前不存在针对所述产线且还未进行货物搬运的AGV调度任务;
且,生成针对所述产线的AGV调度任务之后进一步用于:将所述genTaskFlag修改为指示已生成针对该产线的AGV调度任务;
且,当确定AGV根据AGV调度任务完成了对该产线的两次货物搬运动作时,将所述genTaskFlag修改为指示未生成针对该产线的AGV调度任务。
本发明一实施例还提供一种AGV任务调度系统,该系统包括:调度服务器、AGV、并列且相邻的第一产线和第二产线,AGV具有两载物平台,其中:
调度服务器接收第二产线发来的货物搬运请求信号,第二产线为相邻两产线中的任一产线,判断当前是否存在针对第一产线且还未进行货物搬运的AGV调度任务,第一产线为所述相邻两产线中除第二产线外的另一产线,若是,则不生成针对第二产线的AGV调度任务,使得已经为第一产线调度的AGV能够一次性搬走第一产线和第二产线上的货物,否则,生成针对第二产线的AGV调度任务;向AGV发送调度任务;
AGV在接收到调度服务器发来的调度任务并到达并列的相邻两产线时,先驱动一载物平台接第一产线上的货物,并启动第一定时器,且,若在第一定时器超时前从第一产线上接到了货物或者第一定时器超时,则驱动另一载物平台接第二产线上的货物,并启动第二定时器,若在第二定时器超时前从第二产线上接到了货物或者第二定时器超时,则开始向搬运目标位置移动。
本发明另一实施例还提供一种AGV任务调度系统,该系统包括:调度服务器、AGV、产线,AGV具有两载物平台,其中:
调度服务器接收到产线发来的货物搬运请求信号,判断当前是否存在针对所述产线且还未进行货物搬运的AGV调度任务,若是,则不生成针对所述产线的AGV调度任务,以使得:已经为该产线调度的AGV能够一次性搬走该产线上的两个货物,否则,生成针对所述产线的AGV调度任务;向AGV发送调度任务;
AGV在接收到调度服务器发来的调度任务并到达产线时,先驱动一载物平台接该产线上的第一货物,并启动第一定时器,且,若在第一定时器超时前从该产线上接到了第一货物或者第一定时器超时,则驱动另一载物平台接该产线上的第二货物,并启动第二定时器,若在第二定时器超时前从该产线上接到第二货物或者第二定时器超时,则开始向搬运目标位置移动。
本发明实施例还提供一种非瞬时计算机可读存储介质,非瞬时计算机可读存储介质存储指令,该指令在由处理器执行时使得处理器执行如图1、2、3、5任一所述方法的步骤。
本发明实施例还提供一种电子设备,包括如上所述的非瞬时计算机可读存储介质、以及可访问非瞬时计算机可读存储介质的上述处理器。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。