Skip to content

4.6 Register Information

Overview

The Register module provides a unified gateway for the host computer to read from and write to controller registers, covering numeric registers (R), motion registers (MR), string registers (SR), pose registers (PR), and Modbus registers.
Through the register interface you can batch-read, write, or delete data in any of these register types, making it easy to pass parameters, synchronize states, or share configuration with external systems while the program is running.

4.6.1 R Numeric Register Operations

4.6.1.1 Read the Value of an R Register

Method Nameregister.read_R( index : int) -> tuple[float, StatusCodeEnum]
DescriptionReads the value of an R numeric register.
Request Parametersindex : int R register number to read
Return Valuefloat: R register numeric value
StatusCodeEnum: Read operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.1+
Industrial (Bronze): v7.6.0.0+

4.6.1.2 Write the Value of an R Register

Method Nameregister.write_R( index : int, value : float) -> StatusCodeEnum
DescriptionWrites the value of an R numeric register.
Request Parametersindex : int R register number to write
value : float R register numeric value to write
Return ValueStatusCodeEnum: Write operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.1+
Industrial (Bronze): v7.6.0.0+

4.6.1.3 Delete an R Register

Method Nameregister.delete_R( index : int) -> StatusCodeEnum
DescriptionDeletes the specified R numeric register.
Request Parametersindex : int R register number to delete
Return ValueStatusCodeEnum: Delete operation execution result
Compatible robot software versionCollaborative (Copper): v7.5.0.0+
Industrial (Bronze): v7.5.0.0+

Example Code

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 Motion Register Operations

4.6.2.1 Read the Value of an MR Register

Method Nameregister.read_MR( index : int) -> tuple[int, StatusCodeEnum]
DescriptionReads the value of an MR motion register.
Request Parametersindex : int MR register number to read
Return Valueint: MR register numeric value
StatusCodeEnum: Read operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.1+
Industrial (Bronze): v7.6.0.0+

4.6.2.2 Write the Value of an MR Register

Method Nameregister.write_MR( index : int, value : int) -> StatusCodeEnum
DescriptionWrites the value of an MR motion register.
Request Parametersindex : int MR register number to write
value : int MR register numeric value to write
Return ValueStatusCodeEnum: Write operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.1+
Industrial (Bronze): v7.6.0.0+

4.6.2.3 Delete an MR Register

Method Nameregister.delete_MR( index : int) -> StatusCodeEnum
DescriptionDeletes the specified MR motion register.
Request Parametersindex : int MR register number to delete
Return ValueStatusCodeEnum: Delete operation execution result
Compatible robot software versionCollaborative (Copper): v7.5.0.0+
Industrial (Bronze): v7.5.0.0+

Example Code

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 String Register Operations

4.6.3.1 Read the Value of an SR Register

Method Nameregister.read_SR( index : int) -> tuple[str, StatusCodeEnum]
DescriptionReads the value of an SR string register.
Request Parametersindex : int SR register number to read
Return Valuestr: SR register string value
StatusCodeEnum: Read operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.1+
Industrial (Bronze): v7.6.0.0+

4.6.3.2 Write the Value of an SR Register

Method Nameregister.write_SR( index : int, value : str) -> StatusCodeEnum
DescriptionWrites the value of an SR string register.
Request Parametersindex : int SR register number to write
value : str SR register string value to write
Return ValueStatusCodeEnum: Write operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.1+
Industrial (Bronze): v7.6.0.0+

4.6.3.3 Delete an SR Register

Method Nameregister.delete_SR( index : int) -> StatusCodeEnum
DescriptionDeletes the specified SR string register.
Request Parametersindex : int SR register number to delete
Return ValueStatusCodeEnum: Delete operation execution result
Compatible robot software versionCollaborative (Copper): v7.5.0.0+
Industrial (Bronze): v7.5.0.0+

Example Code

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 Pose Register Operations

4.6.4.1 Read the Value of a PR Register

Method Nameregister.read_PR( index : int) -> tuple[PoseRegister, StatusCodeEnum]
DescriptionReads the value of a PR pose register.
Request Parametersindex : int PR register number to read
Return ValuePoseRegister: PR register pose data
StatusCodeEnum: Read operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.1+
Industrial (Bronze): v7.6.0.0+

4.6.4.2 Write the Value of a PR Register

Method Nameregister.write_PR( value : PoseRegister) -> StatusCodeEnum
DescriptionWrites the value of a PR pose register.
Request Parametersvalue : PoseRegister PR register pose data to write
Return ValueStatusCodeEnum: Write operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.1+
Industrial (Bronze): v7.6.0.0+

4.6.4.3 Delete a PR Register

Method Nameregister.delete_PR( index : int) -> StatusCodeEnum
DescriptionDeletes the specified PR pose register.
Request Parametersindex : int PR register number to delete
Return ValueStatusCodeEnum: Delete operation execution result
Compatible robot software versionCollaborative (Copper): v7.5.0.0+
Industrial (Bronze): v7.5.0.0+

Example Code

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 Registers (MH Holding Registers, MI Input Registers)

4.6.5.1 Read the Value of an MH Register

Method Nameregister.read_MH( index : int) -> tuple[int, StatusCodeEnum]
DescriptionReads the value of an MH holding register.
Request Parametersindex : int MH register number to read
Return Valueint: MH register numeric value
StatusCodeEnum: Read operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.0+
Industrial (Bronze): v7.6.0.0+

4.6.5.2 Write the Value of an MH Register

Method Nameregister.write_MH( index : int, value : int) -> StatusCodeEnum
DescriptionWrites the value of an MH holding register.
Request Parametersindex : int MH register number to write
value : int MH register numeric value to write
Return ValueStatusCodeEnum: Write operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.0+
Industrial (Bronze): v7.6.0.0+

4.6.5.3 Read the Value of an MI Register

Method Nameregister.read_MI( index : int) -> tuple[int, StatusCodeEnum]
DescriptionReads the value of an MI input register.
Request Parametersindex : int MI register number to read
Return Valueint: MI register numeric value
StatusCodeEnum: Read operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.0+
Industrial (Bronze): v7.6.0.0+

4.6.5.4 Write the Value of an MI Register

Method Nameregister.write_MI( index : int, value : int) -> StatusCodeEnum
DescriptionWrites the value of an MI input register.
Request Parametersindex : int MI register number to write
value : int MI register numeric value to write
Return ValueStatusCodeEnum: Write operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.0+
Industrial (Bronze): v7.6.0.0+

Example Code

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")