一、光通信程序功能介绍
1.1 业务场景说明
主要应用于无法搭建局域网的保密场所,使用光通信模块代替常用的 WiFi 网络,进行必要的数据传输和数据交互,以达到整个业务系统的部署和实施。
1.2 文件说明
光通信程序主要包含两个 Python 模块:http_dms_handle.py
和 http_dms_server.py
,支持 Python3.6 以上版本,在 Python 标准环境下运行。当光通信程序运行起来后,整个服务程序大概有以下四个模块化的功能块:
订单缓存系统:由http_dms_server
模块提供,主要负责接收来自 WMS、WCS、MES 等上层业务系统的运单请求,并将接收到的运单进行缓存,同时为 http_dms_handle
模块提供运单获取、运单更新、运单分类、门控服务、日志记录、用户参数接口等服务。
业务处理系统:由http_dms_handle
模块提供,主要负责网络请求、运单分流、库位检测、运单检查、运单发送、运单回调、机器人相关控制等业务处理。
用户参数配置:当 http_dms_handle.py
程序成功运行时,会自动在当前文件目录下生成 config 文件夹,并在该文件夹下生成用户配置文件 http_dms_handle.json
,用户配置文件为用户提供可供配置的必要参数,包括但不仅限于各光通信点数量、光通信点 IP及Port、服务器 IP及Port、业务处理间隔时间、机器人相关配置等。参数配置方法参见下文 2.2 章节。
日志文件:订单缓存程序和业务处理程序在正常执行过程中都会保存相关日志数据,并将日志数据写入日志文件中,程序会自动在当前文件目录下生成 script-logs 文件夹,日志文件全部自动保存于 script-logs 文件夹下。日志文件默认每 3 小时生成一次,最多保存 40 个日志文件,也就是说本系统默认最多保存 3 x 40 个小时以内的日志数据,当系统出现异常时,请务必在 120 小时内及时提取相关日志文件。该日志保存策略可根据用户实际需求做变更。
光通信程序下载
1.3 业务处理过程
光通信模式下发数据流向可简述为:上层业务系统 —> 订单缓存系统 —> 站点光通信模块 —> 机器人光通信模块 —> RDSCore —> SRC控制器,回调数据流则是反向的。其中站点光通信模块和机器人光通信模块是通过激光进行的数据交互,其他模块之间数据交互都是通过通信设备连接的。当机器人位于光通信站点时,站点光通信模块和机器人光通信模块由红外线对射进行互连,此时整个光通信网络系统才是连通的。
光通信网络拓扑图可参考 光通讯模块解决方案。
主要业务流程如下:
- 上层客户系统下发运单至订单缓存系统;
- 订单缓存系统接收并缓存运单;
- 同时,业务处理系统在不停轮询各个光通信站点,查询此站点当前是否有机器人可以接单;
- 如果某个站点有机器人可以接单,则连接当前机器人,同一时间,业务处理系统只会对接一个光通信站点;
- 业务处理系统会先暂停当前连接的机器人,并获取订单缓存系统当前所有运单,从中筛选出当前机器人可以处理的运单,发送给机器人并记录运单状态,一次只会发送固定数量的运单,剩余运单将返还给订单缓存系统进行缓存;
- 业务处理系统还会将当前正在处理的运单和已完成的运单进行状态维护,并根据上层业务系统需要将此数据进行回传,以便上层业务系统进行必要的运单数据维护;
- 业务处理系统处理完运单发送和运单回传后,将当前机器人恢复行动,机器人将根据运单内容去执行任务;
- 机器人离开光通信站点后,光通信模块处于非对射状态,当前连接将自动断开,业务处理系统将重新轮询各个光通信站点;
- 机器人执行完任务后,将自动回到最近的光通信站点等待。
下发运单流程
二、程序部署说明
2.1 环境准备
2.1.1 Python 环境安装
服务器上需安装 Python3.6.5 以上环境,安装包可从 Python 官网下载。
Unix & Linux 平台:
- 直接在终端界面输入
sudo apt-get install python3.6
即可 - 验证是否安装成功:在终端界面输入:
python -V
, 显示 Python 版本号即成功
Windows 平台:
- 下载 Python 安装包
- 双击安装包, **勾选 Add Python 3.6 to PATH,**然后一直点击下一步直到安装完成
- 验证是否安装成功:按住 win + R, 输入
cmd
, 在弹出的界面输入:python -V
, 显示 Python 版本号即安装成功
2.1.2 光通信程序运行
Unix & Linux 平台:
- 在光通信程序文件夹目录下打开两个终端
- 在终端1界面输入
python3 http_dms_server.py
- 在终端2界面输入
python3 http_dms_handle.py
Windows 平台:
- 手动运行
http_dms_server.py
和http_dms_handle.py
程序 - 可借助 VS code、Pycharm 等软件运行
http_dms_server.py
和http_dms_handle.py
程序
2.2 用户参数配置
2.2.1 参数文件
程序在成功运行后,会在当前文件目录下自动生成 config/http_dms_handle.json 配置文件。用户需要根据实际应用场景,将该配置文件中的参数进行合理配置,以下为该配置文件所有参数展示内容:
{
"internal_mode": {
"value": 0,
"default": 0,
"comment": "库内通信模式: 0代表DMS, 1代表WiFi"
},
"external_mode": {
"value": 0,
"default": 0,
"comment": "库外通信模式: 0代表DMS, 1代表WiFi"
},
"dms_interval_time": {
"value": 20.0,
"default": 20.0,
"comment": "光通讯模式任务处理间隔时间"
},
"wifi_interval_time": {
"value": 10.0,
"default": 10.0,
"comment": "wifi模式任务处理间隔时间"
},
"dms1": {
"value": "http://58.34.177.164:8088/",
"default": "http://192.167.64.25:8088/",
"comment": "库内DMS-1"
},
"dms2": {
"value": "http://192.167.64.29:8088/",
"default": "http://192.167.64.29:8088/",
"comment": "库内DMS-2"
},
"dms3": {
"value": "http://192.167.64.26:8088/",
"default": "http://192.167.64.26:8088/",
"comment": "库外DMS-1"
},
"dms4": {
"value": "http://192.167.64.27:8088/",
"default": "http://192.167.64.27:8088/",
"comment": "库外DMS-2"
},
"dms5": {
"value": "http://192.167.64.28:8088/",
"default": "http://192.167.64.28:8088/",
"comment": "库外DMS-3"
},
"dms6": {
"value": "http://192.167.64.31:8088/",
"default": "http://192.167.64.31:8088/",
"comment": "库外DMS-4"
},
"dms7": {
"value": "http://192.167.64.32:8088/",
"default": "http://192.167.64.32:8088/",
"comment": "库外DMS-5"
},
"dms8": {
"value": "http://192.167.64.33:8088/",
"default": "http://192.167.64.33:8088/",
"comment": "库外DMS-6"
},
"agv-core-1": {
"value": "http://10.10.10.72:8088/",
"default": "http://10.10.10.72:8088/",
"comment": "库内 AGV WiFi模式 IP "
},
"agv-core-2": {
"value": "http://10.10.10.70:8088/",
"default": "http://10.10.10.70:8088/",
"comment": "库外 AGV-1 WiFi模式 IP"
},
"agv-core-3": {
"value": "http://10.10.10.71:8088/",
"default": "http://10.10.10.71:8088/",
"comment": "库外 AGV-2 WiFi模式 IP"
},
"server-core": {
"value": "http://10.10.10.200:8088/",
"default": "http://10.10.10.200:8088/",
"comment": "WiFi模式服务器 Core IP"
},
"dms-server": {
"value": "http://192.168.9.144:8885/",
"default": "http://192.169.202.4:8885/",
"comment": "订单缓存服务器"
},
"call-back-server": {
"value": "http://192.169.202.2:80/api/AVG/TaskCallBack",
"default": "http://192.169.202.2:80/api/AVG/TaskCallBack",
"comment": "订单回调服务器"
},
"door-server": {
"value": "http://192.167.1.161:7070/api/Wms/GetCTUDoorStatus",
"default": "http://192.167.1.161:7070/api/Wms/GetCTUDoorStatus",
"comment": "库内门控服务器"
},
"door-service": {
"value": 0,
"default": 1,
"comment": "是否启用门控服务: 0代表关闭, 1代表开启"
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
2.2.2 参数配置说明
针对特殊应用场景下的极少数需求,本配置文件提供了较为复杂的参数配置,一般应用场景下,只需要配置其中部分参数即可,以下只介绍一般场景下的参数配置,特殊应用场景一般需要提供定制化配置及部分功能开发。
参数名称 | 参数含义 | 配置说明 |
---|---|---|
internal_mode | 库内模式 | 一般情况下,配置为 0 即可 |
external_mode | 库外模式 | 一般情况下,配置为 0 即可 |
dms_interval_time | 光通信模式对接间隔时间 | 该参数为对接成功的机器人完成数据交互后,从恢复行动到业务处理系统下一次对接机器人的间隔时间,建议值为 20 (s)。间隔时间较小会导致机器人无限重复对接,机器人将无法离开光通信站点 |
wifi_interval_time | WiFi 模式对接间隔时间 | 一般情况下,配置为 15 (s) 即可, 该参数与 dms_interval_time 功能一致,应用于 WiFi 模式 |
dms(1-8) | 各光通信模块通信地址 | 各光通信模块分配的 IP 通信地址,光通信模块数量根据现场实际情况可做删减 |
agv-core-(1-3) | WiFi 模式下各机器人通信地址 | 一般情况下,可不用配置,应用于 WiFi 模式 |
server-core | WiFi 模式下服务器 Core 通信地址 | 一般情况下,可不用配置,应用于 WiFi 模式 |
dms-server | 光通信订单缓存服务器地址 | 配置成实际部署光通信程序的服务器地址即可,只需更改对应 IP |
call-back-server | 订单回调地址 | 当需要提供订单回调服务时,需要配置该参数,该地址一般为客户提供的订单回调服务地址 |
door-server | 门控服务地址 | 一般情况下,可不用配置,提供 PLC 控制的自动门控制服务 |
door-service | 是否开启门控服务 | 一般情况下,配置为 0, 即关闭门控服务 |
2.3 运单类型选择
支持普通运单及拼合单两种方式,两种运单方式区别参考 创建运单 创建拼合单
上层业务系统只需负责对接下单接口即可实现整个派单业务流程,下单接口为 RDSCore 提供的 serOrder 接口,地址为光通信订单缓存服务器地址,通信协议为 HTTP POST。
当需求订单回调服务时,上层业务系统需要额外提供订单回调地址。
2.4 运单派发策略
2.4.1 对接轮询策略
业务处理程序不停轮询各光通信站点,查询是否有机器人可以连接,通过 ping 指令来判断当前光通信站点是否可以连通。
当光通信站点停留有机器人时,可以 ping 通当前机器人身上安装的 RDSCore 并查询到 RDSCore 的版本;
当光通信站点没有机器人时,ping 无法返回有效值。
2.4.2 运单数据
使用普通运单类型时,运单数据中的 vehicle 参数不可缺省,机器人和光通信站点需要分配关联关系,原则上一个光通信站点只能关联一个机器人,一个机器人可以关联多个光通信站点。
使用拼合单类型时,运单数据只需提供起始站点、终点站点、货物编号即可,其他数据可选择性添加。
2.4.3 运单派发
当业务处理系统对接上某台机器人时,业务处理系统会从订单缓存系统中获取当前运单数据,并通过运单数据以及光通信站点-机器人关联关系判断运单有效性,运单有效性为当前机器人可以完成此订单则为有效,否则为无效。
通过判断运单有效性,业务处理系统将缓存订单逐一发送给对应的机器人,各机器人接收运单数据后,去往各自目的地执行任务,当完成运单任务后自动返回最近的光通信站点进行数据更新。
2.5 接单效率
相比于常见的 WiFi 网络环境,光通信环境下运单的整体执行效率有所下降,主要体现在以下几方面:
- 光通信模式下,机器人会经过多个阶段的数据交互过程,包括连通性轮询、机器人暂停、缓存运单查询和更新、运单有效性检测、运单派发、运单详情查询、运单数据回调、机器人恢复行动等等,每个过程皆有时间损耗。
- 轮询过程中,当某个光通信站点没有机器人时,轮询会有一个等待超时时间,一般为 5 秒。
- 机器人每次在光通信站点对接成功,并完成订单业务数据交互后,需要有一定的间隔等待时间,保证机器人能离开光通信站点去执行任务,否则机器人在将光通信站点不停的进行对接和数据交互。该间隔等待时间经实际测试设置为 20s 较为稳妥。
- 光通信站点越多,接单效率越低,时间损耗来源于轮询站点无机器人时的等待时间。
综上所述,机器人每一次对接和数据交互过程大概在 1-3 分钟,也就是从上层业务系统下单到机器人接单,大概需要 1-3 分钟时间。至于机器人接单后的任务执行效率则与其他场景无异。