• 写TS遇到的坑


    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无法解析

    地图更换

    不仅要更改调度里的地图,所有有关地图的相同文件都需更改,包括网页端上传的配置

  • 相关阅读:
    python字符串,列表,字典的常用方法
    Python【第一课】 Python简介和基础
    python中index()与find()的差异
    tomcat学习笔记2
    tomcat学习笔记1
    haproxy学习笔记
    高可用工具keepalived学习笔记
    ngx_http_upstream_module模块学习笔记
    nginx的rewrite,gzip,反向代理学习笔记
    nginx学习笔记1
  • 原文地址:https://www.cnblogs.com/wkhzwmr/p/16050861.html
Copyright © 2020-2023  润新知