跳到主要内容

伺服使能及状态查看

伺服状态指伺服驱动器是否准备好驱动电机实现机器人动作,通过NRC_SetServoReadyStatus(int status)函数的调用可以设置伺服状态,参数 status=0 表示伺服禁止,参数 status=1 表示伺服允许(伺服就绪)。伺服使能(伺服上电)通过调用函数 NRC_ServoEnable()实现。伺服使能在示教模式和运行模式下均能实现。

通过调用函数NRC_GetServoStatus()可以获取伺服状态其函数返回值表示伺服状态

  • retval=0 指伺服禁止,
  • retval=1 指伺服允许(就绪),
  • retval = 2 指伺服报警,
  • retval=3 指伺服运行,

系统伺服使能及状态查看的 demo 程序

#include <iostream>
#include "nrcAPI.h"
#include<stdio.h>
using namespace std;
void msgHook() {
NRC_Messsage tmp; //定义一个消息结构体对象,详见3.7节
NRC_GetMesssage(1, tmp); //将消息队列中最早的消息赋值给对象tmp
printf("msgHooklocalTime=%d:%d::%d,0x%x,0x%x,0x%x,text=%s,size=%d\n",tmp.localTime.minute,tmp.localTime.second,tmp.localTime.milliseconds,tmp.kind,tmp.code,tmp.robot,tmp.text.c_str(),NRC_GetMesssageSize()); NRC_Delayms(200);
}
int main()
{
SystemStartup();//系统启动,详见3.3节
RobotMsg();//获取机器人配置,详见3.4节
SetServoMap();//设置伺服映射关系,详见3.5节
SettingofRobotRelatedParameters();//机器人相关参数设置,详见3.6节
//////以上调用函数可见附录一/////
NRC_SetServoReadyStatus(1);//设置伺服允许
cout<< "设置伺服允许成功"<<endl;
int inexbot=NRC_GetServoStatus();
if(inexbot=0)cout<<"伺服禁止";
else if(inexbot=1)cout<<"伺服允许(就绪)";
else if(inexbot=2)cout<<"伺服报警";
else cout <<"伺服运行";
while(1)//保持程序继续运行
{
NRC_Delayms(1000);
}
}