关于iwms报错“查找货架不足”问题排查案例
在仓储项目的入库场景中,大部分项目都是先呼叫货架到工作台,然后再进行上架。呼叫货架时,当满足条件的空货架不足,就会报错“查找货架不足”之类的报错,本案例分享项目上常用的思路方法,不管是工作站客户端和PDA终端呼叫货架、iwms自动补充、cms仓储自动补充等场景,也可以沿用该方法进行排查。

一、问题现象

1.1 问题现象

现场在工作站客户端的循环入库——呼叫货架界面,操作呼叫1个全空的1C货架类型,iwms返回报错“查找货架不足“。

(图1)循环入库呼叫货架界面


(图2)iwms接口日志返回报错


1.2 确认呼叫类型

根据iwms的接口日志报文,需要注意确认呼叫类型和查找货架的条件(以及是否指定货架号),具体报文字段释义可以参考第四章常见接口文档,如该案例呼叫类型为:循环呼叫一个全空的1C货架类型 。

(图3)iwms接口日志详情


二、排查过程

前面1.2.章节已经确认需要呼叫一个货架类型为1C的全空货架,因此我们需要排查两个货架和仓位两个方面:

· 货架方面:该货架类型的初始化状态、是否出入冻结,是否全空仓位;

· 仓位方面:初始化状态、是否出入冻结、仓位空满标识、是否启动盘点或者理货标识

目前基线的仓位管理界面,无法同时筛选以上这几个条件,需要在Data View增加“入库冻结(系统)、出库冻结(系统)、盘点标识、理货标识”四个条件,增加配置方法如下:

步骤1:

打开Data View搜索仓位列表布局文件,然后点击设计;


(图4)Data View布局文件


步骤2:

在左边表单元件栏拖拽一个“下拉框”到合适位置上,然后进入右上角的多语言,找到“入库系统(冻结)”默认的Key值为intoBlkSysFlag,填在元件标识和标签属性里面,即可该选择栏的中文名称。


(图5)Data View布局设计界面



(图6)仓位列表界面多语言列表



步骤3:

字段名查看iwms数据库仓位表wms_stg_bin表,确认“入库系统(冻结)”对应的字段名为into_blk_sys_flag,因为前端界面赋值为驼峰格式,因为字段名属性填“intoBlkSysFlag”;


(图7)仓位表“入库系统(冻结)”字段名


(图8)配置字段名


步骤4:

配置下拉框的选择项,因为入库系统(冻结)对应的值为:0未冻结、1已冻结,所以要配置两个下拉选择项,然后点击左上角“保存“,就完成配置流程。

(图9)配置下拉框选择项


(图10)配置后的仓位管理界面


2.1 网页排除法

先在货架管理界面,筛选货架类型为“1C”、货架初始化状态为“已初始化”、出入库冻结(用户)状态为“未冻结”、选择全空货架。

· 如果查询出来可用货架数量为0,然后单独一一去掉查询条件,即可排除导致没有空货架的具体原因;

· 如果查询出来的可用货架数量非0,则需要到仓位管理界面上进一步排查原因。

(图11)货架管理界面


在仓位管理界面,筛选出入库冻结(用户)状态为“未冻结”、出入库冻结(系统)状态为“未冻结”、仓位选择“空仓”、盘点和理货标识为“未启动”,把在货架管理界面查询的货架号,复制黏贴填入货架编号号栏进行查询。

· 如果查询出来仓位数量为0,然后单独一一去掉查询条件,即可排除导致没有仓位的具体原因;

· 如果如果查询出来的可用仓位数量非0,则是iwms系统BUG,需要联系研发进行排查。

(图12)仓位管理界面


2.2 日志分析法

根据iwms接口日志报错时间点下载对应的wms_debug日志,然后在iwms日志搜报错“查找货架不足”,找到对应时间点报错内容“{"code":"99","message":"查找货架不足","success":false}”。然后标定进程号,往上面的日志行找到查询结果为0的SQL语句。


(图13)日志对应报错日志行


将SQL查询结果为0 的日志两个日志行单独复制出来,第一行是SQL语句格式,第二行的6个字符串是查询条件,每个值要按照顺序替换掉,第一行的日志行里面的问号?,然后用英文单引号包起来‘’,然后把select前面的内容都删除掉就可以得到拼接后的SQL语句;


(图14)提取日志拼接SQL


连上iwms数据库,新建SQL编辑器把拼接后SQL复制进去,按Ctrl+A全选、再右键选择格式——格式化SQL。然后一段一段执行查询结果(and开头为一段),如果无查询结果的条件,就是该字段导致无法满足选到可用货架的原因。


(图15)执行SQL查询


三、常用接口文档

3.1 呼叫货架

接口名

/wms/api/client/callPod

功能说明

工作站呼叫货架,支持空货架、非空货架、有库存货架

接口协议

http(s)/post

提供方

iWMS

调用方

客户端

请求参数

参数名

数据类型

最大长度

是否必填

备注

workAreaCode

String

16

工作区编号(包含工作站)

taskType

String

4

任务类型

wbStatus

String

1

启停通知(0-停止呼叫1-循环呼叫 2-非循环呼叫)

emptyContainerFlag

String

1

空容器出库必填

channelFlag

String

1

巷到空货架出库必填

停止呼叫下面条件不填

blkFlag

String

1

呼叫货架后是否需要冻结仓位(1-是0-否)

podQty

String

2

货架个数

enablePartPod

String

1

是否挑选部分为空货架(1允许,0不允许),

sort

String

4

仓位数量大小排序规则(只能为desc 或asc)

查找货架的条件

podTypeCode

String

2

货架类型

podTypeCodes

Array

货架类型

stgTypeCode

String

32

库区编号

stgTypeCodes

Array

库区编号

stgBinTypCode

String

2

仓位类型

stgBinTypCodes

Array

仓位类型

podCode

String

32

货架编号

podCodes

Array

货架编号

binCode

String

32

仓位编号

binCodes

Array

仓位编号

traceCode

String

32

容器编号

traceCodes

Array

容器编号

ownerCode

String

32

货主

matCode

String

32

物料

batchNum

String

32

批次

返回结果

code

Integer

2

结果码(0-成功)

message

String

64

结果描述

备注

1、呼叫货架后是否需要冻结(1-是0-否);根据场景选择,如出入库,需要冻结,防止被其他呼叫查到;如自由搬运,不需要锁定,可同时呼叫到;

2、支持指定呼叫、循环呼叫、停止呼叫;

示例

请求参数

循环呼叫

{

  "blkFlag": "1",

  "enablePartPod": "0",

  "podQty": 1,

  "podTypeCode": "B2",

  "sort": "",

  "stgTypeCode": "T2",

  "taskType": "D1",

  "wbStatus": "1",

  "workAreaCode": "WW"

}

停止呼叫

{

  "taskType": "G1",

  "wbStatus": "0",

  "workAreaCode": "064391CC032299"

}

指定呼叫

{

  "blkFlag": "0",

  "podCodes": [

    "400001"

  ],

  "taskType": "M1",

  "wbStatus": "2",

  "workAreaCode": "WW"

}

返回结果

{

  "code": "0x89600000",

  "message": "OK.",

  "success": true

}

3.2 申请空货架接口

接口名

/applyForEmptyPod

功能说明

呼叫空货架时,向WMS申请空货架

接口协议

REST

提供方

第三方

调用方

TPS

请求参数

参数名

数据类型

最大

长度

是否必填

备注

reqCode

String

32

请求编号,每个请求都要一个唯一编号, 同一个请求重复提交, 使用同一编号。由第三方系统提供

reqTime

String

20

请求时间截 格式: “yyyy-MM-dd HH:mm:ss”。由第三方系统提供

clientCode

String

16

客户端编号,如PDA,HCWMS等。由TPS告知第三方系统

tokenCode

String

64

令牌号, 由调度系统颁发。由TPS告知第三方系统

podTyp

String

32

货架类型

podNum

String

32

货架个数

callTyp

String

32

呼叫类型

1. 允许非空货架

2. 必须是空货架

应答

code

String

返回码

message

String

返回消息

reqCode

String

请求编号

data

String[]

仓位编号列表返回

备注

示例

请求

POST http://IP:PORT/services/agv/agvCallbackService/applyForEmptyPod

{"reqCode":"",

"reqTime":"",

"clientCode":"",

"tokenCode":"",

"podTyp":"1",

"username":"",

"podNum":"",

"callTyp":""

}

应答

{ "code": “0”, "message": "成功", "reqCode": "1541954B96B1112",

"data": [

"100001AAXXXXX",

"100002AAXXXXX",

"100003AAXXXXX"

] }

版权声明:本文为V社区用户原创内容,转载时必须标注文章的来源(V社区),文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:v-club@hikrobotics.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
上一篇
已经是第一篇啦~
下一篇
已经是最后一篇啦~
评论请先登录 登录
全部评论 0
Lv.0
0
关注
0
粉丝
0
创作
0
获赞
相关阅读
  • 【V社区四周年】-与你一起重新定义‘看见’的方式
    2025-12-17 浏览 0
  • 细化梯度
    2025-11-26 浏览 0
  • 叉车效率优化
    2025-11-28 浏览 0
  • 懒人福音!V社区联姻微信,授权登录快人一步
    2025-12-16 浏览 0
  • 3D轮廓仪单台相机系统标定介绍
    2025-12-10 浏览 0

请升级浏览器版本

您正在使用的浏览器版本过低,请升级最新版本以获得更好的体验。

推荐使用以下浏览器