一、脚本功能介绍
1.1 文件说明
通信脚本interact.py
主要用于机器人执行任务前后需要与现场设备进行交互的场景,一般交互场景如下:
- 机器人到达目标站点,告知现场设备已到位;
- 机器人进行作业前,获取现场设备状态是否就绪;
- 机器人作业完成后,告知现场设备任务已完成。
第一次运行脚本后,会生成 interact.json
配置文件,打开该文件并按照提示进行配置。
通信脚本文件下载
1.2 业务场景说明
下发指令中data
字段下 reach
字段代表到位通知,action
字段代表读取设备状态并请求执行动作,finish
字段代表任务完成通知,各字段具体内容依据项目协议给出。可根据具体业务流程任意组合,例如:
- 业务只需要到位通知,则
data
数据中只需包含reach
字段即可; - 业务需要到位通知和任务完成通知,则
data
数据中需包含reach
字段和finish
字段; - 业务需要到位通知,执行动作前需要查询设备状态,任务完成后需要告知终端,则
data
数据中需包含reach
字段、action
字段 和finish
字段。
二、HTTP协议
不同的项目现场,通信协议中定义的数据字段会有所不同,一下示例以《库卡项目接口协议V1.4》作为参考。
addr 为交互设备服务端地址,data 字段根据项目具体协议要求给出约定的数据字段,protocol 可选择 HTTP 和 Modbus TCP 协议。
2.1 到位通知
addr 为交互设备服务端地址,data 字段根据项目具体协议要求给出约定的数据字段,protocol 为 HTTP ,其他指令皆一致,后续不在赘述。
{
"operation": "script",
"id": "SELF_POSITION",
"script_name": "interact.py",
"script_args": {
"addr": "http://127.0.0.1:8088", //更改为现场设备IP及PORT
"data": { //根据实际项目协议更改 data 数据
"reach": {"id": "终端设备名", "status": "机器人的状态码"}
},
"protocol": "HTTP"
}
}
2
3
4
5
6
7
8
9
10
11
12
2.2 获取设备状态
{
"operation": "script",
"id": "SELF_POSITION",
"script_name": "interact.py",
"script_args": {
"addr": "http://127.0.0.1:8088",
"data": {
"action": {"id": "终端设备名"}
},
"protocol": "HTTP"
}
}
2
3
4
5
6
7
8
9
10
11
12
2.3 任务完成通知
{
"operation": "script",
"id": "SELF_POSITION",
"script_name": "interact.py",
"script_args": {
"addr": "http://127.0.0.1:8088",
"data": {
"finish": {"id": "终端设备名", "status": "机器人的状态码"}
},
"protocol": "HTTP"
}
}
2
3
4
5
6
7
8
9
10
11
12
2.4 导航前、后执行通信脚本
在导航任务前执行通信脚本,进行到位通知及获取设备状态,以确认作业可以正常进行;在导航任务完成后执行通信脚本,告知现场设备任务完成,机器人即将离开。data 字段根据项目具体协议要求给出约定的数据字段。
以下示例表示:在执行 ForkLoad
任务前,先调用 interact.py
脚本,进行到位通知及获取设备状态;然后执行ForkLoad
任务;执行ForkLoad
任务完成后,再次调用 interact.py
脚本,告知现场设备任务完成。setup_script
和post_script
可以指定不同的脚本。
该功能需要 Robokit 更新到 3.3.5.66 以上版本
执行顺序为:
- 执行
setup_script
指定的脚本; - 执行导航任务,此例为
ForkLoad
任务; - 执行
post_script
指定的脚本。
{
"operation": "ForkLoad",
"start_height": 0.3,
"end_height": 0.5,
"recfile": "p0001.pallet",
"recognize": true,
"setup_script": "interact.py",
"setup_script_args": {
"addr": "http://127.0.0.1:8088",
"data": {
"reach": {"id": "终端设备名", "status": "机器人的状态码"},
"action": {"id": "终端设备名"}
},
"protocol": "HTTP"
},
"post_script": "interact.py",
"post_script_args": {
"addr": "http://127.0.0.1:8088",
"data": {
"finish": {"id": "终端设备名", "status": "机器人的状态码"}
},
"protocol": "HTTP"
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
三、Modbus TCP协议
使用RDSCore
与现场终端设备交互功能接口,数据定义及业务流程可参考与终端交互。
3.1 查询现场终端状态
roboshop 终端配置界面将 isConfigParameter
配置选项配置为 true
时
{
"operation":"script",
"id":"SELF_POSITION",
"script_name":"interact.py",
"script_args":{
"addr":"http://127.0.0.1:8088/callTerminal",
"data": {
"action":{
"id":"terminalName",
"type":"read"
}
},
"protocol":"ModbusTCP"
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
roboshop 终端配置界面将 isConfigParameter
配置选项配置为 false
时
{
"operation":"script",
"id":"SELF_POSITION",
"script_name":"interact.py",
"script_args":{
"addr":"http://127.0.0.1:8088/callTerminal",
"data": {
"action":{
"id": "terminalName",
"type": "readAddr",
"address": 2,
"functionCode": 3
}
},
"protocol":"ModbusTCP"
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
3.2 告知现场终端开始任务
roboshop 终端配置界面将 isConfigParameter
配置选项配置为 true
时
{
"operation":"script",
"id":"SELF_POSITION",
"script_name":"interact.py",
"script_args":{
"addr":"http://127.0.0.1:8088/callTerminal",
"data":{
"reach":{
"id":"terminalName",
"type": "write",
"value": 23
}
},
"protocol":"ModbusTCP"
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
roboshop 终端配置界面将 isConfigParameter
配置选项配置为 false
时
{
"operation":"script",
"id":"SELF_POSITION",
"script_name":"interact.py",
"script_args":{
"addr":"http://127.0.0.1:8088/callTerminal",
"data":{
"reach":{
"id": "terminalName",
"type": "writeAddr",
"value": 23,
"address": 3,
"functionCode": 6
}
},
"protocol":"ModbusTCP"
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
3.3 导航前、后执行通信脚本
以下示例表示:在执行 ForkLoad
任务前,先调用 interact.py
脚本,进行到位通知及获取设备状态;然后执行ForkLoad
任务;执行ForkLoad
任务完成后,再次调用 interact.py
脚本,告知现场设备任务完成。setup_script
和post_script
可以指定不同的脚本。
该功能需要 Robokit 更新到 3.3.5.66 以上版本
执行顺序为:
- 执行
setup_script
指定的脚本; - 执行导航任务,此例为
ForkLoad
任务; - 执行
post_script
指定的脚本。
{
"operation": "ForkLoad",
"start_height": 0.3,
"end_height": 0.5,
"recfile": "p0001.pallet",
"recognize": true,
"setup_script": "interact.py",
"setup_script_args": {
"addr": "http://127.0.0.1:8088/callTerminal",
"data": {
"reach": { "id":"terminalName", "type": "write", "value": 23 },
"action": {"id":"terminalName", "type":"read"}
},
"protocol": "ModbusTCP"
},
"post_script": "interact.py",
"post_script_args": {
"addr": "http://127.0.0.1:8088/callTerminal",
"data": {
"finish": { "id":"terminalName", "type": "write", "value": 23 }
},
"protocol": "ModbusTCP"
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24