Bug
none_act_omi_index_recover
无行动,无索引,无恢复
复现:
一个订单状态为active,然后快速加车,快速调度
后续任务设置为True
却没有后续任务,在单个函数中,若在调用该函数会卡在第一个任务,agv车一直是dispatch状态
看日志是卡在check_task_events中
start to __check_task_events, task = 51, False, None, None,None
上方语句后续就没有了
正常的话日志还要有call back from
这种错误一定要删除数据表,不然之后的任务都跑不掉了
agv仿真车无故报错
插入数据库违反了键的唯一性
在日志中报错信息是
2022-03-30 09:35:39,471 [ts_template.py:490:__raise_error] [4212] ERROR Order(19) err_handle,err_code=103, err_detail=卸货时托盘不在车上, err_msg=
2022-03-30 09:35:39,472 [ts_template.py:723:task_event_call_back] [4212] ERROR Order(19) 回调时捕获到异常:103
这个若不插入下方的语句进行恢复,就会一直报这个bug,报错:卸货时托盘不在车上
p2a类型,取货时定义了托盘在库位上,然后取卸货去报错,卸货时托盘不在车上。
问题复现:
在Tslog文件中的om_init.log中发现,报错信息
ERROR insert_location Fail,err=错误: 重复键违反唯一约束"location_pk"
问题描述可知插入的location的id是主键,这里程序默认插入就与已有的数据库主键重复
疑惑点:
问题是TS中只创建了托盘名在某个库位下,为什么要插入个location id呢
解决方法:
执行一条sql语句即可
INSERT INTO layer2_pallet.location(
location_name)
VALUES ('RV99-1');
get_location_pallet_and_type常犯的错
该omi返回的是个列表,元素类型是元组。
当agv在同样的位置,就在取货位置再次发送请求(缘由在取货位置时候检测到库位上有托盘,终止取货,重新设置库位),会报异常
list index out of range
复现:
写的列表中查找元素确实超了索引
current_pallet_name = current_pallet_info[0]
current_pallet_type = current_pallet_info[1]
正确代码
current_pallet_name = current_pallet_info[0][0]
current_pallet_type = current_pallet_info[0][1]
莫名奇妙的问题
之前有任务出错,现在加货,却无法把仿真车跑起来,状态一直未dispatch
怀疑:是该任务已经执行了,但它的后置任务是设置为True,所以当你把这个任务取消之后,Agv车还是要执行该任务,但却取消了,所以就会阻塞。调用Agv的状态一直是dispatch.
车状态卡死
一直在dispatch,然后是由于之前的订单报错,传入的卸货地点错误,然后取消订单状态一直在waiting_cancel,接下来的订单就一直被阻塞。
易错点
get_fetch_locations_by_rule()传入的第一个参数是列表,而不是字符串
get_fetch_locations_by_rule([src],pallet_type)
get_parent_by_rule
写错写成get_parrent_by_rule;之后发现完全写错
get_parent_by_type(该omi才对)
加额外参数注意要给定默认值,位置参数若不传的话,他会报错,缺少默认值
missing 1 required positional argument
wait创建订单时格式不对
一个wait卡,所有wait卡死在这个状态中;并不是,其实时在TS目录下写了个另外的demo文件,结果无法解析该TS,导致所有TS无法解析
地图更换
不仅要更改调度里的地图,所有有关地图的相同文件都需更改,包括网页端上传的配置