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}