写TS遇到的坑


gp表和mapping的使用场景

gp表多个订单共享信息(不需要库管类型)
mapping表实现带库管的多区域取卸货

agv仿真车无故报错

插入数据库违反了键的唯一性

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

相关