13. 扩展轴

13.1. 设置485扩展轴参数

在 C#SDK-v1.0.6 版本加入.

 1/**
 2* @brief 设置485扩展轴参数
 3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
 4* @param [in] servoCompany 伺服驱动器厂商,1-戴纳泰克
 5* @param [in] servoModel 伺服驱动器型号,1-FD100-750C
 6* @param [in] servoSoftVersion 伺服驱动器软件版本,1-V1.0
 7* @param [in] servoResolution 编码器分辨率
 8* @param [in] axisMechTransRatio 机械传动比
 9* @return 错误码
10*/
11int AuxServoSetParam(int servoId, int servoCompany, int servoModel, int servoSoftVersion, int servoResolution, double axisMechTransRatio);

13.2. 获取485扩展轴参数

在 C#SDK-v1.0.6 版本加入.

 1/**
 2* @brief 获取485扩展轴配置参数
 3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
 4* @param [out] servoCompany 伺服驱动器厂商,1-戴纳泰克
 5* @param [out] servoModel 伺服驱动器型号,1-FD100-750C
 6* @param [out] servoSoftVersion 伺服驱动器软件版本,1-V1.0
 7* @param [out] servoResolution 编码器分辨率
 8* @param [out] axisMechTransRatio 机械传动比
 9* @return 错误码
10*/
11int AuxServoGetParam(int servoId, ref int servoCompany, ref int servoModel, ref int servoSoftVersion, ref int servoResolution, ref double axisMechTransRatio);

13.3. 设置485扩展轴使能/去使能

在 C#SDK-v1.0.6 版本加入.

1/**
2* @brief 设置485扩展轴使能/去使能
3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
4* @param [in] status 使能状态,0-去使能, 1-使能
5* @return 错误码
6*/
7int AuxServoEnable(int servoId, int status);

13.4. 设置485扩展轴控制模式

在 C#SDK-v1.0.6 版本加入.

1/**
2* @brief 设置485扩展轴控制模式
3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
4* @param [in] mode 控制模式,0-位置模式,1-速度模式
5* @return 错误码
6*/
7int AuxServoSetControlMode(int servoId, int mode);

13.5. 代码示例

在 C#SDK-v1.0.6 版本加入.

 1private void btnWeldStart_Click(object sender, EventArgs e)
 2{
 3Robot robot = new Robot();
 4robot.RPC("192.168.58.2");
 5
 6robot.AuxServoSetParam(1, 1, 1, 1, 131072, 36);//设置配置参数
 7int ID = -1, company = -1, model = -1, soft = -1, servoResolution= -1;
 8int radio = -1;
 9    robot.AuxServoGetParam(1, ref company, ref model, ref soft, ref servoResolution, ref radio);//获取配置参数
10
11    Thread.Sleep(100);
12    robot.AuxServoEnable(1, 0);//去使能伺服
13    Thread.Sleep(100);
14    robot.AuxServoSetControlMode(1, 0);//设置位置模式
15    Thread.Sleep(100);
16    robot.AuxServoEnable(1, 1);//使能伺服
17}

13.6. 设置485扩展轴回零

在 C#SDK-v1.0.6 版本加入.

1/**
2* @brief 设置485扩展轴回零
3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
4* @param [in] mode 回零模式,1-当前位置回零;2-负限位回零;3-正限位回零
5* @param [in] searchVel 回零速度,mm/s或°/s
6* @param [in] latchVel 箍位速度,mm/s或°/s
7* @return 错误码
8*/
9int AuxServoHoming(int servoId, int mode, double searchVel, double latchVel);

13.7. 设置485扩展轴目标位置(位置模式)

在 C#SDK-v1.0.6 版本加入.

1/**
2* @brief 设置485扩展轴目标位置(位置模式)
3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
4* @param [in] pos 目标位置,mm或°
5* @param [in] speed 目标速度,mm/s或°/s
6* @return 错误码
7*/
8int AuxServoSetTargetPos(int servoId, double pos, double speed);

13.8. 设置485扩展轴目标速度(速度模式)

在 C#SDK-v1.0.6 版本加入.

1/**
2* @brief 设置485扩展轴目标速度(速度模式)
3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
4* @param [in] speed 目标速度,mm/s或°/s
5* @return 错误码
6*/
7int AuxServoSetTargetSpeed(int servoId, double speed);

13.9. 代码示例

在 C#SDK-v1.0.6 版本加入.

 1private void btnWeldStart_Click(object sender, EventArgs e)
 2{
 3    Robot robot = new Robot();
 4    robot.RPC("192.168.58.2");
 5
 6    robot.AuxServoEnable(1, 0);//去使能
 7    Thread.Sleep(100);
 8    robot.AuxServoSetControlMode(1, 0);//设置位置模式
 9    Thread.Sleep(100);
10    robot.AuxServoEnable(1, 1);//使能
11    Thread.Sleep(100);
12    robot.AuxServoHoming(1, 1, 20, 5);//回零
13    Thread.Sleep(4000);//伺服回零需要一定的时间
14
15    robot.AuxServoSetTargetPos(1, 1000, 100);//设置目标位置
16    Thread.Sleep(1000);
17    robot.AuxServoSetTargetPos(1, 0, 100);//再次设置目标位置
18    Thread.Sleep(1000);
19
20    robot.AuxServoEnable(1, 0);//去使能
21    Thread.Sleep(100);
22    robot.AuxServoSetControlMode(1, 1);//设置速度模式
23    Thread.Sleep(100);
24    robot.AuxServoEnable(1, 1);//使能
25    Thread.Sleep(100);
26    robot.AuxServoHoming(1, 1, 20, 5);//回零
27    Thread.Sleep(4000);//回零需要一定时间
28    robot.AuxServoSetTargetSpeed(1, 50);//设置目标速度
29    Thread.Sleep(3000);
30
31    robot.AuxServoSetTargetSpeed(1, -300);//设置目标速度
32    Thread.Sleep(3000);
33    robot.AuxServoSetTargetSpeed(1, 0);//伺服停止
34    Thread.Sleep(100);
35}

13.10. 设置485扩展轴目标转矩(力矩模式)–暂未开放

在 C#SDK-v1.0.6 版本加入.

1/**
2* @brief 设置485扩展轴目标转矩(力矩模式)--暂未开放
3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
4* @param [in] torque 目标力矩,Nm
5* @return 错误码
6*/
7int AuxServoSetTargetTorque(int servoId, double torque);

13.11. 清除485扩展轴错误信息

在 C#SDK-v1.0.6 版本加入.

1/**
2* @brief 清除485扩展轴错误信息
3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
4* @return 错误码
5*/
6int AuxServoClearError(int servoId);

13.12. 获取485扩展轴伺服状态

在 C#SDK-v1.0.6 版本加入.

 1/**
 2* @brief 获取485扩展轴伺服状态
 3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
 4* @param [out] servoErrCode 伺服驱动器故障码
 5* @param [out] servoState 伺服驱动器状态  bit0:0-未使能;1-使能;  bit1:0-未运动;1-正在运动;  bit2 0-正限位未触发;1-正限位触发;bit3 0-负限位未触发;1-负限位触发;bit4 0-未定位完成;1-定位完成;  bit5:0-未回零;1-回零完成
 6* @param [out] servoPos 伺服当前位置 mm或°
 7* @param [out] servoSpeed 伺服当前速度 mm/s或°/s
 8* @param [out] servoTorque 伺服当前转矩Nm
 9* @return 错误码
10*/
11int AuxServoGetStatus(int servoId, ref int servoErrCode, ref int servoState, ref double servoPos, ref double servoSpeed, ref double servoTorque);

13.13. 设置状态反馈中485扩展轴数据轴号

在 C#SDK-v1.0.6 版本加入.

1/**
2* @brief 设置状态反馈中485扩展轴数据轴号
3* @param [in] servoId 伺服驱动器ID,范围[1-15],对应从站ID
4* @return 错误码
5*/
6int AuxServosetStatusID(int servoId);

13.14. 代码示例

在 C#SDK-v1.0.6 版本加入.

 1private void btnWeldStart_Click(object sender, EventArgs e)
 2{
 3    Robot robot = new Robot();
 4    robot.RPC("192.168.58.2");
 5
 6        robot.AuxServoClearError(1);
 7    int errCode = 0;
 8    int servoState = 0;
 9    double pos = 0;
10    double speed = 0;
11    double torque = 0;
12    robot.AuxServoGetStatus(1, ref errCode, ref servoState, ref pos, ref speed, ref torque);
13
14    robot.AuxServosetStatusID(1);
15    ROBOT_STATE_PKG pKG = new ROBOT_STATE_PKG();
16    robot.GetRobotRealTimeState(ref pKG);
17    Console.WriteLine($"the state is {pKG.auxState.servoPos}");
18}