二、IO 控制(nrc_io.h)
IO 基础概念
IO 控制接口用于读写机器人的数字量/模拟量输入输出端口,支持多块 IO 板级联,端口命名格式为 板号-端口号(如 DIN1-1 表示第 1 块 IO 板的第 1 路数字输入)。
| 类型 | 命名前缀 | 说明 | 典型用途 |
|---|---|---|---|
| 数字输入 | DIN | 接收外部开关/传感器信号(高/低电平) | 启动按钮、限位开关、传感器检测 |
| 数字输出 | DOUT | 控制外部设备通断,不接收反馈 | 继电器、指示灯、电磁阀 |
| 模拟输入 | AIN | 接收连续变化的电压/电流信号 | 模拟传感器、变送器 |
| 模拟输出 | AOUT | 输出连续变化的电压/电流信号,范围 [0,10] | 变频器给定、比例阀 |
IO 板端口命名:
DIN1-1中DIN为数字输入、1为 IO 板号、1为端口号;模拟量同理为AIN1-1/AOUT1-1。
2.1 IO 查询与设置
get_io_type
IO 型号查询,获取当前连接的 IO 板数量、型号及各类型端口数量。
函数原型:
Result get_io_type(SOCKETFD socketFd, IOtype& io_type);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| io_type | IOtype& | 输出参数,IO 型号和端口信息 |
IOtype 结构体:
| 字段 | 类型 | 说明 |
|---|---|---|
| num | int | IO 板数量 |
| type | vector<string> | 各 IO 板型号 |
| io_port_sum | vector<vector<int>> | 各 IO 板端口数量,一维数组为 [数字输入数量, 数字输出数量, 模拟输入数量, 模拟输出数量] |
返回值: SUCCESS(0) 表示成功,负数表示失败。
使用示例:
IOtype io_type;
Result result = get_io_type(fd, io_type);
if (result == SUCCESS) {
printf("IO板数量: %d\n", io_type.num);
for (int i = 0; i < io_type.num; i++) {
printf("IO板%d: %s, DIN:%d DOUT:%d AIN:%d AOUT:%d\n",
i + 1, io_type.type[i].c_str(),
io_type.io_port_sum[i][0], io_type.io_port_sum[i][1],
io_type.io_port_sum[i][2], io_type.io_port_sum[i][3]);
}
}set_digital_output
设置数字输出端口状态。
函数原型:
Result set_digital_output(SOCKETFD socketFd, int port, int value);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| port | int | 端口号,范围 [1, 最大端口数] |
| value | int | 输出值,0 或 1(0=低电平,1=高电平) |
返回值: SUCCESS(0) 表示成功,负数表示失败。
使用示例:
// 将第 1 块 IO 板的第 3 路数字输出置为高电平
Result result = set_digital_output(fd, 3, 1);
if (result == SUCCESS) {
printf("数字输出设置成功\n");
}get_digital_output
一次获取所有数字输出端口状态。
函数原型:
Result get_digital_output(SOCKETFD socketFd, std::vector<int>& out);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| out | std::vector<int>& | 输出参数,存储结果的数组,长度为 64 |
返回值: SUCCESS(0) 表示成功,负数表示失败。
使用示例:
std::vector<int> out(64);
Result result = get_digital_output(fd, out);
if (result == SUCCESS) {
printf("DOUT1-1 = %d\n", out[0]);
}get_digital_input
一次获取所有数字输入端口状态。
函数原型:
Result get_digital_input(SOCKETFD socketFd, std::vector<int>& in);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| in | std::vector<int>& | 输出参数,存储结果的数组,长度为 64 |
返回值: SUCCESS(0) 表示成功,负数表示失败。
使用示例:
std::vector<int> in(64);
Result result = get_digital_input(fd, in);
if (result == SUCCESS) {
printf("DIN1-1 = %d\n", in[0]); // 检测启动按钮状态
}set_analog_output
设置模拟输出端口数值。
函数原型:
Result set_analog_output(SOCKETFD socketFd, int port, double value);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| port | int | 端口号 |
| value | double | 输出数值,范围 [0, 10] |
返回值: SUCCESS(0) 表示成功,负数表示失败。
使用示例:
// 将 AOUT1-1 输出 5V
Result result = set_analog_output(fd, 1, 5.0);
if (result == SUCCESS) {
printf("模拟输出设置成功\n");
}get_analog_output
查询所有模拟输出端口数值。
函数原型:
Result get_analog_output(SOCKETFD socketFd, std::vector<double>& aout);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| aout | std::vector<double>& | 输出参数,模拟输出数组,最大长度 64 |
返回值: SUCCESS(0) 表示成功,负数表示失败。
get_analog_input
查询所有模拟输入端口数值。
函数原型:
Result get_analog_input(SOCKETFD socketFd, std::vector<double>& ain);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| ain | std::vector<double>& | 输出参数,模拟输入数组,最大长度 64 |
返回值: SUCCESS(0) 表示成功,负数表示失败。
使用示例:
std::vector<double> ain(64);
Result result = get_analog_input(fd, ain);
if (result == SUCCESS) {
printf("AIN1-1 = %.2f\n", ain[0]);
}set_force_digital_input
设置数字输入端口是否强制打开(强制置位),用于调试场景模拟输入信号。
函数原型:
Result set_force_digital_input(SOCKETFD socketFd, int port, int force, int value);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| port | int | 输入端口号 |
| force | int | 是否强制,1=强制,0=非强制 |
| value | int | 强制状态,0 或 1 |
返回值: SUCCESS(0) 表示成功,负数表示失败。
使用示例:
// 强制将 DIN1-1 置为 1(模拟按钮按下)
Result result = set_force_digital_input(fd, 1, 1, 1);get_force_digital_input
获取当前已打开强制功能的输入端口及其状态。
函数原型:
Result get_force_digital_input(SOCKETFD socketFd, std::vector<int>& port, std::vector<double>& status);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| port | std::vector<int>& | 输出参数,当前打开强制输入的端口 |
| status | std::vector<double>& | 输出参数,对应端口状态,下标与 port 一一对应 |
返回值: SUCCESS(0) 表示成功,负数表示失败。
2.2 IO 复位与报警
IO 复位功能说明
当程序运行停止或报错时,IO 复位功能能使 IO 输出端口恢复到初始状态。共分三种复位类型:
| 复位类型 | type 值 | 触发条件 |
|---|---|---|
| 远程 IO 复位 | 1 | 远程模式给复位信号,机器人执行复位程序回到复位点时,将设置的 IO 端口复位到复位值;若复位程序中途停止则不复位 |
| 切模式停止 | 2 | 运行程序时切换到示教/远程模式导致程序停止,将设置的 IO 端口复位到复位值 |
| 程序报错 | 3 | 程序发生错误导致程序停止,将设置的 IO 端口复位到复位值(伺服报错、IO 设置的报错、系统运行中的报错) |
IO 报警信息说明
可自定义 IO 输入输出端口触发报警时的提示信息,报警优先级高于其他类型 IO 报警。每条报警包含:
| 参数 | 说明 |
|---|---|
| 端口 | 绑定报警的 IO 端口 |
| 类型 | 消息(msgType=0)/ 警告(msgType=1)/ 错误(msgType=2) |
| 消息 | 触发报警后输出的内容 |
| 参数 | 0=端口为 0 时触发,1=端口为 1 时触发 |
| 使能 | 关闭后无论 IO 状态如何都不触发报警 |
三种报警类型的表现:
| 类型 | 界面表现 | 对机器人的影响 |
|---|---|---|
| 消息 | 右下角白色提示条 | 无影响 |
| 警告 | 右下角黄色提示条 | 无影响 |
| 错误 | 右下角红色提示条 | 若机器人正在运行会强制下使能 |
set_IO_reset_function
设置 IO 复位功能。
函数原型:
Result set_IO_reset_function(SOCKETFD socketFd, int robotNum, int type, std::vector<int> enable, std::vector<int> value);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| type | int | 复位类型:1=远程 IO 复位,2=切模式停止,3=程序报错 |
| enable | std::vector<int> | 是否复位容器,大小等于所有 IO 板输出端口总数 |
| value | std::vector<int> | 复位值容器,大小等于所有 IO 板输出端口总数 |
注意
每次设置需包含所有端口,否则会覆盖上一次的修改。多块 IO 板时端口顺序为上一块 IO 板末位端口的顺延。
使用示例(两块 IO 板,每块输出 16 路):
// 1-1 端口选择复位,复位值 1;2-1 端口选择复位,复位值 1
std::vector<int> enable(32, 0);
std::vector<int> value(32, 0);
enable[0] = 1; value[0] = 1; // 第 1 块 IO 板 1 端口
enable[16] = 1; value[16] = 1; // 第 2 块 IO 板 1 端口
Result result = set_IO_reset_function(fd, 1, 1, enable, value);get_IO_reset_function
获取 IO 复位相关参数。
函数原型:
Result get_IO_reset_function(SOCKETFD socketFd, int robotNum, int type, std::vector<int>& enable, std::vector<int>& value);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| type | int | 复位类型:1=远程 IO 复位,2=切模式停止,3=程序报错 |
| enable | std::vector<int>& | 输出参数,是否复位容器 |
| value | std::vector<int>& | 输出参数,复位值容器 |
返回值: SUCCESS(0) 表示成功,负数表示失败。
set_error_msg_of_digital_input / set_error_msg_of_digital_output
设置 IO 报警信息数字输入/输出端口报警功能。
函数原型:
Result set_error_msg_of_digital_input(SOCKETFD socketFd, std::vector<AlarmdIO> msg);
Result set_error_msg_of_digital_output(SOCKETFD socketFd, std::vector<AlarmdIO> msg);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| msg | std::vector<AlarmdIO> | 消息设置结构体数组,大小与 IO 板端口数一致 |
AlarmdIO 结构体:
| 字段 | 类型 | 说明 |
|---|---|---|
| msgType | int | 消息类型:0=普通消息,1=警告消息,2=错误消息(22.07 版本无此参数,全部设为 0) |
| value | int | IO 有效参数 (0/1),0=端口为 0 时触发,1=端口为 1 时触发 |
| enable | int | 使能设置 (0/1) |
| msg | std::string | 消息内容 |
注意
msg 数组大小必须与 IO 板端口数一致,每次设置相应端口均不能忽略,否则会覆盖上一次的设置。
使用示例(两块 IO 板,每块输入输出各 16 位):
std::vector<AlarmdIO> msg(32);
// IO 板1 输出端口 1:错误消息 "QQQ",类型 2,参数 1,使能 1
msg[0].msgType = 2; msg[0].enable = 1; msg[0].value = 1; msg[0].msg = "QQQ";
// 中间 15 个端口不设置
for (int i = 1; i < 16; i++) {
msg[i].msgType = 0; msg[i].enable = 0; msg[i].value = 0; msg[i].msg = "";
}
// IO 板2 输出端口 1:错误消息 "YYY"
msg[16].msgType = 2; msg[16].enable = 1; msg[16].value = 1; msg[16].msg = "YYY";
Result result = set_error_msg_of_digital_output(fd, msg);get_error_msg_of_digital_input / get_error_msg_of_digital_output
获取 IO 报警信息数字输入/输出端口报警设置。
函数原型:
Result get_error_msg_of_digital_input(SOCKETFD socketFd, std::vector<AlarmdIO>& msg);
Result get_error_msg_of_digital_output(SOCKETFD socketFd, std::vector<AlarmdIO>& msg);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| msg | std::vector<AlarmdIO>& | 输出参数,消息设置结构体数组 |
返回值: SUCCESS(0) 表示成功,负数表示失败。
2.3 远程 IO
远程模式信号说明
远程模式下可通过 IO 信号控制机器人启停及程序预约,标准信号功能如下:
数字 IO 输入(远程控制信号):
| 功能 | 触发方式 | 说明 |
|---|---|---|
| 启动 | 上升沿 | 参数为 1 时,信号 0 变 1 有效 |
| 停止 | 持续有效 | 参数为 1 时,信号持续有效 |
| 暂停 | 持续有效 | 参数为 1 时,信号持续有效 |
| 清除报警 | 上升沿 | 参数为 1 时,信号 0 变 1 有效 |
| 预约即启动 | 无 | 打开时,预约成功即上电 |
| IO 远程程序 1-10 | 脉冲(周期 0.6s) | 参数为 1 时,信号 0-1-0 有效,程序预约成功至少需触发 0.6 秒以上 |
| 紧急停止 1/2 | 高电平 | 1ms 扫描一次,扫描到即触发 |
| 安全光幕 1/2 | 高电平 | 运行中触发机器人暂停 |
| 屏蔽紧急停止 1/2 | 配合紧急停止 | 按钮打开即屏蔽,设置时间到后重新检测 |
数字 IO 输出(状态提示信号):
| 功能 | 说明 |
|---|---|
| Robot1 运行 | 程序运行时输出高电平 |
| Robot1 暂停 | 程序暂停时输出高电平 |
| Robot1 停止 | 程序停止时输出高电平 |
| 报错提示 | 常亮输出高电平,闪烁输出脉冲(周期 1s) |
| 使能 | 输出高电平 |
| IO 远程程序 1-10 预约输出 | 预约中闪烁(周期 1.2s),运行中常亮 |
| 主程序首行 | 输出一个高电平参数为 1 的信号,程序光标跳至主程序首行 |
| 可继续执行 | 输出高电平,可运行暂停的程序 |
| 拔出示教盒 | 拔出示教盒后输出高/低电平 |
远程模式状态说明:
| 状态 | 说明 |
|---|---|
| 未预约 | 进入远程模式后未预约过程序,或预约后取消 |
| 预约中 | 预约成功显示预约中 |
| 运行中 | 程序正在运行 |
| 已预约 | 程序运行完成或被触发停止 |
远程模式不能修改速度,速度修改需提前在【设置-远程程序设置】中修改;触发对应程序的 IO 口即预约程序,取消需再次触发。
set_remote_param
设置远程模式参数(速度、启动方式、屏蔽时间等)。
函数原型:
Result set_remote_param(SOCKETFD socketFd, int robotNum, int speed, bool start, int time, int startTime, int num = 10);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| speed | int | 远程模式默认速度 [1,100] |
| start | bool | 是否自动启动 |
| time | int | IO 重复触发屏蔽时间,单位 ms |
| startTime | int | 启动确认时间 |
| num | int | 远程 IO 数量,默认 10(22.07 版本无此参数;24.03 版本以上可修改) |
返回值: SUCCESS(0) 表示成功,负数表示失败。
使用示例:
// 设置远程参数:速度 50,不自动启动,屏蔽时间 500ms,启动确认 100ms,10 路远程 IO
Result result = set_remote_param(fd, 1, 50, false, 500, 100, 10);get_remote_param
获取远程参数设置数据。
函数原型:
Result get_remote_param(SOCKETFD socketFd, int robotNum, int& speed, bool& start, int& time, int& startTime, int& num);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| speed | int& | 输出参数,远程模式默认速度 |
| start | bool& | 输出参数,是否自动启动 |
| time | int& | 输出参数,IO 重复触发屏蔽时间 (ms) |
| startTime | int& | 输出参数,启动确认时间 |
| num | int& | 输出参数,远程 IO 数量(22.07 版本调用此接口 num 返回 -1) |
返回值: SUCCESS(0) 表示成功,负数表示失败。
set_remote_function
设置远程 IO 功能(通用控制信号 + 程序预约信号绑定)。
函数原型:
Result set_remote_function(SOCKETFD socketFd, int robotNum, RemoteControl general, std::vector<RemoteProgram> program, int num = 10);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| general | RemoteControl | 通用功能远程 IO 参数(启动/暂停/停止/清除报警等) |
| program | std::vector<RemoteProgram> | 远程控制程序参数,program.size() 必须与 num 相等 |
| num | int | 远程 IO 数量(24.03 版本必须与 set_remote_param 中的 num 一致) |
RemoteControl 结构体:
| 字段 | 类型 | 说明 |
|---|---|---|
| clearStashPort / clearStashValue | int | 清除断电保持数据端口及有效参数 (0/1) |
| faultResetPort / faultResetValue | int | 清除报警端口及有效参数 (0/1) |
| pausePort / pauseValue | int | 暂停端口及有效参数 (0/1) |
| startPort / startValue | int | 启动端口及有效参数 (0/1) |
| stopPort / stopValue | int | 停止端口及有效参数 (0/1) |
| program | vector<RemoteProgram> | 远程程序端口设置 |
RemoteProgram 结构体:
| 字段 | 类型 | 说明 |
|---|---|---|
| port | int | 远程程序端口绑定 |
| value | int | 使用远程 IO 功能时有效参数 (0/1);使用远程状态提示功能时有效参数 (0/1/2) |
使用示例:
RemoteControl general;
general.startPort = 1; general.startValue = 1; // DIN1-1 启动
general.stopPort = 2; general.stopValue = 1; // DIN1-2 停止
general.pausePort = 3; general.pauseValue = 1; // DIN1-3 暂停
general.faultResetPort = 4; general.faultResetValue = 1; // DIN1-4 清除报警
std::vector<RemoteProgram> program(10);
program[0].port = 5; program[0].value = 1; // DIN1-5 预约程序 1
Result result = set_remote_function(fd, 1, general, program, 10);get_remote_function
获取远程 IO 功能设置数据。
函数原型:
Result get_remote_function(SOCKETFD socketFd, int robotNum, int& num, int& time, RemoteControl& general, std::vector<RemoteProgram>& program);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| num | int& | 输出参数,远程 IO 数量(22.07 版本返回 -1) |
| time | int& | 输出参数,IO 重复触发屏蔽时间 (ms) |
| general | RemoteControl& | 输出参数,通用功能远程 IO 参数 |
| program | std::vector<RemoteProgram>& | 输出参数,远程控制程序参数 |
返回值: SUCCESS(0) 表示成功,负数表示失败。
set_remote_status_tips
设置远程状态提示功能(运行/暂停/停止等状态输出端口)。
函数原型:
Result set_remote_status_tips(SOCKETFD socketFd, int robotNum, int outagePort, int outageValue, std::vector<RemoteProgram> program);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| outagePort | int | 断电保持数据恢复端口 |
| outageValue | int | 断电保持数据恢复端口有效值 (0/1/2) |
| program | std::vector<RemoteProgram> | 远程状态提示参数(24.03 版本 size 必须与 set_remote_param 的 num 相等;22.07 版本必须等于 10) |
返回值: SUCCESS(0) 表示成功,负数表示失败。
get_remote_status_tips
获取远程状态提示功能数据。
函数原型:
Result get_remote_status_tips(SOCKETFD socketFd, int robotNum, int& num, int& outagePort, int& outageValue, std::vector<RemoteProgram>& program);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| num | int& | 输出参数,远程 IO 数量 |
| outagePort | int& | 输出参数,断电保持数据恢复端口 |
| outageValue | int& | 输出参数,断电保持数据恢复端口有效值 |
| program | std::vector<RemoteProgram>& | 输出参数,远程控制程序参数 |
返回值: SUCCESS(0) 表示成功,负数表示失败。
set_remote_program
设置 IO 远程程序选择(预约哪个作业文件、运行次数)。
函数原型:
Result set_remote_program(SOCKETFD socketFd, int robotNum, std::vector<RemoteProgramSetting> program);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| program | std::vector<RemoteProgramSetting> | 远程程序设置,22.07 版本固定大小为 10 |
RemoteProgramSetting 结构体:
| 字段 | 类型 | 说明 |
|---|---|---|
| job | std::string | 远程程序选择(作业文件名) |
| times | int | 远程程序运行次数 |
使用示例:
std::vector<RemoteProgramSetting> program(10);
program[0].job = "main.job"; // 预约主程序
program[0].times = 1; // 运行 1 次
Result result = set_remote_program(fd, 1, program);get_remote_program
获取 IO 远程程序设置数据。
函数原型:
Result get_remote_program(SOCKETFD socketFd, int robotNum, int& num, std::vector<RemoteProgramSetting>& program);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| num | int& | 输出参数,远程 IO 数量 |
| program | std::vector<RemoteProgramSetting>& | 输出参数,远程程序设置 |
返回值: SUCCESS(0) 表示成功,负数表示失败。
2.4 安全 IO
安全 IO 说明
安全 IO 用于紧急停止、安全光幕等安全功能的端口绑定与电平设置:
| 功能 | 说明 |
|---|---|
| 紧急停止 | 触发后机器人下电并切至伺服停止;解除后需先清错才可继续操作 |
| 安全光幕 | 触发后机器人暂停,再次按下启动按钮可继续运行 |
| 屏蔽紧急停止 | 打开后屏蔽时间内紧急停止信号被屏蔽 |
| 使能硬接线 | 使用使能硬接线示教盒时绑定 DIN 端口,上电使能由 IO 板输入信号控制 |
使能端口 1 为上电使能,使能端口 2 为下电使能;打开此功能后示教盒使能按钮失效。非使能硬接线示教盒请勿设置。
set_hard_enable_port
设置是否使能硬接及相关端口。
函数原型:
Result set_hard_enable_port(SOCKETFD socketFd, int enable, int port1, int port2);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| enable | int | 是否打开使能硬接 (0/1) |
| port1 | int | 使能硬接端口 1(上电使能) |
| port2 | int | 使能硬接端口 2(下电使能) |
返回值: SUCCESS(0) 表示成功,负数表示失败。
使用示例:
// 使能硬接线:端口 1 绑定 DIN1-5,端口 2 绑定 DIN1-6
Result result = set_hard_enable_port(fd, 1, 5, 6);get_hard_enable_port
获取使能硬接开关是否打开及相关绑定端口。
函数原型:
Result get_hard_enable_port(SOCKETFD socketFd, int& enable, int& port1, int& port2);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| enable | int& | 输出参数,是否打开使能硬接 |
| port1 | int& | 输出参数,使能硬接端口 1 |
| port2 | int& | 输出参数,使能硬接端口 2 |
返回值: SUCCESS(0) 表示成功,负数表示失败。
set_safe_IO_function
设置 IO 安全设置参数(紧急停止、安全光幕、屏蔽时间等)。
函数原型:
Result set_safe_IO_function(SOCKETFD socketFd, int robotNum, SafeIO safeIO);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| safeIO | SafeIO | IO 安全设置参数结构体 |
SafeIO 结构体:
| 字段 | 类型 | 说明 |
|---|---|---|
| quickStopPort1 / quickStopPort2 | int | 紧急停止端口 1/2 |
| quickStopValue1 / quickStopValue2 | int | 紧急停止参数 (0/1) |
| quickStopEnable | bool | 紧急停止使能 |
| quickStopShied1 / quickStopShied2 | bool | 屏蔽紧急停止 1/2 |
| quickStopTime | double | 快速停止时间,单位 ms,范围 [50,100] |
| quickStopShiedTime | int | 屏蔽紧急停止时间,单位 s |
| screenPort1 / screenPort2 | int | 安全光幕端口 1/2 |
| screenValue1 / screenValue2 | int | 安全光幕参数 (0/1) |
| screenEnable | bool | 安全光幕使能 |
使用示例:
SafeIO safe;
safe.quickStopPort1 = 15; safe.quickStopValue1 = 1; safe.quickStopEnable = true;
safe.quickStopTime = 100; // 快速停止时间 100ms
safe.screenPort1 = 7; safe.screenValue1 = 1; safe.screenEnable = true;
Result result = set_safe_IO_function(fd, 1, safe);get_safe_IO_function
获取 IO 安全设置参数。
函数原型:
Result get_safe_IO_function(SOCKETFD socketFd, int robotNum, SafeIO& safeIO);参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| socketFd | SOCKETFD | 连接句柄 |
| robotNum | int | 机器人编号 (1-4) |
| safeIO | SafeIO& | 输出参数,IO 安全设置参数 |
返回值: SUCCESS(0) 表示成功,负数表示失败。