Skip to content

4.6 寄存器信息

说明

Register 模块提供上位机读写控制器寄存器的统一入口,覆盖数值寄存器 R、运动寄存器 MR、字符串寄存器 SR、位姿寄存器 PR 以及 Modbus 寄存器等多种类型。通过 register 接口可以批量读取、写入或删除各类寄存器数据,便于在程序运行时传递参数、同步状态或与外部系统共享配置。

4.6.1 R 数值寄存器相关操作

4.6.1.1 读取一个 R 寄存器的值

方法名register.read_R( index : int) -> tuple[float, StatusCodeEnum]
描述读取一个 R 数值寄存器的值
请求参数index : int 要读取的寄存器编号
返回值float: 寄存器值
StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.6.0.1+
工业 (Bronze): v7.6.0.0+

4.6.1.2 写入一个 R 寄存器的值

方法名register.write_R( index : int, value : float) -> StatusCodeEnum
描述写入一个 R 数值寄存器的值
请求参数index : int 要写入的 R 寄存器编号
value : float 要写入的寄存器数值
返回值StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.6.0.1+
工业 (Bronze): v7.6.0.0+

4.6.1.3 删除一个 R 寄存器

方法名register.delete_R( index : int) -> StatusCodeEnum
描述删除指定的 R 数值寄存器
请求参数index : int 要删除的 R 寄存器编号
返回值StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.5.0.0+
工业 (Bronze): v7.5.0.0+

示例代码

registers/R.py
py
#!python
"""
Copyright © 2016 Agilebot Robotics Ltd. All rights reserved.
Instruction: R寄存器读写示例 / Example of reading and writing the R register
"""

from Agilebot import Arm, StatusCodeEnum

# [ZH] 初始化捷勃特机器人
# [EN] Initialize the Agilebot robot
arm = Arm()
# [ZH] 连接捷勃特机器人
# [EN] Connect to the Agilebot robot
ret = arm.connect("10.27.1.254")
# [ZH] 检查是否连接成功
# [EN] Check if the connection is successful
if ret == StatusCodeEnum.OK:
    print("机器人连接成功 / Robot connected successfully")
else:
    print(f"机器人连接失败,错误代码 / Robot connection failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 添加R寄存器
# [EN] Add R register
ret = arm.register.write_R(5, 8.6)
if ret == StatusCodeEnum.OK:
    print("写入R寄存器成功 / Write R register successful")
else:
    print(f"写入R寄存器失败,错误代码 / Write R register failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 读取R寄存器
# [EN] Read R register
res, ret = arm.register.read_R(5)
if ret == StatusCodeEnum.OK:
    print("读取R寄存器成功 / Read R register successful")
else:
    print(f"读取R寄存器失败,错误代码 / Read R register failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 打印结果
# [EN] Print the result
print(f"R寄存器值 / R register value: {res}")

# [ZH] 删除R寄存器
# [EN] Delete R register
ret = arm.register.delete_R(5)
if ret == StatusCodeEnum.OK:
    print("删除R寄存器成功 / Delete R register successful")
else:
    print(f"删除R寄存器失败,错误代码 / Delete R register failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 断开捷勃特机器人连接
# [EN] Disconnect from the Agilebot robot
arm.disconnect()
print("机器人断开连接成功 / Robot disconnected successfully")

4.6.2 MR 运动寄存器相关操作

4.6.2.1 读取一个 MR 寄存器的值

方法名register.read_MR( index : int) -> tuple[int, StatusCodeEnum]
描述读取一个 MR 运动寄存器的值
请求参数index : int 要读取的寄存器编号
返回值int: 寄存器值
StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.6.0.1+
工业 (Bronze): v7.6.0.0+

4.6.2.2 写入一个 MR 寄存器的值

方法名register.write_MR( index : int, value : int) -> StatusCodeEnum
描述写入一个 MR 运动寄存器的值
请求参数index : int 要写入的 MR 寄存器编号
value : int 要写入的寄存器数值
返回值StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.6.0.1+
工业 (Bronze): v7.6.0.0+

4.6.2.3 删除一个 MR 寄存器

方法名register.delete_MR( index : int) -> StatusCodeEnum
描述删除指定的 MR 运动寄存器
请求参数index : int 要删除的 MR 寄存器编号
返回值StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.5.0.0+
工业 (Bronze): v7.5.0.0+

示例代码

registers/MR.py
py
#!python
"""
Copyright © 2016 Agilebot Robotics Ltd. All rights reserved.
Instruction: MR寄存器读写示例 / Example of reading and writing MR Registers
"""

from Agilebot import Arm, StatusCodeEnum

# [ZH] 初始化捷勃特机器人
# [EN] Initialize the Agilebot robot
arm = Arm()
# [ZH] 连接捷勃特机器人
# [EN] Connect to the Agilebot robot
ret = arm.connect("10.27.1.254")
# [ZH] 检查是否连接成功
# [EN] Check if the connection is successful
if ret == StatusCodeEnum.OK:
    print("机器人连接成功 / Robot connected successfully")
else:
    print(f"机器人连接失败,错误代码 / Robot connection failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 添加MR寄存器
# [EN] Add MR register
ret = arm.register.write_MR(5, 8)
if ret == StatusCodeEnum.OK:
    print("写入MR寄存器成功 / Write MR register successful")
else:
    print(f"写入MR寄存器失败,错误代码 / Write MR register failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 读取MR寄存器
# [EN] Read MR register
res, ret = arm.register.read_MR(5)
if ret == StatusCodeEnum.OK:
    print("读取MR寄存器成功 / Read MR register successful")
else:
    print(f"读取MR寄存器失败,错误代码 / Read MR register failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 打印结果
# [EN] Print the result
print(f"MR寄存器值 / MR register value: {res}")

# [ZH] 删除MR寄存器
# [EN] Delete MR register
ret = arm.register.delete_MR(5)
if ret == StatusCodeEnum.OK:
    print("删除MR寄存器成功 / Delete MR register successful")
else:
    print(f"删除MR寄存器失败,错误代码 / Delete MR register failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 断开捷勃特机器人连接
# [EN] Disconnect from the Agilebot robot
arm.disconnect()
print("机器人断开连接成功 / Robot disconnected successfully")

4.6.3 SR 字符串寄存器相关操作

4.6.3.1 读取一个 SR 寄存器的值

方法名register.read_SR( index : int) -> tuple[str, StatusCodeEnum]
描述读取一个 SR 字符串寄存器的值
请求参数index : int 要读取的寄存器编号
返回值str: 寄存器值
StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.6.0.1+
工业 (Bronze): v7.6.0.0+

4.6.3.2 写入一个 SR 寄存器的值

方法名register.write_SR( index : int, value : str) -> StatusCodeEnum
描述写入一个 SR 字符串寄存器的值
请求参数index : int 要写入的 SR 寄存器编号
value : str 要写入的寄存器字符串值
返回值StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.6.0.1+
工业 (Bronze): v7.6.0.0+

4.6.3.3 删除一个 SR 寄存器

方法名register.delete_SR( index : int) -> StatusCodeEnum
描述删除指定的 SR 字符串寄存器
请求参数index : int 要删除的 SR 寄存器编号
返回值StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.5.0.0+
工业 (Bronze): v7.5.0.0+

示例代码

registers/SR.py
py
#!python
"""
Copyright © 2016 Agilebot Robotics Ltd. All rights reserved.
Instruction: SR寄存器读写示例 / Example of reading and writing SR registers
"""

from Agilebot import Arm, StatusCodeEnum

# [ZH] 初始化捷勃特机器人
# [EN] Initialize the Agilebot robot
arm = Arm()
# [ZH] 连接捷勃特机器人
# [EN] Connect to the Agilebot robot
ret = arm.connect("10.27.1.254")
# [ZH] 检查是否连接成功
# [EN] Check if the connection is successful
if ret == StatusCodeEnum.OK:
    print("机器人连接成功 / Robot connected successfully")
else:
    print(f"机器人连接失败,错误代码 / Robot connection failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 添加SR寄存器
# [EN] Add SR register
ret = arm.register.write_SR(5, "pytest")
if ret == StatusCodeEnum.OK:
    print("写入SR寄存器成功 / Write SR register successful")
else:
    print(f"写入SR寄存器失败,错误代码 / Write SR register failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 读取SR寄存器
# [EN] Read SR register
res, ret = arm.register.read_SR(5)
if ret == StatusCodeEnum.OK:
    print("读取SR寄存器成功 / Read SR register successful")
else:
    print(f"读取SR寄存器失败,错误代码 / Read SR register failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 打印结果
# [EN] Print the result
print(f"SR寄存器值 / SR register value: {res}")

# [ZH] 删除SR寄存器
# [EN] Delete SR register
ret = arm.register.delete_SR(5)
if ret == StatusCodeEnum.OK:
    print("删除SR寄存器成功 / Delete SR register successful")
else:
    print(f"删除SR寄存器失败,错误代码 / Delete SR register failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 断开捷勃特机器人连接
# [EN] Disconnect from the Agilebot robot
arm.disconnect()
print("机器人断开连接成功 / Robot disconnected successfully")

4.6.4 PR 位姿寄存器相关操作

4.6.4.1 读取一个 PR 寄存器的值

方法名register.read_PR( index : int) -> tuple[PoseRegister, StatusCodeEnum]
描述读取一个 PR 位姿寄存器的值
请求参数index : int 要读取的寄存器编号
返回值PoseRegister: PR 寄存器位姿数据
StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.6.0.1+
工业 (Bronze): v7.6.0.0+

4.6.4.2 写入一个 PR 寄存器的值

方法名register.write_PR( value : PoseRegister) -> StatusCodeEnum
描述写入一个 PR 位姿寄存器的值
请求参数value : PoseRegister 要写入的 PR 寄存器位姿数据
返回值StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.6.0.1+
工业 (Bronze): v7.6.0.0+

4.6.4.3 删除一个 PR 寄存器

方法名register.delete_PR( index : int) -> StatusCodeEnum
描述删除指定的 PR 位姿寄存器
请求参数index : int 要删除的 PR 寄存器编号
返回值StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.5.0.0+
工业 (Bronze): v7.5.0.0+

示例代码

registers/PR.py
py
#!python
"""
Copyright © 2016 Agilebot Robotics Ltd. All rights reserved.
Instruction: PR寄存器读写示例 / Example of reading and writing to the PR register
"""

from Agilebot import Arm, PoseRegister, PoseType, Posture, StatusCodeEnum

# [ZH] 初始化捷勃特机器人
# [EN] Initialize Agilebot robot
arm = Arm()
# [ZH] 连接捷勃特机器人
# [EN] Connect to Agilebot robot
ret = arm.connect("10.27.1.254")
# [ZH] 检查是否连接成功
# [EN] Check if connection is successful
if ret == StatusCodeEnum.OK:
    print("机器人连接成功 / Robot connected successfully")
else:
    print(f"机器人连接失败,错误代码 / Robot connection failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 添加PR寄存器
# [EN] Add PR register
# [ZH] 创建位姿
# [EN] Create pose
pose_register = PoseRegister()
posture = Posture()
posture.arm_back_front = 1
pose_register.poseRegisterData.cartData.posture = posture
pose_register.id = 5
pose_register.poseRegisterData.pt = PoseType.CART
pose_register.poseRegisterData.cartData.position.x = 100
pose_register.poseRegisterData.cartData.position.y = 200
pose_register.poseRegisterData.cartData.position.z = 300
ret = arm.register.write_PR(pose_register)
if ret == StatusCodeEnum.OK:
    print("写入PR寄存器成功 / Write PR register successful")
else:
    print(f"写入PR寄存器失败,错误代码 / Write PR register failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 读取PR寄存器
# [EN] Read PR register
res, ret = arm.register.read_PR(5)
if ret == StatusCodeEnum.OK:
    print("读取PR寄存器成功 / Read PR register successful")
else:
    print(f"读取PR寄存器失败,错误代码 / Read PR register failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 打印结果
# [EN] Print result
print(
    f"位姿寄存器ID / Pose register ID: {res.id}\n"
    f"位姿类型 / Pose type: {res.poseRegisterData.pt}\n"
    f"X / X: {res.poseRegisterData.cartData.position.x}\n"
    f"Y / Y: {res.poseRegisterData.cartData.position.y}\n"
    f"Z / Z: {res.poseRegisterData.cartData.position.z}\n"
    f"C / C: {res.poseRegisterData.cartData.position.c}\n"
    f"B / B: {res.poseRegisterData.cartData.position.b}\n"
    f"A / A: {res.poseRegisterData.cartData.position.a}\n"
)

# [ZH] 删除PR寄存器
# [EN] Delete PR register
ret = arm.register.delete_PR(5)
if ret == StatusCodeEnum.OK:
    print("删除PR寄存器成功 / Delete PR register successful")
else:
    print(f"删除PR寄存器失败,错误代码 / Delete PR register failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 断开捷勃特机器人连接
# [EN] Disconnect from Agilebot robot
arm.disconnect()
print("机器人断开连接成功 / Robot disconnected successfully")

4.6.5 Modbus 寄存器(MH 保持寄存器、MI 输入寄存器)

4.6.5.1 读取一个 MH 寄存器的值

方法名register.read_MH( index : int) -> tuple[int, StatusCodeEnum]
描述读取一个 MH 保持寄存器的值
请求参数index : int 要读取的寄存器编号
返回值int: 寄存器值
StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.6.0.0+
工业 (Bronze): v7.6.0.0+

4.6.5.2 写入一个 MH 寄存器的值

方法名register.write_MH( index : int, value : int) -> StatusCodeEnum
描述写入一个 MH 保持寄存器的值
请求参数index : int 要写入的 MH 寄存器编号
value : int 要写入的寄存器数值
返回值StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.6.0.0+
工业 (Bronze): v7.6.0.0+

4.6.5.3 读取一个 MI 寄存器的值

方法名register.read_MI( index : int) -> tuple[int, StatusCodeEnum]
描述读取一个 MI 输入寄存器的值
请求参数index : int 要读取的寄存器编号
返回值int: 寄存器值
StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.6.0.0+
工业 (Bronze): v7.6.0.0+

4.6.5.4 写入一个 MI 寄存器的值

方法名register.write_MI( index : int, value : int) -> StatusCodeEnum
描述写入一个 MI 输入寄存器的值
请求参数index : int 要写入的 MI 寄存器编号
value : int 要写入的寄存器数值
返回值StatusCodeEnum: 函数执行结果
兼容的机器人软件版本协作 (Copper): v7.6.0.0+
工业 (Bronze): v7.6.0.0+

示例代码

registers/MH_MI.py
py
#!python
"""
Copyright © 2016 Agilebot Robotics Ltd. All rights reserved.
Instruction: MH寄存器及MI寄存器读写示例 / Example of reading and writing to the MH register and MI register
"""

from Agilebot import Arm, StatusCodeEnum

# [ZH] 初始化捷勃特机器人
# [EN] Initialize Agilebot robot
arm = Arm()
# [ZH] 连接捷勃特机器人
# [EN] Connect to Agilebot robot
ret = arm.connect("10.27.1.254")
# [ZH] 检查是否连接成功
# [EN] Check if connection is successful
if ret == StatusCodeEnum.OK:
    print("机器人连接成功 / Robot connected successfully")
else:
    print(f"机器人连接失败,错误代码 / Robot connection failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 读取MH寄存器
# [EN] Read MH register
res, ret = arm.register.read_MH(1)
if ret == StatusCodeEnum.OK:
    print("读取MH寄存器成功 / Read MH register successful")
else:
    print(f"读取MH寄存器失败,错误代码 / Read MH register failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 打印结果
# [EN] Print result
print(f"MH寄存器 / MH register: {res}")

# [ZH] 写入MH寄存器
# [EN] Write MH register
ret = arm.register.write_MH(1, 16)
if ret == StatusCodeEnum.OK:
    print("写入MH寄存器成功 / Write MH register successful")
else:
    print(f"写入MH寄存器失败,错误代码 / Write MH register failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 读取MI寄存器
# [EN] Read MI register
res, ret = arm.register.read_MI(1)
if ret == StatusCodeEnum.OK:
    print("读取MI寄存器成功 / Read MI register successful")
else:
    print(f"读取MI寄存器失败,错误代码 / Read MI register failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 打印结果
# [EN] Print result
print(f"MI寄存器 / MI register: {res}")

# [ZH] 写入MI寄存器
# [EN] Write MI register
ret = arm.register.write_MI(1, 18)
if ret == StatusCodeEnum.OK:
    print("写入MI寄存器成功 / Write MI register successful")
else:
    print(f"写入MI寄存器失败,错误代码 / Write MI register failed, error code: {ret.errmsg}")
    arm.disconnect()
    exit(1)

# [ZH] 断开捷勃特机器人连接
# [EN] Disconnect from Agilebot robot
arm.disconnect()
print("机器人断开连接成功 / Robot disconnected successfully")