Skip to content

4.6 Register Information

4.6.1 R Numeric Register Operations

4.6.1.1 Reading the Value of an R Register

Method NameRegisters.Read_R(int index )
DescriptionReads the value of an R numeric register.
Request Parametersindex : int R register number to read
Return Valuedouble: R register numeric value
StatusCode: Read operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.1+
Industrial (Bronze): v7.6.0.0+

4.6.1.2 Writing the Value of an R Register

Method NameRegisters.Write_R(int index , double value )
DescriptionWrites the value of an R numeric register.
Request Parametersindex : int R register number to write
value : double R register numeric value to write
Return ValueStatusCode: Write operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.1+
Industrial (Bronze): v7.6.0.0+

4.6.1.3 Deleting an R Register

Method NameRegisters.Delete_R(int index )
DescriptionDeletes the specified R numeric register.
Request Parametersindex : int R register number to delete
Return ValueStatusCode: Delete operation execution result
Compatible robot software versionCollaborative (Copper): v7.5.0.0+
Industrial (Bronze): v7.5.0.0+

Example Code

Registers/RRegisterOperations.cs
cs
using Agilebot.IR;
using Agilebot.IR.Types;

public class RRegisterOperations
{
    public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
    {
        // [ZH] 初始化捷勃特机器人
        // [EN] Initialize the Agilebot robot
        Arm controller = new Arm(controllerIP, useLocalProxy);

        // [ZH] 连接捷勃特机器人
        // [EN] Connect to the Agilebot robot
        StatusCode code = controller.ConnectSync();
        Console.WriteLine(code != StatusCode.OK ? code.GetDescription() : "连接成功/Successfully connected.");

        if (code != StatusCode.OK)
        {
            return code;
        }

        try
        {
            // [ZH] 设置寄存器索引和值
            // [EN] Set register index and value
            int index = 1;
            double value = 9.9;

            // [ZH] 写入R寄存器
            // [EN] Write R register
            code = controller.Registers.Write_R(index, value);
            if (code == StatusCode.OK)
            {
                Console.WriteLine("写入R寄存器成功/Write R Register Success");
            }
            else
            {
                Console.WriteLine($"写入R寄存器失败/Write R Register Failed: {code.GetDescription()}");
            }

            // [ZH] 读取R寄存器
            // [EN] Read R register
            double readValue;
            (readValue, code) = controller.Registers.Read_R(index);
            if (code == StatusCode.OK)
            {
                Console.WriteLine($"读取R寄存器成功/Read R Register Success: 值/Value = {readValue}");
            }
            else
            {
                Console.WriteLine($"读取R寄存器失败/Read R Register Failed: {code.GetDescription()}");
            }

            // [ZH] 删除R寄存器
            // [EN] Delete R register
            code = controller.Registers.Delete_R(index);
            if (code == StatusCode.OK)
            {
                Console.WriteLine("删除R寄存器成功/Delete R Register Success");
            }
            else
            {
                Console.WriteLine($"删除R寄存器失败/Delete R Register Failed: {code.GetDescription()}");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
            code = StatusCode.OtherReason;
        }
        finally
        {
            // [ZH] 关闭连接
            // [EN] Close the connection
            StatusCode disconnectCode = controller.Disconnect();
            if (disconnectCode != StatusCode.OK)
            {
                Console.WriteLine(disconnectCode.GetDescription());
                if (code == StatusCode.OK)
                    code = disconnectCode;
            }
        }

        return code;
    }
}

4.6.2 MR Motion Register Operations

4.6.2.1 Reading the Value of an MR Register

Method NameRegisters.Read_MR(int index )
DescriptionReads the value of an MR motion register.
Request Parametersindex : int MR register number to read
Return Valueint: MR register numeric value
StatusCode: Read operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.1+
Industrial (Bronze): v7.6.0.0+

4.6.2.2 Writing the Value of an MR Register

Method NameRegisters.Write_MR(int index , int value )
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 ValueStatusCode: Write operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.1+
Industrial (Bronze): v7.6.0.0+

4.6.2.3 Deleting an MR Register

Method NameRegisters.Delete_MR(int index )
DescriptionDeletes the specified MR motion register.
Request Parametersindex : int MR register number to delete
Return ValueStatusCode: Delete operation execution result
Compatible robot software versionCollaborative (Copper): v7.5.0.0+
Industrial (Bronze): v7.5.0.0+

Example Code

Registers/MRRegisterOperations.cs
cs
using Agilebot.IR;
using Agilebot.IR.Types;

public class MRRegisterOperations
{
    public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
    {
        // [ZH] 初始化捷勃特机器人
        // [EN] Initialize the Agilebot robot
        Arm controller = new Arm(controllerIP, useLocalProxy);

        // [ZH] 连接捷勃特机器人
        // [EN] Connect to the Agilebot robot
        StatusCode code = controller.ConnectSync();
        Console.WriteLine(code != StatusCode.OK ? code.GetDescription() : "连接成功/Successfully connected.");

        if (code != StatusCode.OK)
        {
            return code;
        }

        try
        {
            // [ZH] 设置寄存器索引和值
            // [EN] Set register index and value
            int index = 1;
            int value = 9;

            // [ZH] 写入MR寄存器
            // [EN] Write MR register
            code = controller.Registers.Write_MR(index, value);
            if (code == StatusCode.OK)
            {
                Console.WriteLine("写入MR寄存器成功/Write MR Register Success");
            }
            else
            {
                Console.WriteLine($"写入MR寄存器失败/Write MR Register Failed: {code.GetDescription()}");
            }

            // [ZH] 读取MR寄存器
            // [EN] Read MR register
            int readValue;
            (readValue, code) = controller.Registers.Read_MR(index);
            if (code == StatusCode.OK)
            {
                Console.WriteLine($"读取MR寄存器成功/Read MR Register Success: 值/Value = {readValue}");
            }
            else
            {
                Console.WriteLine($"读取MR寄存器失败/Read MR Register Failed: {code.GetDescription()}");
            }

            // [ZH] 删除MR寄存器
            // [EN] Delete MR register
            code = controller.Registers.Delete_MR(index);
            if (code == StatusCode.OK)
            {
                Console.WriteLine("删除MR寄存器成功/Delete MR Register Success");
            }
            else
            {
                Console.WriteLine($"删除MR寄存器失败/Delete MR Register Failed: {code.GetDescription()}");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
            code = StatusCode.OtherReason;
        }
        finally
        {
            // [ZH] 关闭连接
            // [EN] Close the connection
            StatusCode disconnectCode = controller.Disconnect();
            if (disconnectCode != StatusCode.OK)
            {
                Console.WriteLine(disconnectCode.GetDescription());
                if (code == StatusCode.OK)
                    code = disconnectCode;
            }
        }

        return code;
    }
}

4.6.3 SR String Register Operations

4.6.3.1 Reading the Value of an SR Register

Method NameRegisters.Read_SR(int index )
DescriptionReads the value of an SR string register.
Request Parametersindex : int SR register number to read
Return Valuestring: SR register string value
StatusCode: Read operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.1+
Industrial (Bronze): v7.6.0.0+

4.6.3.2 Writing the Value of an SR Register

Method NameRegisters.Write_SR(int index , string value )
DescriptionWrites the value of an SR string register.
Request Parametersindex : int SR register number to write
value : string SR register string value to write
Return ValueStatusCode: Write operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.1+
Industrial (Bronze): v7.6.0.0+

4.6.3.3 Deleting an SR Register

Method NameRegisters.Delete_SR(int index )
DescriptionDeletes the specified SR string register.
Request Parametersindex : int SR register number to delete
Return ValueStatusCode: Delete operation execution result
Compatible robot software versionCollaborative (Copper): v7.5.0.0+
Industrial (Bronze): v7.5.0.0+

Example Code

Registers/SRRegisterOperations.cs
cs
using Agilebot.IR;
using Agilebot.IR.Types;

public class SRRegisterOperations
{
    public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
    {
        // [ZH] 初始化捷勃特机器人
        // [EN] Initialize the Agilebot robot
        Arm controller = new Arm(controllerIP, useLocalProxy);

        // [ZH] 连接捷勃特机器人
        // [EN] Connect to the Agilebot robot
        StatusCode code = controller.ConnectSync();
        Console.WriteLine(code != StatusCode.OK ? code.GetDescription() : "连接成功/Successfully connected.");

        if (code != StatusCode.OK)
        {
            return code;
        }

        try
        {
            // [ZH] 设置寄存器索引和值
            // [EN] Set register index and value
            int index = 1;
            string value = "test";

            // [ZH] 写入SR寄存器
            // [EN] Write SR register
            code = controller.Registers.Write_SR(index, value);
            if (code == StatusCode.OK)
            {
                Console.WriteLine("写入SR寄存器成功/Write SR Register Success");
            }
            else
            {
                Console.WriteLine($"写入SR寄存器失败/Write SR Register Failed: {code.GetDescription()}");
            }

            // [ZH] 读取SR寄存器
            // [EN] Read SR register
            string readValue;
            (readValue, code) = controller.Registers.Read_SR(index);
            if (code == StatusCode.OK)
            {
                Console.WriteLine($"读取SR寄存器成功/Read SR Register Success: 值/Value = {readValue}");
            }
            else
            {
                Console.WriteLine($"读取SR寄存器失败/Read SR Register Failed: {code.GetDescription()}");
            }

            // [ZH] 删除SR寄存器
            // [EN] Delete SR register
            code = controller.Registers.Delete_SR(index);
            if (code == StatusCode.OK)
            {
                Console.WriteLine("删除SR寄存器成功/Delete SR Register Success");
            }
            else
            {
                Console.WriteLine($"删除SR寄存器失败/Delete SR Register Failed: {code.GetDescription()}");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
            code = StatusCode.OtherReason;
        }
        finally
        {
            // [ZH] 关闭连接
            // [EN] Close the connection
            StatusCode disconnectCode = controller.Disconnect();
            if (disconnectCode != StatusCode.OK)
            {
                Console.WriteLine(disconnectCode.GetDescription());
                if (code == StatusCode.OK)
                    code = disconnectCode;
            }
        }

        return code;
    }
}

4.6.4 PR Pose Register Operations

4.6.4.1 Reading the Value of a PR Register

Method NameRegisters.Read_PR(int index )
DescriptionReads the value of a PR pose register.
Request Parametersindex : int PR register number to read
Return ValuePoseRegister: PR register pose data
StatusCode: Read operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.1+
Industrial (Bronze): v7.6.0.0+

4.6.4.2 Writing the Value of a PR Register

Method NameRegisters.Write_PR(int index , PoseRegister value )
DescriptionWrites the value of a PR pose register.
Request Parametersindex : int PR register number to write
value : PoseRegister PR register pose data to write
Return ValueStatusCode: Write operation execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.1+
Industrial (Bronze): v7.6.0.0+

4.6.4.3 Deleting a PR Register

Method NameRegisters.Delete_PR(int index )
DescriptionDeletes the specified PR pose register.
Request Parametersindex : int PR register number to delete
Return ValueStatusCode: Delete operation execution result
Compatible robot software versionCollaborative (Copper): v7.5.0.0+
Industrial (Bronze): v7.5.0.0+

Example Code

Registers/PRRegisterOperations.cs
cs
using Agilebot.IR;
using Agilebot.IR.Registers;
using Agilebot.IR.Types;

public class PRRegisterOperations
{
    public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
    {
        // [ZH] 初始化捷勃特机器人
        // [EN] Initialize the Agilebot robot
        Arm controller = new Arm(controllerIP, useLocalProxy);

        // [ZH] 连接捷勃特机器人
        // [EN] Connect to the Agilebot robot
        StatusCode code = controller.ConnectSync();
        Console.WriteLine(code != StatusCode.OK ? code.GetDescription() : "连接成功/Successfully connected.");

        if (code != StatusCode.OK)
        {
            return code;
        }

        try
        {
            // [ZH] 设置寄存器索引
            // [EN] Set register index
            int index = 1;

            // [ZH] 生成位姿寄存器
            // [EN] Generate pose register
            var pose = new PoseRegister
            {
                Id = 1,
                Name = "Test",
                Comment = "Test",
                PoseRegisterData = new PoseRegisterData
                {
                    Pt = PoseType.Joint,
                    Joint = new Joint
                    {
                        J1 = 6.6,
                        J2 = 6.6,
                        J3 = 6.6,
                        J4 = 6.6,
                        J5 = 6.6,
                        J6 = 6.6,
                    },
                    CartData = null,
                },
            };

            // [ZH] 写入PR寄存器
            // [EN] Write PR register
            code = controller.Registers.Write_PR(pose);
            if (code == StatusCode.OK)
            {
                Console.WriteLine("写入PR寄存器成功/Write PR Register Success");
            }
            else
            {
                Console.WriteLine($"写入PR寄存器失败/Write PR Register Failed: {code.GetDescription()}");
            }

            // [ZH] 读取PR寄存器
            // [EN] Read PR register
            PoseRegister readValue;
            (readValue, code) = controller.Registers.Read_PR(index);
            if (code == StatusCode.OK)
            {
                Console.WriteLine($"读取PR寄存器成功/Read PR Register Success: ID = {readValue.Id}");
            }
            else
            {
                Console.WriteLine($"读取PR寄存器失败/Read PR Register Failed: {code.GetDescription()}");
            }

            // [ZH] 删除PR寄存器
            // [EN] Delete PR register
            code = controller.Registers.Delete_PR(index);
            if (code == StatusCode.OK)
            {
                Console.WriteLine("删除PR寄存器成功/Delete PR Register Success");
            }
            else
            {
                Console.WriteLine($"删除PR寄存器失败/Delete PR Register Failed: {code.GetDescription()}");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
            code = StatusCode.OtherReason;
        }
        finally
        {
            // [ZH] 关闭连接
            // [EN] Close the connection
            StatusCode disconnectCode = controller.Disconnect();
            if (disconnectCode != StatusCode.OK)
            {
                Console.WriteLine(disconnectCode.GetDescription());
                if (code == StatusCode.OK)
                    code = disconnectCode;
            }
        }

        return code;
    }
}

4.6.5 Modbus Registers (MH Holding Registers, MI Input Registers)

4.6.5.1 Reading the Value of an MH Register

Method NameRegisters.Read_MH(int index )
DescriptionGets the value of an MH register.
Request Parametersindex : int Register number to get
Return ValueRegister information
StatusCode: Function execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.0+
Industrial (Bronze): v7.6.0.0+

4.6.5.2 Reading the Value of an MI Register

Method NameRegisters.Read_MI(int index )
DescriptionGets the value of an MI register.
Request Parametersindex : int Register number to get
Return ValueRegister information
StatusCode: Function execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.0+
Industrial (Bronze): v7.6.0.0+

4.6.5.3 Writing the Value of an MH Register

Method NameRegisters.Write_MH(int index , int value )
DescriptionUpdates the value of an MH register.
Request Parametersindex : int Register number
value : int Register information to update
Return ValueStatusCode: Function execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.0+
Industrial (Bronze): v7.6.0.0+

4.6.5.4 Writing the Value of an MI Register

Method NameRegisters.Write_MI(int index , int value )
DescriptionUpdates the value of an MI register.
Request Parametersindex : int Register number
value : int Register information to update
Return ValueStatusCode: Function execution result
Compatible robot software versionCollaborative (Copper): v7.6.0.0+
Industrial (Bronze): v7.6.0.0+

Example Code

Registers/ModbusRegisterOperations.cs
cs
using Agilebot.IR;
using Agilebot.IR.Types;

public class ModbusRegisterOperations
{
    public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
    {
        // [ZH] 初始化捷勃特机器人
        // [EN] Initialize the Agilebot robot
        Arm controller = new Arm(controllerIP, useLocalProxy);

        // [ZH] 连接捷勃特机器人
        // [EN] Connect to the Agilebot robot
        StatusCode code = controller.ConnectSync();
        Console.WriteLine(code != StatusCode.OK ? code.GetDescription() : "连接成功/Successfully connected.");

        if (code != StatusCode.OK)
        {
            return code;
        }

        try
        {
            // [ZH] 设置寄存器索引和值
            // [EN] Set register index and value
            int index = 1;
            int writeValue = 8;

            // [ZH] 写入MH保持寄存器
            // [EN] Write MH holding register
            code = controller.Registers.Write_MH(index, writeValue);
            if (code == StatusCode.OK)
            {
                Console.WriteLine("写入MH保持寄存器成功/Write MH Holding Register Success");
            }
            else
            {
                Console.WriteLine($"写入MH保持寄存器失败/Write MH Holding Register Failed: {code.GetDescription()}");
            }

            // [ZH] 写入MI输入寄存器
            // [EN] Write MI input register
            code = controller.Registers.Write_MI(index, writeValue + 1);
            if (code == StatusCode.OK)
            {
                Console.WriteLine("写入MI输入寄存器成功/Write MI Input Register Success");
            }
            else
            {
                Console.WriteLine($"写入MI输入寄存器失败/Write MI Input Register Failed: {code.GetDescription()}");
            }

            // [ZH] 读取MH保持寄存器
            // [EN] Read MH holding register
            int mhValue;
            (mhValue, code) = controller.Registers.Read_MH(index);
            if (code == StatusCode.OK)
            {
                Console.WriteLine($"读取MH保持寄存器成功/Read MH Holding Register Success: 值/Value = {mhValue}");
            }
            else
            {
                Console.WriteLine($"读取MH保持寄存器失败/Read MH Holding Register Failed: {code.GetDescription()}");
            }

            // [ZH] 读取MI输入寄存器
            // [EN] Read MI input register
            int miValue;
            (miValue, code) = controller.Registers.Read_MI(index);
            if (code == StatusCode.OK)
            {
                Console.WriteLine($"读取MI输入寄存器成功/Read MI Input Register Success: 值/Value = {miValue}");
            }
            else
            {
                Console.WriteLine($"读取MI输入寄存器失败/Read MI Input Register Failed: {code.GetDescription()}");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
            code = StatusCode.OtherReason;
        }
        finally
        {
            // [ZH] 关闭连接
            // [EN] Close the connection
            StatusCode disconnectCode = controller.Disconnect();
            if (disconnectCode != StatusCode.OK)
            {
                Console.WriteLine(disconnectCode.GetDescription());
                if (code == StatusCode.OK)
                    code = disconnectCode;
            }
        }

        return code;
    }
}