商品自动分拣系统
商品自动分拣系统,简称分拣机,适合物流企业、工厂等应用。
接口
由于WMS系统和分拣系统不在一个地点,所以需要先为WMS开发好相应的接口。
为了达到分拣系统和WMS系统数据传输和交互的目的,开发3个对应接口:格口区分接口、
箱状态变更接口、订单称重接口。
数据传输:WMS ——>皮带机
操作:WMS将格口与箱号推送给皮带机,皮带机接收后立刻返回成功或失败信息。成功不
再推送,失败信息将继续推送。
接口名称: wms.passboxid
请求和响应POST示例:
POST:
<?xml version="1.0" encoding="utf-8"?>
<request>
<passboxid>PB123456789 </passboxid >
<status> Busy</status>
<door>5</door>
</request>
响应:
<?xml version="1.0" encoding="utf-8"?>
<response>
<flag>success </flag>
<message>PB123456789接收格口号成功 </message>
</response>
数据传输:皮带机——>WMS
皮带机扫条码,并将该条码传送至WMS。WMS接收后立刻返回成功或失败信息。成功不
再推送,失败信息将继续推送。
接口名称: wms.pbstatus
POST:
<?xml version="1.0" encoding="utf-8"?>
<request>
<passboxid>PB123456789</passboxid >
<status> Idle </status >
</request>
响应:
<?xml version="1.0" encoding="utf-8"?>
<response>
<flag>success </flag>
<message>成功更改箱状态 </message>
</response>
生产场景:皮带机称重后将订单号和重量传递给WMS。
数据传输:皮带机——>WMS
接口名称: wms.poweight
POST:
<?xml version="1.0" encoding="utf-8"?>
<request>
<waybillno>1234567890123</waybillno >
<weight> 0.59</weight >
</request>
响应:
<?xml version="1.0" encoding="utf-8"?>
<response>
<flag>success</flag>
<message>更新运单重量为0.59 </message>
</response>
分拣系统服务器与WMS的通信协议
协议描述:接口遵循REST规范,使用HTTP POST方式进行通讯。
标准协议的HTTP入口地址为:
皮带机发给WMS:
http://[wms_webservice_url]?method=[wms_API]&format=xml&v=1.0
WMS发给皮带机:
http://[pdj_webservice_url]?method=[wms_API]&format=xml&v=1.0
注:
1.[]中需要根据具体业务进行填写。wms_API,具体见上方给出的接口名称。
请求和响应的消息主体使用XML格式。
程序
测试工具
WINSOCK通信测试程序单文件版,使用十分方便,体积小巧。
串口监控器,也是十分好用的串口通信测试工具。
另外安装一个虚拟串口程序。
config.ini配置文件介绍
[URL]
URL=http://pdj.barcodesoft.cn/pdj.asp;
//测试地址,实际使用时,填写WMS系统服务器接口地址
[SMQ]
SMQ1_IP=192.168.100.102;
SMQ1_PORT=5101;
SMQ2_IP=192.168.100.102;
SMQ2_PORT=5103;
//2台网口固定式工业智能相机的IP地址和端口号设置
[PLC]
iPort1=1;
SETTINGS=9600,n,8,1;
SMQ1_NG=00;
SMQ2_NG=01;
//PLC设置
[DOOR]
DOOR1=01;
DOOR2=02;
DOOR3=03;
DOOR4=04;
DOOR5=05;
DOOR6=11;
DOOR7=12;
DOOR8=13;
DOOR9=14;
DOOR10=15;
//格口号对应数值
[TIMER]
WMS_TIMER=1000;
PLC_TIMER=2000;
//心跳计时器
[heartbeat]
PLC_s_heartbeat=88;
PLC_r_heartbeat=88;
WMS_heartbeat=99;
//心跳约定字符
程序界面
程序本身只是进行数据通信,不用人工交互,所以只是做成服务端,隐藏运行。
只是显示必要的报警信息和数据信息。