Skip to content

架构说明

libnrc_host 是基于 Socket API 通讯协议封装的 C++ 动态库,提供网络接口供上位机快速集成控制器功能。

系统架构

text
┌──────────────────────┐
│    上位机应用程序       │
│  (C++/C#/Python 通过    │
│   SDK 调用接口)        │
└──────────┬───────────┘
           │ TCP Socket (JSON 协议)

┌──────────────────────┐
│    纳博特控制器        │
│  Linux 实时系统        │
└──────────────────────┘

上位机通过 TCP Socket 连接控制器的指定端口,以 JSON 文本格式发送指令和接收响应。libnrc_host 封装了网络通信、JSON 编解码和接口调用,开发者无需关心底层通信细节。

SDK 组成

组件路径说明
libnrc_host.dll / .soSDK 根目录核心动态库,封装全部接口
include/cpp_interface/头文件目录C++ 接口声明(按模块拆分)
include/parameter/参数头文件目录数据结构与枚举定义
include/c_interface/C 接口目录跨语言 ABI 兼容封装

头文件模块

头文件模块
nrc_api.h主入口,聚合所有接口
nrc_interface.h连接管理、伺服控制、运动控制、工具手、坐标系、标定
nrc_io.h数字/模拟 IO、远程 IO、安全 IO
nrc_modbus.hModbus 主站(TCP/RTU)
nrc_track.h轨迹记录与回放
nrc_dual_arm.h双臂机器人
nrc_vfd_ctr.hVFD 主轴变频器
nrc_job_operate.h作业文件管理、运动/逻辑指令插入
nrc_queue_operate.h队列运动模式
nrc_craft_weld.h焊接工艺
nrc_craft_pallet.h码垛工艺
nrc_craft_vision.h视觉工艺
nrc_craft_laser_cutting.h激光切割工艺
nrc_craft_conveyor_belt_track.h传送带跟踪工艺
nrc_define.h宏定义、枚举、基础数据结构

端口体系

端口用途
6000控制/查询:上下电、模式切换、状态查询(通常示教器使用)
6001上位机 SDK 命令端口:运动和程序控制(C++/C#/Python SDK 使用)
7000伺服跟踪数据:servo_move、点位运动控制、状态回调
5000文件传输:作业文件上传/下载/备份

SDK 用户通常使用 6001 端口。 servo_move 等跟踪运动需要额外连接 7000 端口。

ABI 兼容性

C++ SDK 分为两个 ABI 版本,不能混用

编译器平台导入库
MSVC (Visual Studio 2019+)Windows x64nrc_host.lib
MinGW (GCC 8.3+)Windows x64libnrc_host.dll.a
GCC (8.3+)Linux x64 / ARM64libnrc_host.so

通信模型

libnrc_host 采用 JSON 文本协议进行请求/响应交互,支持两种通信模式:

模式说明典型场景
同步请求/响应上位机发送指令,阻塞等待控制器回复参数设置、状态查询、标定计算
异步回调控制器主动推送数据,通过注册的回调函数接收7000 端口伺服跟踪、状态变化通知

请求流程: 上位机构造 JSON 指令 → TCP 发送 → 控制器解析执行 → 返回 JSON 响应 → SDK 解析为返回值/输出参数。

回调机制: 调用 send_message / recv_message / set_receive_error_or_warnning_message_callback 等注册回调函数后,控制器事件到达时 SDK 在内部线程触发回调,开发者无需主动轮询。

多机器人支持

控制器支持 1~4 台机器人协同工作,SDK 提供两种调用方式:

方式接口说明
单机器人robot_xxx(...)(如 robot_movej默认操作 1 号机器人
多机器人robot_xxx_robot(fd, robotNum, ...)通过 robotNum 参数指定机器人编号(1-4)

多机器人并行需先调用 set_robots_parallel 开启并行模式;外部轴跟随主机器人编号管理。

工艺扩展架构

工艺类功能以独立头文件形式提供,通过工艺号(1-9)管理多套参数:

头文件工艺典型接口
nrc_craft_weld.h焊接焊接参数配置、送丝/退丝/送气、摆焊
nrc_craft_pallet.h码垛码垛参数设置、状态查询
nrc_craft_vision.h视觉视觉参数、标定、目标点计算
nrc_craft_laser_cutting.h激光切割全局/工艺/模拟量/IO 参数
nrc_craft_conveyor_belt_track.h传送带跟踪传送参数、编码器、PID 同步

工艺参数采用"设置/查询"成对接口,设置前需先指定工艺号,与示教器工艺配置保持数据一致。

数据流说明

端口数据方向内容典型接口
6001双向命令流:控制指令与响应(JSON)robot_movelset_servo_state
7000双向伺服数据流:点位跟踪、状态回调servo_moveservo_point_position_motion_control
5000双向文件流:作业文件上传/下载/备份file_upload 等文件接口

6001 为 SDK 主命令端口;涉及伺服跟踪(如外部点移动、点位运动控制)需同时连接 7000 端口。