核心概念
编程模型
控制器二次开发采用事件驱动模型:
- 启动 →
NRC_StartController启动控制器 - 初始化 → 轮询
NRC_GetControlInitComplete等待就绪 - 配置 → 设置操作模式、伺服状态、坐标系等
- 主循环 → 执行作业文件或队列运动,处理回调
- 清理 → 停止并释放资源
操作模式
| 模式 | 常量 | 说明 |
|---|---|---|
| 示教 | 0 | 人工操作单个机器人,安全优先 |
| 远程 | 1 | 上位机接管控制权 |
| 运行 | 2 | 自动执行作业文件,支持多机并行 |
运动方式
| 方式 | 说明 | 适用场景 |
|---|---|---|
| 作业文件 | 预编程序列,支持循环和逻辑 | 固定任务 |
| 队列模式(无文件) | 直接下发目标点 | 上位机实时控制 |
| 追加模式 | 边运动边追加新指令 | 视觉引导 |
坐标系
| 坐标类型 | coord 参数 |
|---|---|
| 关节坐标 | 0 |
| 直角坐标 | 1 |
| 工具坐标 | 2 |
| 用户坐标 | 3 |
伺服状态
- 停止(0) — 未使能
- 就绪(1) — 等待上电
- 报警(2) — 错误状态,需要清错
- 运行(3) — 已上电,可运动
系统启动流程
控制器启动后按以下流程完成初始化:
- 启动 →
NRC_StartController启动控制器核心 - 等待就绪 → 轮询
NRC_GetControlInitComplete直到返回初始化完成 - 系统配置 → 设置操作模式(示教/远程/运行)、伺服状态、坐标系
- 工艺配置 → 选择工艺号(craftID 1-9)、设置工艺参数
- 运行 → 执行作业文件或队列运动,进入主循环
- 停止 → 停止运动、下电、释放资源
初始化未完成前不应下发运动指令,否则可能返回错误或导致不可预期行为。
指令系统
| 指令类型 | 说明 | 示例 |
|---|---|---|
| 运动指令 | 控制机器人运动 | MoveJ、MoveL、MoveC、样条曲线、直线横摆、FLYBY |
| 逻辑指令 | 程序流程控制 | IF、WHILE、UNTIL、JUMP、LABEL |
| 输入输出指令 | 控制 IO 信号 | IO_OUT、延时 TIMER |
| 运算指令 | 数据计算与变量操作 | 数学运算、字符串、位置变量 |
位置控制方式
| 方式 | 说明 |
|---|---|
| 点到点控制(PTP) | 关节空间快速定位,路径不固定(MoveJ) |
| 连续轨迹控制(CP) | 笛卡尔空间直线/圆弧/样条,路径精确(MoveL/MoveC) |
坐标系与构型算法
| 坐标系统 | 说明 |
|---|---|
| 关节坐标系 | 各关节电机的角度位置 |
| 机器人坐标系 | 末端相对机器人底座的位置(直角坐标) |
| 工具坐标系 | 末端安装工具后的 TCP 位置 |
| 用户坐标系 | 工作台上自定义的局部坐标系 |
控制器内置 20 余种构型算法(6 轴串联、SCARA、并联、直角坐标、连杆结构等),每种构型对应独立的 DH 参数与正逆解算法。
多机模式
| 模式 | 说明 |
|---|---|
| 单机模式 | 默认模式,控制 1 号机器人 |
| 并行模式 | 多台机器人同步运行,通过 set_robots_parallel 开启 |
| 双机协作 | 两台机器人启停完全同步,用于协同作业场景 |
事件回调
控制器二次开发采用事件驱动模型,通过回调函数响应异步事件:
| 回调 | 触发时机 |
|---|---|
| 指令完成回调 | 一条 move 指令执行完成 |
| 消息回调 | 收到控制器推送的消息 |
| 错误/警告回调 | 控制器上报错误或警告信息 |
| 周期回调 | 周期性调用,用于实时数据处理 |
回调函数内不应执行阻塞或耗时操作,耗时任务应放入独立线程。