cmvr-es/cmvr-es/devices/arm/aubo_arm/README.md
xtkuang edb01463ff docs: move hardware guides into component directories
Keep the root README concise while documenting MotorService, the Modbus TCP PLC runtime, the motor stack, and AUBO cabinet IO next to their owning code.
2026-07-31 09:39:44 +08:00

4.1 KiB
Raw Blame History

AUBO RobotArm 与控制柜 IO

AuboArm 是 AUBO SDK v0.27.1 的 RobotArm 后端。控制柜 Standard 数字 IO 通过设备通用的 executeJsonCommand 接口访问,远程调用复用 cmvr.api.SystemService/ExecuteJsonCommand,不经过 ArmServiceMotorService

返回 Devices 模块指南项目总览

代码与配置

仓库配置使用 SDK RPC 端口 30004。现场部署必须填写真实控制器地址和凭据, 不要把生产密码提交到默认配置。

控制柜 Standard 数字 IO

当前支持:

operation 说明 必填字段
get_di 读取控制柜数字输入 index
get_do 读取控制柜数字输出及其 runstate index
set_do 设置控制柜数字输出 indexvalue

JSON 命令:

{"command":"cabinet_io","operation":"get_di","index":0}
{"command":"cabinet_io","operation":"get_do","index":0}
{"command":"cabinet_io","operation":"set_do","index":0,"value":true}

index0 开始,运行时根据控制器返回的 IO 数量检查范围。 set_do.value 必须是 JSON 布尔值 truefalse,不接受 0/1 或字符串。 set_do 成功响应中的 requested_value 只表示 SDK 已接受请求;确认实际输出时 必须再调用 get_do

读取成功响应示例:

{
  "success": true,
  "command": "cabinet_io",
  "operation": "get_di",
  "index": 0,
  "count": 16,
  "value": false
}

通过 gRPC 调用

默认 gRPC 端口为 50052。读取 DI0

grpcurl -plaintext \
  -d '{
    "header":{"deviceId":"aubo_arm"},
    "requestJson":"{\"command\":\"cabinet_io\",\"operation\":\"get_di\",\"index\":0}"
  }' \
  127.0.0.1:50052 \
  cmvr.api.SystemService/ExecuteJsonCommand

设置 DO0 为高电平:

grpcurl -plaintext \
  -d '{
    "header":{"deviceId":"aubo_arm"},
    "requestJson":"{\"command\":\"cabinet_io\",\"operation\":\"set_do\",\"index\":0,\"value\":true}"
  }' \
  127.0.0.1:50052 \
  cmvr.api.SystemService/ExecuteJsonCommand

使用源码默认配置时:

  1. cmvr-es/config/devices/arm/aubo_arm.pb.txt 填写正确地址和登录信息;
  2. cmvr-es/config/manager/device_manager.pb.txtaubo_arm.enable 改为 true
  3. 重新安装配置并启动安装产物。
cmake --install build
./output/bin/cmvr_es

output/bin/cmvr_es 默认读取 output/bin/config/。使用 --config 时,应修改 对应外部配置根。设备未启用或初始化失败时gRPC 返回 Device not found: aubo_arm

安全与语义边界

  • 只访问控制柜 Standard 数字 IO不访问工具端 IO、可配置 IO 或安全 IO
  • set_do 不修改输出 runstate
  • 只有 StandardOutputRunState::None 的通道允许写入,否则返回 output_managed_by_runstate
  • 普通访问不会调用会重置全部输出配置的 setDigitalOutputRunstateDefault()
  • 模拟量 IO 涉及 domain、单位和量程当前 JSON 接口不开放;
  • gRPC/JSON 返回成功不代表目标 IO 具备功能安全等级;
  • 真实写测试前应确认通道用途、负载、电气隔离、默认电平和控制器程序所有权。

测试

cmake --build build --target aubo_arm_json_command_test -j4
ctest --test-dir build \
  -R '^aubo_arm_json_command_test$' \
  --output-on-failure

该测试覆盖 JSON 校验和无硬件错误路径,不代表已在真实 AUBO 控制柜完成 DI/DO 读取、写入或 runstate 拒绝验证。