帮助中心
帮助中心主页
常见问题
信号服务器通信协议

一、设备访问协议

1.1 现场设备响应通用数据结构

json
class LocationDevice {
    String name;
    String lastAction;    // 最近一个执行的命令,若无则为 None
    ActionStatus lastActionStatus;    // 最近一个命令的执行情况
    Status status;    // 设备自身状态

    enum ActionStatus {
        DONE,
        EXECUTING,
        FAILED
    }

    enum Status {
        IDLE,
        EXECUTING,
        ERROR,
        TIMEOUT
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

1.2 现场设备设备访问请求

1.2.1 获取一个设备的信息

json
GET /locationDevices/{NAME}?action=XXX 
1

参数:

NameTypeDescription
NAMEstring设备名称
actionstring操作指令,可自定义

响应:

CodeMessage
200请求已成功
400参数错误
404当前启用的设备中,找不到请求的对象

内容示例:

json
{
      "name" : "SIG01",
      "lastAction" : "wait",
      "lastActionStatus" : "DONE",
      "status" : "IDLE"
  }
1
2
3
4
5
6

1.2.2 提交给设备一个命令

json
POST /locationDevices/{NAME}?action=XXX
1

参数:

NameTypeDescription
NAMEstring设备名称
actionstring操作指令,可自定义

响应:

CodeMessage
200请求已成功
400参数错误
404当前启用的设备中,找不到请求的对象
500设备服务器故障或出现异常

二、设备服务器提供信号源的示例

2.1 预定义

参数描述
host设备服务器IP
wait本示例中的 action 名称,当 SRD 向设备服务器查询,响应中的 ActionStatus DONE 时,意为结束等待;返回的 ActionStatusEXECUTING 时,意为需要继续等待。

2.2 机器人在缓冲位等待信号的流程

  1. 在构建场景时,缓冲位也是一个 Location,并需要该 Location 支持 operation :Wait。下文示例中的 Location 暂以 “L1” 来命名。
  2. 在设备服务器中,暂以 “SIG01” 对应 “L1” 处相应的信号。
  3. 需要机器人到缓冲位等待时,上位机发送的业务订单(transportOrder)中,需要包含如下一个 Destination
json
Destination:{
     "locationName": "L1",
      "operation": "Wait",
     "properties": 
     [
         {
             "key": "device:requestAtSend",
             "value": "SIG01:wait" // 告知设备服务器,机器人已进入等待信号 SIG01 的状态。
         },
          {
             "key": "device:queryAtExecuted",
             "value": "SIG01:wait" // 不断查询(间隔约 1s)设备服务器,信号 SIG01 是否可放行,即机器人是否可以结束等待。
         }
     ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  1. 当机器人执行到该 Destination 时,调度服务器会发送请求
json
POST  "http://host:52000/devices/api/v1/locationDevices/SIG01?action=wait"
1
  1. 然后,调度服务器会每隔约1秒时间,向设备服务器进行查询
json
GET   "http://host:52000/devices/api/v1/locationDevices/SIG01?action=wait "
1

若设备服务器返回的响应体是

json
{
  "name" : "SIG01",
  "lastAction" : "wait",
  "lastActionStatus" : "DONE",
  "status" : "IDLE"
}
1
2
3
4
5
6

那么,机器人将认为得到确认信号,开始往下执行其他任务。否则,若 "name" 、"lastAction" 与属性 "device:queryLocation" 中的值不一致,或者 "lastActionStatus" 为 “DONE” 以外的其他状态时,机器人将继续等待该设备的信号。

最近更新 2022/11/28
文章内容

一、设备访问协议

1.1 现场设备响应通用数据结构

1.2 现场设备设备访问请求

1.2.1 获取一个设备的信息

1.2.2 提交给设备一个命令

二、设备服务器提供信号源的示例

2.1 预定义

2.2 机器人在缓冲位等待信号的流程