Skip to content

控制器二次开发

简介

控制器二次开发是基于控制器所提供的接口来进行的二次开发。程序运行在控制器内部,适合用来开发专用工艺。

文档结构

控制器
├── 快速开始                    # 环境搭建、项目构建、程序部署
├── 二次开发API(机器人基本参数设置)   # 系统/伺服/坐标系/IO/变量等核心接口
├── 二次开发API(作业文件,指令操作)   # 作业文件管理、指令插入、队列运行
├── 二次开发API(码垛工艺)            # 码垛工艺参数设置与控制
└── 示例
    ├── 自定义指令
    │   ├── 控制器实现                  # 控制器侧自定义指令开发
    │   └── 示教器实现                  # 示教器侧自定义 UI 开发
    └── 自定义指令demo.md              # 示例下载说明

函数索引

系统与初始化

函数说明
NRC_StartController启动控制器
NRC_GetControlInitComplete等待初始化完成
NRC_SetOperationMode设置操作模式(示教 0 / 远程 1 / 运行 2)
NRC_RebootController重启控制器
NRC_RestoreFactorySettings恢复出厂设置
NRC_ModifyControllerIP修改控制器 IP
NRC_ShieldedTeachingPendant屏蔽示教器连接检测(需在启动前调用)
NRC_GetRobotSum获取机器人数量
NRC_SetRobotMode设置多机模式
NRC_Delayms延时(毫秒)
NRC_LogInfo打印日志
NRC_GetNexMotionLibVersion获取库版本
NRC_GetSyncVersion获取同步版本号

伺服控制

函数说明
NRC_PowerOn / NRC_PowerOff伺服上/下使能
NRC_ServoEnable / NRC_ServoDisable示教模式上/下使能(需按 deadman)
NRC_SetServoReadyStatus切换伺服准备状态
NRC_GetServoStatus获取伺服状态(0-禁止 1-就绪 2-报警 3-允许)
NRC_GetPowerOffSaveSignal获取通电状态
NRC_ClearServoError / NRC_ClearAllError清除伺服/全部错误

运动控制

函数说明
NRC_RobotMoveJoint机器人点到点运动
NRC_RobotMoveJointSync机器人外部轴点对点运动
NRC_RobotMoveLineSync机器人直线运动(本体+外部轴)
NRC_JogMove / NRC_JogMoveStop / NRC_JogMoveStopAll点动控制
NRC_StartResetPoint回复位点
NRC_SetTargetVelocity设置目标速度(PV 模式)
NRC_PosReachable判断点位是否可到达

速度控制

函数说明
NRC_SetTeachRunSpeedPer / NRC_GetTeachRunSpeedPer示教速度百分比
NRC_SetAutoRunSpeedPer / NRC_GetAutoRunSpeedPer自动速度百分比
NRC_SetTeachMaxStepSpeed / NRC_GetTeachMaxStepSpeed示教最大单步速度
NRC_GetAngularVel获取关节角速度(rad/s)
NRC_GetLinerVel获取线速度(mm/s)
NRC_GetAxisVelSync获取外部轴速度

点动配置

函数说明
NRC_SetJogJointSpeedConfig / NRC_GetJogJointSpeedConfig点动关节速度
NRC_SetJogRectangularSpeedConfig / NRC_GetJogRectangularSpeedConfig点动直角速度
NRC_SetJogSensitivitySpeedConfig点动灵敏度
NRC_SetJogMoveCalculateNum点动插补点位个数

坐标系与标定

函数说明
NRC_SetCurrentCoord / NRC_GetCurrentCoord切换/获取当前坐标系
NRC_PositionACStoMCS / NRC_PositionMCStoACS关节↔直角坐标转换
NRC_TcpCalculateTCP 固定距离偏移计算

工具手:

函数说明
NRC_SetToolCoordParm / NRC_GetToolCoordParm设置/获取工具手参数
NRC_CalibrationToolCoord_7Pos7点/6点标定
NRC_CalibrationToolCoord_2Pos_SetPos / _Cacl / _Save2点标定(三步)
NRC_SwitchToolCoord / NRC_GetCurrentToolCoord切换/获取当前工具手

用户坐标:

函数说明
NRC_SetUserCoordParm / NRC_GetUserCoordParm设置/获取用户坐标参数
NRC_CalibrationUserCoord用户坐标标定(3点法)
NRC_SwitchUserCoord / NRC_GetCurrentUserCoord切换/获取当前用户坐标

位置与零点

函数说明
NRC_GetCurrentPos / NRC_Rbt_GetCurrentPos获取当前位置
NRC_GetOtherToolPos获取其他工具坐标系下的位置
NRC_GetEncoderPosition获取编码器位置
NRC_SetCurrentPosToZeroPos / NRC_Rbt_SetCurrentPosToZeroPos设置零点/清除多圈值
NRC_Rbt_SetSingleCircleValue / NRC_Rbt_GetSingleCircleValue设置/获取单圈值

外部轴

函数说明
NRC_SetSyncJointNum设置外部轴数目
NRC_SetSyncJointPara / NRC_GetSyncJointPara设置/获取外部轴参数
NRC_SetSyncGroupCarbinarion / NRC_CalSyncCalibrationResult外部轴标定
NRC_SetCurrentSyncPosToZeroPos外部轴零点设置
NRC_SingleSyncAxisMoveJConstVel_For_CustomInstructionCB外部轴恒速运动
NRC_GetCurrentSyncPos / NRC_Rbt_GetCurrentSyncPos获取外部轴位置

力矩与动力学

函数说明
NRC_SetTargetTorque / NRC_GetActualTorque设置/获取力矩
NRC_GetActualCurrent / NRC_GetMaxCurrent电流控制
NRC_GetRatedTorque / NRC_GetTorq额定力矩
NRC_SetIdentityParam设置动力学辨识参数
NRC_RunSafeCheckProgram / NRC_RunIdentifyProgram安全检测/动力学辨识
NRC_SetCollisionParam / NRC_SetCollisionSwitch碰撞检测

作业文件操作

函数说明
NRC_CreateJobfile / NRC_OpenJobfile / NRC_DeleteJobfile作业文件 CRUD
NRC_JudgeJobIsExist判断作业文件是否存在
NRC_GetJobfileLineSum获取作业文件总行数
NRC_StartRunJobfile / NRC_PauseRunJobfile / NRC_StopRunJobfile运行/暂停/停止
NRC_StepRunJobfile单步运行
NRC_StopRunJobfileNotPoweroff停止(不下使能)

作业文件插入指令:

函数说明
NRC_JobfileInsertMOVJ / MOVL / MOVS / MOVC / IMOV插入运动指令
NRC_JobfileInsertMOVJEXT / MOVLEXT / MOVCEXT插入带外部轴的运动指令
NRC_JobfileInsertDOUT / WAIT / TIMER / UNTIL插入 IO/等待指令
NRC_JobfileInsertIF / VarIF / ELSE / ENDIF插入条件判断
NRC_JobfileInsertWHILE / VarWHILE / ENDWHILE插入循环
NRC_JobfileInsertSETVAR / OPCmd插入变量操作
NRC_JobfileInsertPALON / PALOFF / PALGRIPPER ...插入码垛指令
NRC_JobfileInsertARCON / ARCOFF插入焊接指令
NRC_JobfileInsertCustomInstruction插入自定义指令
NRC_JobfileInsertPOSCALALL插入点位全改指令

无文件运行队列

函数说明
NRC_CreateNoFlieRunqueue创建无文件队列
NRC_InsertNoFlieRunqueue插入一组指令
NRC_StartRunNoFlieRunqueue / Pause / Stop运行/暂停/停止
NRC_RunqueueInsertMOVJ / MOVL / ...插入各类指令(同作业文件)

追加运行模式

函数说明
NRC_OpenInstrAppendRunMode / NRC_CloseInstrAppendRunMode开启/关闭追加模式
NRC_AppendRunInstr追加运行指令
NRC_PauseInstrAppendRun / NRC_RestartInstrAppendRun暂停/重启
NRC_StopInstrAppendRun / NRC_StopInstrAppendRunNotPoweroff停止(是否下使能)
NRC_GetIsInstrAppendRunMode是否处于追加模式
NRC_GetRestAppendInstrNum剩余指令数目

局部后台程序

函数说明
NRC_CreatePthreadJobfile / NRC_OpenPthreadJobfile新建/打开后台程序
NRC_DeletePthreadJobfile / NRC_JudgePthreadJobIsExist删除/判断
NRC_JobfileInsertPthreadStart / PthreadEnd插入启动/结束指令

回调函数

函数说明
NRC_SetCompleteOneInstrCallBack设置指令完成回调
NRC_SetJobFileCustomInstructionCB设置自定义指令回调
NRC_SetMsgHappenCallback设置消息回调
NRC_SetSocketCustomProtocalCB设置 TCP 协议回调
NRC_SetFaultResetCB设置清错按键回调
NRC_robotRunCycle_Callback设置通讯周期回调(1ms)

IO 控制

函数说明
NRC_DigOut / NRC_DigOutByBoard数字输出
NRC_ReadDigOut / NRC_ReadDigOutByBoard读取数字输出
NRC_ReadDigIn / NRC_ReadDigInByBoard读取数字输入
NRC_AnaOut / NRC_ReadAnaOut / NRC_ReadAnaIn模拟 IO

通信接口

函数说明
NRC_SetCANBaudRate / NRC_SendCANDataCAN 通信
NRC_SetCommunicationParam / NRC_SetCommunicationStatusTCP 通信参数
NRC_SetTcpMessageCallbackTCP 消息回调
NRC_CommSendMessage发送 TCP 消息
NRC_GetModbusSlaveConnectStatus / NRC_GetModbusMasterConnectStatusModbus 状态
NRC_SetSocketCustomProtocalCB / NRC_SendSocketCustomProtocal自定义 Socket 协议

消息与错误

函数说明
NRC_SetMsgHappenCallback消息发生回调
NRC_FirstMessagePop / NRC_LastMessagePop弹出首/尾消息
NRC_GetMessage / NRC_GetMessageSize获取消息
NRC_ClearMessage清除消息队列
NRC_TriggerErrorReport主动触发报错

变量管理

函数说明
NRC_SetBoolVar / NRC_ReadBoolVarBOOL 变量
NRC_SetIntVar / NRC_ReadIntVarINT 变量
NRC_SetDoubleVar / NRC_ReadDoubleVarDOUBLE 变量
NRC_SetGlobalPositionVariable / NRC_GetGlobalPositionVariable全局位置变量
NRC_SetGlobalPositionVariableNote / NRC_GetGlobalPositionVariableNote全局位置变量注释
NRC_GetCurrentTime获取当前时间

码垛工艺

函数说明
NRC_Pallet_SetUsePalletType / NRC_Pallet_GetUsePalletType简易/完整码垛
NRC_Pallet_SetGripperParm / NRC_Pallet_GetGripperParm抓手参数
NRC_Pallet_SetSimplePosParm / NRC_Pallet_GetSimplePosParm位置参数
NRC_Pallet_SetSimpleNumParm / NRC_Pallet_GetSimpleNumParm数量参数
NRC_Pallet_ClearCurrentStatus清除码垛状态
NRC_Pallet_SetPalletedWpNum / NRC_Pallet_GetPalletedWpNum已码个数

运动状态查询

函数说明
NRC_GetProgramRunStatus程序运行状态(0-停止 1-暂停 2-运行)
NRC_GetRobotRunStatus机器人运动状态(0-停止 1-运动)
NRC_GetTeachBoxConnectStatus示教盒连接状态
NRC_GetCurrentOrderRuns程序执行方向(顺序/倒序)
NRC_GetCycleIndex / NRC_GetCycleCount / NRC_GetCycleTimeSec循环次数/时间
NRC_GetDistanceToOldTrack距原轨迹停止点距离
NRC_GetRunqueueCurrentRunLine / NRC_GetJobfileCurrentRunLine当前运行行号

运动辅助

函数说明
NRC_SetTargetPosition设置机器人目标位置
NRC_GetPlanningPosition获取规划队列第一个点位
NRC_PV_SetTargetVelocity / NRC_PV_SetTargetAccAndDecPV 模式速度/加速度
NRC_SetInterpolationMethod设置插补方式(S型/梯形)
NRC_SetAbsolutePosResolution绝对位置分辨率

机器人参数

函数说明
NRC_SetRobotTypeConfig / NRC_GetRobotTypeConfig机器人类型
NRC_SetRobotDHConfig / NRC_GetRobotDHConfigDH 参数
NRC_SetRobotJointConfig关节参数
NRC_SetRobotDecareConfig / NRC_GetRobotDecareConfig笛卡尔参数
NRC_CalcConfiguration计算机器人形态
NRC_GetRobotAxisSum获取机器人轴数
NRC_GetSyncAxisSum获取外部轴轴数
NRC_SetRobotRangeLimit / NRC_GetRobotRangeLimit范围限制

学习前提

  • C++ 语言基础
  • Linux 系统(Ubuntu)基本使用
  • 工业机器人基础知识
  • Eclipse / VS Code / Vim 等编辑器使用