12. 扩展轴

12.1. 设置485扩展轴参数

在 C++SDK-v2.1.3.0 版本加入.

 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*/
11errno_t AuxServoSetParam(int servoId, int servoCompany, int servoModel, int servoSoftVersion, int servoResolution, double axisMechTransRatio);

12.2. 获取485扩展轴配置参数

在 C++SDK-v2.1.3.0 版本加入.

 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*/
11errno_t AuxServoGetParam(int servoId, int* servoCompany, int* servoModel, int* servoSoftVersion, int* servoResolution, double* axisMechTransRatio);

12.3. 代码示例

在 C++SDK-v2.1.3.0 版本加入.

 1#include "libfairino/robot.h"
 2
 3//如果使用Windows,包含下面的头文件
 4#include <string.h>
 5#include <windows.h>
 6//如果使用linux,包含下面的头文件
 7/*
 8#include <cstdlib>
 9#include <iostream>
10#include <stdio.h>
11#include <cstring>
12#include <unistd.h>
13*/
14#include <chrono>
15#include <thread>
16#include <string>
17
18using namespace std;
19
20int main(void)
21{
22    FRRobot robot;
23    robot.LoggerInit();
24    robot.SetLoggerLevel();
25    robot.RPC("192.168.58.2");
26
27    int retval = robot.AuxServoSetParam(1, 1, 1, 1, 131072, 15.45);
28    std::cout << "AuxServoSetParam is: " << retval << std::endl;
29
30    int servoCompany;
31    int servoModel;
32    int servoSoftVersion;
33    int servoResolution;
34    double axisMechTransRatio;
35    retval = robot.AuxServoGetParam(1, &servoCompany, &servoModel, &servoSoftVersion, &servoResolution, &axisMechTransRatio);
36    std::cout << "servoCompany " << servoCompany<< "\n"
37              << "servoModel " << servoModel << "\n"
38              << "servoSoftVersion " << servoSoftVersion<< "\n"
39              << "servoResolution " << servoResolution<< "\n"
40              << "axisMechTransRatio "<<axisMechTransRatio<< "\n"
41              << std::endl;
42
43    retval = robot.AuxServoSetParam(1, 10, 11, 12, 13, 14);
44    std::cout << "AuxServoSetParam is: " << retval << std::endl;
45
46    retval = robot.AuxServoGetParam(1, &servoCompany, &servoModel, &servoSoftVersion, &servoResolution, &axisMechTransRatio);
47    std::cout << "servoCompany " << servoCompany<< "\n"
48              << "servoModel " << servoModel << "\n"
49              << "servoSoftVersion " << servoSoftVersion<< "\n"
50              << "servoResolution " << servoResolution<< "\n"
51              << "axisMechTransRatio "<<axisMechTransRatio<< "\n"
52              << std::endl;
53
54    return 0;
55}

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

在 C++SDK-v2.1.3.0 版本加入.

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

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

在 C++SDK-v2.1.3.0 版本加入.

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

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

在 C++SDK-v2.1.3.0 版本加入.

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*/
8errno_t AuxServoSetTargetPos(int servoId, double pos, double speed);

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

在 C++SDK-v2.1.3.0 版本加入.

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

12.8. 设置485扩展轴回零

在 C++SDK-v2.1.3.0 版本加入.

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

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

在 C++SDK-v2.1.3.0 版本加入.

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

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

在 C++SDK-v2.1.3.0 版本加入.

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

12.11. 代码示例

在 C++SDK-v2.1.3.0 版本加入.

 1#include "libfairino/robot.h"
 2
 3//如果使用Windows,包含下面的头文件
 4#include <string.h>
 5#include <windows.h>
 6//如果使用linux,包含下面的头文件
 7/*
 8#include <cstdlib>
 9#include <iostream>
10#include <stdio.h>
11#include <cstring>
12#include <unistd.h>
13*/
14#include <chrono>
15#include <thread>
16#include <string>
17
18using namespace std;
19
20int main(void)
21{
22    FRRobot robot;
23    robot.LoggerInit();
24    robot.SetLoggerLevel();
25    robot.RPC("192.168.58.2");
26    int retval = 0;
27
28    retval = robot.AuxServoSetParam(1, 1, 1, 1, 131072, 36);
29    std::cout << "AuxServoSetParam is: " << retval << std::endl;
30    std::this_thread::sleep_for(std::chrono::seconds(3));
31
32    retval = robot.AuxServoEnable(1, 0);
33    std::cout << "AuxServoEnable disenable " << retval << std::endl;
34    std::this_thread::sleep_for(std::chrono::seconds(1));
35    int servoerrcode = 0;
36    int servoErrCode;
37    int servoState;
38    double servoPos;
39    double servoSpeed;
40    double servoTorque;
41    retval = robot.AuxServoGetStatus(1, &servoErrCode, &servoState, &servoPos, &servoSpeed, &servoTorque);
42    std::cout << "AuxServoGetStatus servoState "<< servoState << std::endl;
43    std::this_thread::sleep_for(std::chrono::seconds(1));
44
45    retval = robot.AuxServoEnable(1, 1);
46    std::cout << "AuxServoEnable enable " << retval << std::endl;
47    std::this_thread::sleep_for(std::chrono::seconds(1));
48    retval = robot.AuxServoGetStatus(1, &servoErrCode, &servoState, &servoPos, &servoSpeed, &servoTorque);
49    std::cout << "AuxServoGetStatus servoState "<< servoState << std::endl;
50    std::this_thread::sleep_for(std::chrono::seconds(1));
51
52    retval = robot.AuxServoHoming(1, 1, 5, 1);
53    std::cout << "AuxServoHoming " << retval << std::endl;
54    std::this_thread::sleep_for(std::chrono::seconds(3));
55
56    retval = robot.AuxServoSetTargetPos(1, 200, 30);
57    std::cout << "AuxServoSetTargetPos " << retval << std::endl;
58    std::this_thread::sleep_for(std::chrono::seconds(1));
59    retval = robot.AuxServoGetStatus(1, &servoErrCode, &servoState, &servoPos, &servoSpeed, &servoTorque);
60    std::cout << "AuxServoGetStatus servoSpeed "<< servoSpeed << std::endl;
61    std::this_thread::sleep_for(std::chrono::seconds(1));
62
63    return 0;
64}

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

在 C++SDK-v2.1.3.0 版本加入.

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

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

在 C++SDK-v2.1.3.0 版本加入.

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

12.14. 获取机器人实时状态结构体

在 C++SDK-v2.1.3.0 版本加入.

1/**
2* @brief 获取机器人实时状态结构体
3* @param [out] pkg 机器人实时状态结构体
4* @return 错误码
5*/
6errno_t GetRobotRealTimeState(ROBOT_STATE_PKG *pkg);