- 选型指南
- 概述
- 入门指南
- 机械臂参数
- 示教器使用
-
二次开发
-
API(C++)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
-
API(Python)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
- ROS2开发
-
API(C++)
- 相关下载
模式与 IO 控制接口
头文件:include/tl_interface.h、include/tl_io.h
相关示例代码:examples\cpp\ex_digital_io.cpp、examples\cpp\ex_move_control.cpp
1. set_current_mode - 设置机器人模式(切换示教模式和运动模式)
方法:Result set_current_mode(SOCKETFD socketFd, RobotMode mode);
功能描述:切换控制器运行模式:示教模式(手动)、远程模式、运行模式(自动运行作业)。推荐使用 RobotMode 枚举重载版本,int 旧版已废弃。切换为运行模式后将自动进入伺服上电状态,无须额外上电。
参数:
- socketFd:已连接的句柄。
- mode:目标模式,RobotMode 枚举:
- RobotMode::TEACH:示教模式
- RobotMode::REMOTE:远程模式
- RobotMode::RUN:运行模式
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// 切换为示教模式
auto ret = tl::set_current_mode(socket_fd, tl::RobotMode::TEACH);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 切换示教模式失败,错误码: " << ret << std::endl;
return -1;
}
std::cout << "[信息] 已切换为示教模式" << std::endl;
2. set_digital_output - 设置数字 IO 输出
方法:Result set_digital_output(SOCKETFD socketFd, int port, IoLevel value);
功能描述:设置指定数字输出端口的状态。推荐使用 IoLevel 枚举重载版本,int 旧版已废弃。
参数:
- socketFd:已连接的句柄。
- port:输出端口号,范围【1,最大端口数】。
- value:输出电平,IoLevel 枚举:
- IoLevel::OFF:输出关闭(低电平)
- IoLevel::ON:输出打开(高电平)
返回值:
- 0:成功。
- 非0:失败(如端口号越界)。
使用示例:
// 设置数字 IO 输出(端口 1 输出高电平)
int io_port = 1;
auto ret = tl::set_digital_output(socket_fd, io_port, tl::IoLevel::ON);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 设置数字 IO 输出失败,错误码: " << ret << std::endl;
return -1;
}
std::cout << "[信息] 设置数字 IO 输出成功" << std::endl;
3. get_digital_output - 查询数字 IO 输出
方法:Result get_digital_output(SOCKETFD socketFd, std::vector<int>& out);
功能描述:一次获取所有数字输出端口的电平状态(通常 64 路)。
参数:
- socketFd:已连接的句柄。
- out:输出,存储各端口状态(0 或 1)的数组,长度 64。
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// 查询所有数字输出
std::vector<int> output_values;
auto ret = tl::get_digital_output(socket_fd, output_values);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 查询数字 IO 输出失败,错误码: " << ret << std::endl;
return -1;
}
std::cout << "[信息] 查询数字 IO 输出成功,状态为:";
for (const auto& state : output_values) {
std::cout << " " << state;
}
std::cout << std::endl;
4. get_digital_input - 获取所有 IO 输入状态
方法:Result get_digital_input(SOCKETFD socketFd, std::vector<int>& in);
功能描述:一次获取所有数字输入端口的电平状态(通常 64 路)。
参数:
- socketFd:已连接的句柄。
- in:输出,存储各输入端口状态的数组,长度 64。
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// 获取所有数字输入状态
std::vector<int> input_values;
auto ret = tl::get_digital_input(socket_fd, input_values);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 获取数字 IO 输入失败,错误码: " << ret << std::endl;
return -1;
}
std::cout << "[信息] 获取数字 IO 输入成功,状态为:";
for (const auto& state : input_values) {
std::cout << " " << state;
}
std::cout << std::endl;
5. set_analog_output - 设置模拟量输出
方法:Result set_analog_output(SOCKETFD socketFd, int port, double value);
功能描述:设置指定模拟量输出端口的数值。
参数:
- socketFd:已连接的句柄。
- port:端口号。
- value:数值,范围 0≤value≤10。
返回值:
- 0:成功。
- 非0:失败(如数值越界)。
使用示例:
// 设置模拟量输出(端口 1,输出 5.0V)
int port = 1;
auto ret = tl::set_analog_output(socket_fd, port, 5.0);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 设置模拟量输出失败,错误码: " << ret << std::endl;
return -1;
}
std::cout << "[信息] 设置模拟量输出成功" << std::endl;
6. get_analog_input - 获取模拟量输入
方法:Result get_analog_input(SOCKETFD socketFd, std::vector<double>& ain);
功能描述:一次获取所有模拟量输入端口的数值。
参数:
- socketFd:已连接的句柄。
- ain:输出,模拟量输入数组,最大长度 64。
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// 获取所有模拟量输入
std::vector<double> analog_input;
auto ret = tl::get_analog_input(socket_fd, analog_input);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 获取模拟量输入失败,错误码: " << ret << std::endl;
return -1;
}
std::cout << "[信息] 获取模拟量输入成功,共 " << analog_input.size() << " 路" << std::endl;
7. get_analog_output - 获取模拟量输出
方法:Result get_analog_output(SOCKETFD socketFd, std::vector<double>& aout);
功能描述:一次获取所有模拟量输出端口的数值。
参数:
- socketFd:已连接的句柄。
- aout:输出,模拟量输出数组,最大长度 64。
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// 获取所有模拟量输出
std::vector<double> analog_output;
auto ret = tl::get_analog_output(socket_fd, analog_output);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 获取模拟量输出失败,错误码: " << ret << std::endl;
return -1;
}
std::cout << "[信息] 获取模拟量输出成功,共 " << analog_output.size() << " 路" << std::endl;
8. get_io_type - 获取 IO 类型
方法:Result get_io_type(SOCKETFD socketFd, IOtype& io_type);
功能描述:获取 IO 型号和端口数量信息。
参数:
- socketFd:已连接的句柄。
- io_type:输出,IOtype 结构体:
- num:IO 板数量
- type:IO 型号列表
- io_port_sum:IO 端口数量,二维数组,每块 IO 板为 [数字输入端口数, 数字输出端口数, 模拟输入端口数, 模拟输出端口数]
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// 获取 IO 类型信息
tl::IOtype io_type;
auto ret = tl::get_io_type(socket_fd, io_type);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 获取 IO 类型失败,错误码: " << ret << std::endl;
return -1;
}
std::cout << "[信息] IO 板数量: " << io_type.num << std::endl;
for (size_t i = 0; i < io_type.type.size(); ++i) {
std::cout << " IO 板 " << i << " 型号: " << io_type.type[i] << std::endl;
}
9. get_IO_reset_function - 获取 IO 复位功能
方法:Result get_IO_reset_function(SOCKETFD socketFd, int robotNum, IoResetType type, std::vector<int>& enable, std::vector<int>& value);
功能描述:获取 IO 复位相关参数。推荐使用 IoResetType 枚举重载版本,int 旧版已废弃。
参数:
- socketFd:已连接的句柄。
- robotNum:机器人编号(1-4)。
- type:复位类型,IoResetType 枚举:
- IoResetType::REMOTE_IO:远程 IO 复位
- IoResetType::MODE_STOP:切模式停止
- IoResetType::PROGRAM_ERROR:程序报错
- enable:输出,是否复位容器,大小为所有 IO 板输出端口数。
- value:输出,复位值容器,大小为所有 IO 板输出端口数。
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// 获取远程 IO 复位参数
std::vector<int> enable;
std::vector<int> value;
auto ret = tl::get_IO_reset_function(socket_fd, 1, tl::IoResetType::REMOTE_IO, enable, value);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 获取 IO 复位功能失败,错误码: " << ret << std::endl;
return -1;
}
std::cout << "[信息] 获取 IO 复位功能成功,端口数: " << enable.size() << std::endl;
