Skip to content
🤖 AI 助手 / 自动化工具:先读 《AI 助手先读》 《Agent 开发指引》 《生成前信息采集清单》;机器可读入口 /llms.txt;技能包(SKILL)直链:SKILL.md

七、作业文件操作(Python) ​

本页对应 C++ 版。函数名与参数顺序与 C++ 完全一致(Python SDK 由 C++ 经 SWIG 生成),差异只在两处:

  1. 返回值形态:C++ 用引用参数回填数据;Python 的返回形态由 SWIG 绑定决定,逐接口实测,不按类型推断。
  2. 少数接口在 Python 中不可直接调用(绑定缺陷),页面内已逐个标注。

本页共 47 个接口,其中 47 个在 Python SDK 中存在。


功能概述 ​

7.1 作业文件管理 ​

job_get_all_jobfile_name ​

获取所有作业文件名。

python
def job_get_all_jobfile_name(socketFd, robotsFile):

返回值:⚠️ 该接口在 Python 中不可调用。C++ 原型的出参为std::vector<std::vector<std::string>>&,SWIG 未生成该嵌套容器的可用填充绑定,调用会抛 TypeError。请改用 C++ SDK 调用该接口。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotsFilestd::vector<std::vector<std::string>>&输出参数,二维数组,一维长度 4,对应 4 个机器人的作业文件列表

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_upload_by_directory ​

根据文件夹上传一整个文件夹的作业文件。

python
def job_upload_by_directory(socketFd, directoryPath):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
directoryPathconst std::string&目录的完整路径

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_upload_by_file ​

根据文件名上传一个作业文件。

python
def job_upload_by_file(socketFd, filePath):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
filePathconst std::string&文件的完整路径

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_sync_job_file ​

上传作业文件后同步刷新示教器文件列表。

python
def job_sync_job_file(socketFd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.job_sync_job_file(fd)
print(ret)

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_download_by_directory ​

下载所有作业文件到指定文件夹。

python
def job_download_by_directory(socketFd, directoryPath, isCover):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
directoryPathconst std::string&目录的完整路径
isCoverbool是否覆盖已存在的文件

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


log_download_by_quantity ​

下载指定数量的日志文件到指定文件夹。

python
def log_download_by_quantity(socketFd, counts, directoryPath):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
countsint文件数量
directoryPathconst std::string&目录的完整路径

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


backup_system ​

一键备份系统,保存至当前执行程序目录下。

python
def backup_system(socketFd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.backup_system(fd)
print(ret)

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_create / job_create_robot ​

新建作业文件。

job_create

python
def job_create(socketFd, jobName):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

job_create_robot

python
def job_create_robot(socketFd, robotNum, jobName):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
jobNameconst std::string&作业文件名,只允许字母开头,字母数字组合

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_delete / job_delete_robot ​

删除指定的作业文件。

job_delete

python
def job_delete(socketFd, jobName):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

job_delete_robot

python
def job_delete_robot(socketFd, robotNum, jobName):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
jobNameconst std::string&作业文件名

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_open / job_open_robot ​

打开指定的作业文件(打开后才能进行内容读取/编辑操作)。

job_open

python
def job_open(socketFd, jobName):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

job_open_robot

python
def job_open_robot(socketFd, robotNum, jobName):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
jobNameconst std::string&作业文件名

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


7.2 作业内容操作 ​

job_get_command_total_lines / job_get_command_total_lines_robot ​

获取当前打开作业文件的总行数。

job_get_command_total_lines

python
def job_get_command_total_lines(socketFd, totalLines):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.job_get_command_total_lines(fd, 0)
print(ret, val)      # 返回 list,可直接解包

job_get_command_total_lines_robot

python
def job_get_command_total_lines_robot(socketFd, robotNum, totalLines):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.job_get_command_total_lines_robot(fd, 1, 0)
print(ret, val)      # 返回 list,可直接解包

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
totalLinesint&输出参数,总行数

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_get_command_content_by_line / job_get_command_content_by_line_robot ​

获取指定行号的作业文件内容。

job_get_command_content_by_line

python
def job_get_command_content_by_line(socketFd, line, commandType, jobContent):

返回值:⚠️ 该接口在 Python 中不可调用。C++ 原型为字符串引用出参(std::string&),SWIG 生成的绑定要求按值传 str,调用后字符串内容不会回填,实际无法取到结果。请改用 C++ SDK 调用该接口。

job_get_command_content_by_line_robot

python
def job_get_command_content_by_line_robot(socketFd, robotNum, line, commandType, jobContent):

返回值:⚠️ 该接口在 Python 中不可调用。C++ 原型为字符串引用出参(std::string&),SWIG 生成的绑定要求按值传 str,调用后字符串内容不会回填,实际无法取到结果。请改用 C++ SDK 调用该接口。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
lineint行号
commandTypeint&输出参数,指令类型
jobContentstd::string&输出参数,该行指令内容

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_delete_command_by_line / job_delete_command_by_line_robot ​

删除指定行号的指令。

job_delete_command_by_line

python
def job_delete_command_by_line(socketFd, line):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

job_delete_command_by_line_robot

python
def job_delete_command_by_line_robot(socketFd, robotNum, line):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
lineint要删除的行号

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


7.3 作业运行控制 ​

job_run / job_run_robot ​

运行指定的作业文件。

job_run

python
def job_run(socketFd, jobName):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

job_run_robot

python
def job_run_robot(socketFd, robotNum, jobName):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
jobNameconst std::string&作业文件名

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_step / job_step_robot ​

单步运行指定的作业文件的某一行。

job_step

python
def job_step(socketFd, jobName, line):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

job_step_robot

python
def job_step_robot(socketFd, robotNum, jobName, line):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
jobNameconst std::string&作业文件名
lineint行号,范围 [1, 最大行号]

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_pause / job_pause_robot ​

暂停当前运行的作业文件。

job_pause

python
def job_pause(socketFd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.job_pause(fd)
print(ret)

job_pause_robot

python
def job_pause_robot(socketFd, robotNum):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.job_pause_robot(fd, 1)
print(ret)

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_continue / job_continue_robot ​

继续运行暂停的作业文件。

job_continue

python
def job_continue(socketFd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.job_continue(fd)
print(ret)

job_continue_robot

python
def job_continue_robot(socketFd, robotNum):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.job_continue_robot(fd, 1)
print(ret)

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_stop / job_stop_robot ​

停止作业文件(不会下电)。

job_stop

python
def job_stop(socketFd):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.job_stop(fd)
print(ret)

job_stop_robot

python
def job_stop_robot(socketFd, robotNum):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret = nrc.job_stop_robot(fd, 1)
print(ret)

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_run_times / job_run_times_robot ​

设置作业文件运行次数。

job_run_times

python
def job_run_times(socketFd, index):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

job_run_times_robot

python
def job_run_times_robot(socketFd, robotNum, index):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
indexint运行次数,0=无限次

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_break_point_run / job_break_point_run_robot ​

断点续跑指定的作业文件(从上次中断位置继续运行)。

job_break_point_run

python
def job_break_point_run(socketFd, jobName):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

job_break_point_run_robot

python
def job_break_point_run_robot(socketFd, robotNum, jobName):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
jobNameconst std::string&作业文件名

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_get_current_file / job_get_current_file_robot ​

获取当前打开的作业文件名称(std::string 版本)。

job_get_current_file

python
def job_get_current_file(socketFd, jobName):

返回值:⚠️ 该接口在 Python 中不可调用。C++ 原型为字符串引用出参(std::string&),SWIG 生成的绑定要求按值传 str,调用后字符串内容不会回填,实际无法取到结果。请改用 C++ SDK 调用该接口。

job_get_current_file_robot

python
def job_get_current_file_robot(socketFd, robotNum, jobName):

返回值:⚠️ 该接口在 Python 中不可调用。C++ 原型为字符串引用出参(std::string&),SWIG 生成的绑定要求按值传 str,调用后字符串内容不会回填,实际无法取到结果。请改用 C++ SDK 调用该接口。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
jobNamestd::string&输出参数,当前打开的作业文件名

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_get_current_file_csharp / job_get_current_file_csharp_robot ​

获取当前打开的作业文件名称(std::vector<char> 版本,供 C# 使用)。

job_get_current_file_csharp

python
def job_get_current_file_csharp(socketFd, jobName):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参对象原地填充——先创建出参对象传入,调用成功后从该对象读取。

job_get_current_file_csharp_robot

python
def job_get_current_file_csharp_robot(socketFd, robotNum, jobName):

返回值:int 结果码(0 成功,负数为错误码)。数据通过出参对象原地填充——先创建出参对象传入,调用成功后从该对象读取。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
jobNamestd::vector<char>&输出参数,当前打开的作业文件名

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_get_current_line / job_get_current_line_robot ​

获取当前打开的作业文件运行到的行数。

job_get_current_line

python
def job_get_current_line(socketFd, line):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.job_get_current_line(fd, 0)
print(ret, val)      # 返回 list,可直接解包

job_get_current_line_robot

python
def job_get_current_line_robot(socketFd, robotNum, line):

返回值:list,共 2 个元素,形如 [结果码, 数据...]。下标 0 是结果码,下标 1 是出参值。(实测为 list 而非 tuple,解包写法 ret, val = ... 同样可用。)

示例:

python
import nrc_interface as nrc

fd = nrc.connect_robot("192.168.1.13", "6001")
ret, val = nrc.job_get_current_line_robot(fd, 1, 0)
print(ret, val)      # 返回 list,可直接解包

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
lineint&输出参数,运行到的行数

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


7.4 点位操作 ​

job_insert_local_position / job_insert_local_position_robot ​

作业文件插入一个局部点位。

job_insert_local_position

python
def job_insert_local_position(socketFd, posData):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

job_insert_local_position_robot

python
def job_insert_local_position_robot(socketFd, robotNum, posData):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
posDataPositionData位置数据

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_set_local_position / job_set_local_position_robot ​

根据点位名修改当前作业文件局部点位。

job_set_local_position

python
def job_set_local_position(socketFd, posName, posInfo):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

job_set_local_position_robot

python
def job_set_local_position_robot(socketFd, robotNum, posName, posInfo):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
posNameconst std::string&需要修改的点位名
posInfostd::vector<double>点位数据,长度 14:[0]坐标系(0=关节,1=直角,2=工具,3=用户);[1]角度制(0)/弧度制(1);[2]形态;[3]工具手坐标序号;[4]用户坐标序号;[5][6]备用;[7-13]点位信息

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


7.5 运动指令插入 ​

7.6 延迟、IO、逻辑控制指令插入 ​

7.7 工艺指令插入 ​

视觉工艺指令 ​

接口指令说明
job_insert_vision_craft_startVISION_RUN开始视觉,参数 id 为工艺号
job_insert_vision_craft_get_posVISION_POS获取视觉位置,posName 为存放位置变量名(如 GP0001)
job_insert_vision_craft_trajectoryVISION_TARCE获取视觉轨迹位置(24.03 可用),参数 VisualTrajectoryPosition
job_insert_vision_craft_visual_triggerVISION_POS触发视觉,参数 id 为工艺号
job_insert_vision_craft_visual_endVISION_END视觉结束,参数 id 为工艺号

使用示例:

cpp
// 在第 5 行插入视觉开始指令(工艺号 1)
Result result = job_insert_vision_craft_start(fd, 5, 1);

传送带工艺指令 ​

接口指令说明
job_insert_conveyor_check_posCONVEYOR_CHECKPOS传送带工件检测开始
job_insert_conveyor_check_endCONVEYOR_CHECKEND传送带工件检测结束
job_insert_conveyor_onCONVEYOR_ON传送带跟踪开始(posTtype:0=手动传点位,1=默认工件点;vel 范围 [2,2000]mm/s;acc 范围 [1,100]%)
job_insert_conveyor_offCONVEYOR_OFF传送带跟踪结束
job_insert_conveyor_posCONVEYOR_POS获取传送带跟踪位置,posName 为全局点位名
job_insert_conveyor_clearCONVEYOR_POS清除传送带跟踪目标(removeType:0=全部目标,1=本次目标)
job_insert_conveyor_waitCONVEYOR_Wait传送带等料(24.03 可用),参数含超时时间/来料结果/来料位置

CONVEYOR_ON 函数原型:

cpp
Result job_insert_conveyor_on(SOCKETFD socketFd, int line, int id, int postype, std::vector<double> pos, int vel, int acc);

使用示例:

cpp
// 在第 8 行插入传送带跟踪开始(工艺号 1,使用工件点,速度 500mm/s)
std::vector<double> pos(14, 0);
Result result = job_insert_conveyor_on(fd, 8, 1, 1, pos, 500, 50);

相贯线与独立轴指令 ​

接口指令说明
job_insert_cilCIL相贯线指令(MoveCmd + 工艺号)
job_insert_axis_motion_position轴点动轴点到点运行控制(AXISPostion)
job_insert_axis_motion_velocity轴恒转速轴恒转速控制(AxisVelocity)
job_insert_axis_motion_torque轴恒转矩轴恒转矩控制(AxisTorque)
job_insert_axis_motion_stop轴停止轴运动停止,axisNum 为轴号
job_insert_axis_motion_cancel_independent_control取消独立控制取消独立轴控制,axisNum 为轴号
job_insert_axis_motion_speed_judge轴速度判断轴运动速度判断(Axisspeedjudge)
job_insert_axis_motion_position_stop主轴准停主轴准停指令,angle 为准停角度


7.8 多机协调指令插入 ​

job_insert_tasks / job_insert_tasks_rbobt ​

插入声明协调参数指令。

job_insert_tasks

python
def job_insert_tasks(socketFd, line, crafId, robotGroup):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

job_insert_tasks_rbobt

python
def job_insert_tasks_rbobt(socketFd, robotNum, line, crafId, robotGroup):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
lineint插入位置
crafIdint协调任务号,范围 1-999
robotGroupstd::vector<int>需要同步的机器人组,传入需要同步的机器人编号 1-4

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


job_insert_wait_sync_task / job_insert_wait_sync_task_rbobt ​

插入等待任务同步点指令。

job_insert_wait_sync_task

python
def job_insert_wait_sync_task(socketFd, line, crafId, waitSignal):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

job_insert_wait_sync_task_rbobt

python
def job_insert_wait_sync_task_rbobt(socketFd, robotNum, line, crafId, waitSignal):

返回值:int 结果码(0 成功,负数为错误码)。本接口无数据出参。

参数说明(与 C++ 一致):

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
lineint插入位置
crafIdint协调任务号,范围 1-999
waitSignalstd::string同步信号量

C++ 侧返回值描述:SUCCESS(0) 表示成功,负数表示失败。


7.9 断点与续跑 ​

断点是什么 ​

  • 作业运行过程中,控制器会记录「当前作业文件 + 当前行号 + 运行上下文」,用于中断后从原位置继续。
  • 断点属于控制器侧状态,不是上位机保存的;上位机断开连接、重启程序不会清除断点。
  • 是否允许续跑,取决于断点是否仍然「有效」(见下方「旧断点失效」)。

断点清除条件 ​

下表为现场确认口径,按触发类型分组。固件版本不同可能有增删,升级后请以实测为准。

一、正常与人工操作

条件说明
作业正常运行结束跑完即无断点
急停,且配置了 IO 复位复位动作会清断点
在示教器上导入程序覆盖作业内容
使用 startOver=true 从头启动JSON 协议重头运行见程序运行控制
回复位点 / 执行复位程序现场恢复流程的一部分

二、旧断点失效(断点还在,但判定为不可恢复)

出现任一情况,控制器不再允许从旧断点续跑:

  • 没有原运行上下文(控制器重启后上下文丢失);
  • 作业文件名不一致;
  • 断点行号小于 1;
  • 当前行所属作业与断点记录的作业不一致;
  • 断点保存模式与当前模式不同;
  • 调用程序或子程序被修改;
  • 工艺状态不允许恢复。

三、异常与失败

条件说明
作业打开失败、文件为空、语法错误、插补错误等异常退出运行未正常建立
断点续跑计算失败或恢复超时续跑请求本身失败

四、配置与模式变更

条件说明
修改机型、轴映射、DH、关节参数机器人对象重建,断点上下文失效
切换追加运行等特殊模式与作业运行上下文不兼容

五、接口主动触发

条件说明
自定义错误 NRC_TriggerErrorReport(控制器侧接口)会主动发送清断点命令,见控制器 · 作业文件-指令操作
带「保留断点」语义的错误上报接口(控制器侧)按版本提供,是否可用见本节「版本差异与待核」

续跑与从头启动 ​

需求做法说明
从中断位置继续job_break_point_run(jobName)需要运行模式,见 §7.3
从头重新跑job_run + JSON 协议 startOver=1C++ 接口无 startOver 参数,重头运行走 JSON 协议或先停止再运行
只跑一步job_step调试用,不产生可续跑断点

判断能否续跑

先确认两件事:作业文件没被改过(内容/子程序)、机器人配置没动过。这两条命中「旧断点失效」或「配置与模式变更」的任一条件,续跑都会失败,直接从头跑更快。

判断能否续跑

先确认两件事:作业文件没被改过(内容/子程序)、机器人配置没动过。这两条命中「旧断点失效」或「配置与模式变更」的任一条件,续跑都会失败,直接从头跑更快。


常见场景处置 ​

场景建议动作
客户现场断电后想续跑控制器重启会丢上下文,按「旧断点失效」判断;不行就从头跑并检查安全点位
示教点位改了,想接着跑改点位属于修改作业,断点失效,需从头运行
报错提示后作业停了,想续跑若用的是 NRC_TriggerErrorReport,断点已被清除;改用保留断点的上报方式(按版本)
换了机器人配置/换了机型断点必然失效,重新运行
续跑接口返回失败先用 job_get_current_file / job_get_current_line 看当前状态,再决定是否从头运行

相关接口 ​

接口用途前置
job_run / job_run_robot运行作业作业已上传
job_step单步运行模式
job_pause / job_continue暂停 / 继续作业运行中
job_stop停止—
job_run_times设置循环次数0=无限次
job_break_point_run断点续跑运行模式
job_get_current_file / job_get_current_line查当前作业与行号—

版本差异与待核 ​

  • 「保留断点的错误上报」接口(NRC_TriggerErrorReportKeepBreakpoint)在客户群中已被提及为新增能力,但当前仓库文档与头文件中尚未收录,使用前请向研发确认所在版本,不要按本节描述直接调用。
  • 断点清除条件清单来自现场核对,个别条目(如「切换追加运行」)与固件版本相关,升级后建议回归验证。
  • 断点是否跨控制器重启保留,各版本行为不一致,属待补项。