Skip to main content
Skip table of contents

CDRFLEx.amoveb

기능

비동기 방식의 moveb모션으로 비동기 처리 외에는 moveb() 함수와 동일하게 동작하며 모션 종료를 기다리지 않고 모션 시작과 동시에 리턴하여 다음 라인을 실행한다. amoveb() 함수에 의한 모션이 종료되기 전에 발생하는 새로운 모션지령은 안전상의 이유로 오류를 발생시킨다. 따라서 amoveb() 함수와 이어지는 새로운 모션명령어 사이에는 mwait() 함수를 사용하여 amoveb()에 의한 모션이 종료된 것을 확인한 후 새로운 모션 명령어가 시작되도록 해야한다

인수

인수명자료형기본값설명

tTargetPos

struct MOVE_POSB

[MAX_MOVEB_POINT]

-

최대 25개까지의 경로 정보

nPosCount

unsigned char

-

유효 경로 정보 개수

fTargetVel

float[2]

-

선속도, 각속도

fTargetAcc

float[2]

-

선가속도, 각가속도

fTargetTime

float

0.f

도달 시간 [sec]

eMoveMode

enum.MOVE_MODE

MOVE_MODE_

ABSOLUTE

상수 및 열거형 정의 참조

eMoveReference

enum.MOVE_REFERENCE

MOVE_REFERENCE_BASE

상수 및 열거형 정의 참조

알아두기

  • fTargetTime 을 지정할 경우 fTargetVel, fTargetAcc 를 무시하고 fTargetTime 기준으로 처리됩니다.
  • eMoveMode MOVE_MODE_RELATIVE 인 경우 posb list의 각 pos는 앞 선 pos에 대한 상대좌표로 정의됩니다.
  • 선행모션과 후행모션에 대한 온라인 블렌딩은 지원하지 않습니다.

주의

  • tTargetPos 에서 blending radius 0인 경우, 사용자 입력 오류가 나타납니다.
  • 연속된 Line-Line segment가 같은 방향을 가질 경우 Line의 중복입력으로 사용자 입력 오류가 나타납니다.
  • 블렌딩 구간에서 조건에 따라 급격하게 방향전환이 발생하게 되는 경우 급가속을 방지하기 위해 사용자 입력오류가 나타납니다.
  • 선행모션과 후행모션에 대한 온라인 블렌딩은 지원하지 않습니다.

리턴

설명

0

오류

1

성공

예제

PY
// xb의 모든 경로를 따르는 모션 시작 후 3초 후에 D-Out
MOVE_POSB xb[4];
memset(xb, 0x00, sizeof(xb));
int segNum = 4;
float tvel = { 50, 50 };
float tacc = { 100, 100 };
xb[0]._iBlendType = 0;	// line
xb[0]._fBlendRad  = 50;
xb[0]._fTargetPos[0][0] = 559; 
xb[0]._fTargetPos[0][1] = 234.5; 
xb[0]._fTargetPos[0][2] = 651.5;
xb[0]._fTargetPos[0][3] = 0; 
xb[0]._fTargetPos[0][4] = 180;  
xb[0]._fTargetPos[0][5] = 0;				
xb[1]._iBlendType = 1;	// circle
xb[1]._fBlendRad  = 50;
xb[1]._fTargetPos[0][0] = 559;
xb[1]._fTargetPos[0][1] = 234.5;
xb[1]._fTargetPos[0][2] = 451.5;
xb[1]._fTargetPos[0][3] = 0;
xb[1]._fTargetPos[0][4] = 180;
xb[1]._fTargetPos[0][5] = 0;
xb[1]._fTargetPos[1][0] = 559;
xb[1]._fTargetPos[1][1] = 434.5;
xb[1]._fTargetPos[1][2] = 451.5;
xb[1]._fTargetPos[1][3] = 0;
xb[1]._fTargetPos[1][4] = 180;
xb[1]._fTargetPos[1][5] = 0;				
xb[2]._iBlendType = 0;	// line
xb[2]._fBlendRad = 50;
xb[2]._fTargetPos[0][0] = 559;
xb[2]._fTargetPos[0][1] = 434.5;
xb[2]._fTargetPos[0][2] = 251.5;
xb[2]._fTargetPos[0][3] = 0;
xb[2]._fTargetPos[0][4] = 180;
xb[2]._fTargetPos[0][5] = 0;
xb[3]._iBlendType = 0;	// line
xb[3]._fBlendRad  = 50;
xb[3]._fTargetPos[0][0] = 559;
xb[3]._fTargetPos[0][1] = 234.5;
xb[3]._fTargetPos[0][2] = 251.5;
xb[3]._fTargetPos[0][3] = 0;
xb[3]._fTargetPos[0][4] = 180;
xb[3]._fTargetPos[0][5] = 0;
drfl.amoveb(xb, segNum, tvel, tacc);
Sleep(3000);
drfl.set_digital_output(GPIO_CTRLBOX_DIGITAL_INDEX_1, 1);

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.