Skip to content

인터페이스 소개

다음 인터페이스는 모두 컨트롤러 SDK의 헤더 파일에서 찾을 수 있습니다

cpp
/**
 * @brief 작업 파일 사용자 정의 명령어 콜백 함수 설정
 * @param cb 콜백 함수 포인터, 타입은 std::function<bool(int, const std::string&, const std::string&)>
 * @param (*fun)(int,std::string,std::string) 함수 포인터, 즉 사용자 정의 명령어가 호출할 함수
 * @note 콜백 함수 포인터의 매개변수는 각각 해당 사용자 정의 명령어의 번호, 해당 사용자 정의 명령어의 문자열 매개변수, 해당 사용자 정의 명령어가 호출한 위치 이름 (호출되지 않은 경우 본 매개변수는 비어있음)
 */
int NRC_SetJobFileCustomInstructionCB(bool (*fun)(int,const std::string &,const std::string &));
/**
 * @brief 사용자 정의 작업 파일 명령어 호출을 위한 MOVJ 명령어, 직접 호출 불가
 * @param robotNum 로봇 번호[1-4]
 * @param pos 로봇 운동 목표 위치, 자세한 내용은 NRC_Position 참조
 * @param vel 로봇의 실행 속도, 로봇 최대 속도의 백분율, 매개변수 범위: 0 < vel <= 100
 * @param acc 로봇 실행 가속도, 로봇 각 관절 최대 가속도의 백분율, 매개변수 범위: 0 < vel <= 100
 * @param dec 로봇 실행 감속도, 로봇 각 관절 최대 감속도의 백분율, 매개변수 범위: 0 < vel <= 100
 * @param pl 부드러움 정도, 다음 이동 명령어와 부드럽게 전환됨, 값이 클수록 더 부드럽지만 궤적 편차도 커짐, 매개변수 범위: 0 <= pl <= 5
 * @param moveToNextLine 줄 건너뛰기 여부, 마지막 명령어에서만 moveToNextLine을 true로 설정하면 됨
 */
void NRC_Jobrun_MoveDirect(int robotNum, const NRC_Position & pos, double vel,  double acc, double dec, int pl, bool moveToNextLine = false);


/**
 * @brief 사용자 정의 작업 파일 명령어 호출을 위한 MOVL 명령어, 직접 호출 불가
 * @param robotNum 로봇 번호[1-4]
 * @param pos 로봇 운동 목표 위치, 자세한 내용은 NRC_Position 참조
 * @param vel 로봇의 실행 속도, 로봇 엔드 이펙터 위치의 절대 실행 속도, 단위는 mm/s, 매개변수 범위: vel > 1
 * @param acc 로봇 실행 가속도, 로봇 각 관절 최대 가속도의 백분율, 매개변수 범위: 0 < vel <= 100
 * @param dec 로봇 실행 감속도, 로봇 각 관절 최대 감속도의 백분율, 매개변수 범위: 0 < vel <= 100
 * @param pl 부드러움 정도, 다음 이동 명령어와 부드럽게 전환됨, 값이 클수록 더 부드럽지만 궤적 편차도 커짐, 매개변수 범위: 0 <= pl <= 5
 * @param moveToNextLine 줄 건너뛰기 여부, 마지막 명령어에서만 moveToNextLine을 true로 설정하면 됨
 */
void NRC_Jobrun_MoveLinear(int robotNum, const NRC_Position & pos, double vel, double acc, double dec, int pl, bool moveToNextLine = false);


/**
 * @brief 사용자 정의 작업 파일 명령어 호출을 위한 MOVC 명령어, 직접 호출 불가
 * @param robotNum 로봇 번호[1-4]
 * @param mid_pos,end_pos 로봇 운동 목표 위치, 자세한 내용은 NRC_Position 참조
 * @param vel 로봇의 실행 속도, 로봇 엔드 이펙터 위치의 절대 실행 속도, 단위는 mm/s, 매개변수 범위: vel > 1
 * @param acc 로봇 실행 가속도, 로봇 각 관절 최대 가속도의 백분율, 매개변수 범위: 0 < vel <= 100
 * @param dec 로봇 실행 감속도, 로봇 각 관절 최대 감속도의 백분율, 매개변수 범위: 0 < vel <= 100
 * @param pl 부드러움 정도, 다음 이동 명령어와 부드럽게 전환됨, 값이 클수록 더 부드럽지만 궤적 편차도 커짐, 매개변수 범위: 0 <= pl <= 5
 * @param moveToNextLine 줄 건너뛰기 여부, 마지막 명령어에서만 moveToNextLine을 true로 설정하면 됨
 * @note 주의, MOVC는 첫 번째 명령어로 실행될 수 없으며, 처음 호출할 때 앞에 MOVJ 또는 MOVL 명령어가 반드시 있어야 합니다
 */
void NRC_Jobrun_MoveC(int robotNum, const NRC_Position& mid_pos,const NRC_Position& end_pos, double vel, double acc, double dec, int pl, bool moveToNextLine = false);


/**
 * @brief 사용자 정의 작업 파일 명령어 호출을 위한 MOVS 명령어, 직접 호출 불가
 * @param robotNum 로봇 번호[1-4]
 * @param pos 로봇 운동 목표 위치 컨테이너, 크기는 4 이상이어야 함 (즉 pos.size() >= 4), 위치점 설정 자세한 내용은 NRC_Position 참조
 * @param vel 로봇의 실행 속도, 로봇 엔드 이펙터 위치의 절대 실행 속도, 단위는 mm/s, 매개변수 범위: vel > 1
 * @param acc 로봇 실행 가속도, 로봇 각 관절 최대 가속도의 백분율, 매개변수 범위: 0 < vel <= 100
 * @param dec 로봇 실행 감속도, 로봇 각 관절 최대 감속도의 백분율, 매개변수 범위: 0 < vel <= 100
 * @param pl 부드러움 정도, 다음 이동 명령어와 부드럽게 전환됨, 값이 클수록 더 부드럽지만 궤적 편차도 커짐, 매개변수 범위: 0 <= pl <= 5
 * @param moveToNextLine 줄 건너뛰기 여부, 마지막 명령어에서만 moveToNextLine을 true로 설정하면 됨
 * @note 주의, MOVS는 첫 번째 명령어로 실행될 수 없으며, 처음 호출할 때 앞에 MOVJ 또는 MOVL 명령어가 반드시 있어야 합니다
 */
void NRC_Jobrun_MoveS(int robotNum, int pointNum, const std::vector< NRC_Position>& pos, double vel, double acc, double dec, int pl, bool moveToNextLine = false);


/**
 * @brief 사용자 정의 작업 파일 명령어 호출을 위한 IMOV 명령어, 직접 호출 불가
 * @param robotNum 로봇 번호[1-4]
 * @param pos 로봇 운동 목표 위치 컨테이너, 크기는 4 이상이어야 함 (즉 pos.size() >= 4), 위치점 설정 자세한 내용은 NRC_Position 참조
 * @param vel 로봇의 실행 속도, 로봇 엔드 이펙터 위치의 절대 실행 속도, 단위는 mm/s, 매개변수 범위: vel > 1
 * @param acc 로봇 실행 가속도, 로봇 각 관절 최대 가속도의 백분율, 매개변수 범위: 0 < vel <= 100
 * @param dec 로봇 실행 감속도, 로봇 각 관절 최대 감속도의 백분율, 매개변수 범위: 0 < vel <= 100
 * @param pl 부드러움 정도, 다음 이동 명령어와 부드럽게 전환됨, 값이 클수록 더 부드럽지만 궤적 편차도 커짐, 매개변수 범위: 0 <= pl <= 5
 * @param moveToNextLine 줄 건너뛰기 여부, 마지막 명령어에서만 moveToNextLine을 true로 설정하면 됨
 * @param tm 사전 실행 시간, 범위: [0,999999], 생략 가능, 기본값은 0
 * @note 주의, IMOV는 첫 번째 명령어로 실행될 수 없으며, 그 앞에 운동 관련 명령어가 반드시 있어야 합니다
 */
int NRC_Jobrun_IMOV(int robotNum, const NRC_Position& offset, double vel, double acc, double dec, int pl, int tm = 0, bool moveToNextLine = false);


/**
 * @brief 사용자 정의 작업 파일 명령어 호출을 위한 MOVJEXT 명령어, 직접 호출 불가
 * @param robotNum 로봇 번호[1-4]
 * @param pos 로봇 운동 목표 위치, 자세한 내용은 NRC_Position 참조
 * @param syncPos 로봇 운동 목표 위치, 자세한 내용은 NRC_SyncPosition 참조
 * @param vel 로봇의 실행 속도, 로봇 최대 속도의 백분율, 매개변수 범위: 0 < vel <= 100
 * @param acc 로봇 실행 가속도, 로봇 각 관절 최대 가속도의 백분율, 매개변수 범위: 0 < vel <= 100
 * @param dec 로봇 실행 감속도, 로봇 각 관절 최대 감속도의 백분율, 매개변수 범위: 0 < vel <= 100
 * @param pl 부드러움 정도, 다음 이동 명령어와 부드럽게 전환됨, 값이 클수록 더 부드럽지만 궤적 편차도 커짐, 매개변수 범위: 0 <= pl <= 5
 * @param moveToNextLine 줄 건너뛰기 여부, 마지막 명령어에서만 moveToNextLine을 true로 설정하면 됨
 */
void NRC_Jobrun_MoveDirectSync(int robotNum, const NRC_Position & pos, const NRC_SyncPosition & syncPos, double vel, double acc, double dec, int pl, bool moveToNextLine = false);


/**
 * @brief 사용자 정의 작업 파일 명령어 호출을 위한 MOVLEXT 명령어, 직접 호출 불가
 * @param robotNum 로봇 번호[1-4]
 * @param pos 로봇 운동 목표 위치, 자세한 내용은 NRC_Position 참조
 * @param syncPos 로봇 운동 목표 위치, 자세한 내용은 NRC_SyncPosition 참조
 * @param vel 로봇의 실행 속도, 로봇 엔드 이펙터 위치의 절대 실행 속도, 단위는 mm/s, 매개변수 범위: vel > 1
 * @param acc 로봇 실행 가속도, 로봇 각 관절 최대 가속도의 백분율, 매개변수 범위: 0 < vel <= 100
 * @param dec 로봇 실행 감속도, 로봇 각 관절 최대 감속도의 백분율, 매개변수 범위: 0 < vel <= 100
 * @param pl 부드러움 정도, 다음 이동 명령어와 부드럽게 전환됨, 값이 클수록 더 부드럽지만 궤적 편차도 커짐, 매개변수 범위: 0 <= pl <= 5
 * @param moveToNextLine 줄 건너뛰기 여부, 마지막 명령어에서만 moveToNextLine을 true로 설정하면 됨
 * @param sync 협동 여부
 */
void NRC_Jobrun_MoveLinearSync(int robotNum, const NRC_Position & pos, const NRC_SyncPosition & syncPos, double vel, double acc, double dec, int pl, int sync, bool moveToNextLine = false);
/**
 * @brief 비운동 명령어 차단, 현재 실행이 완료되지 않은 로봇 운동 명령어가 있을 때 본 인터페이스에서 차단되어 프로그램이 아래로 실행되는 것을 방지합니다;
 * @brief 중단점에서 재개할 때, 프로그램은 정지 시 프로그램이 머물렀던 본 인터페이스에서 계속 아래로 실행됩니다
 */
void NRC_JobRun_BlockNotMoveInstruction();