11.1.17. cmlPmCfgSetCtrlMode¶
SYNOPSYS¶
VT_I4 cmlPmCfgSetCtrlMode ([in] VT_I4 BoardID, [in] VT_I4 NodeId, [in] VT_I4 Channel, [in] VT_I4 CtrlMode )
DESCRIPTION¶
cmlPmCfgSetCtrlMode() 함수는 각 축의 제어모드를 결정합니다. 여기서 제어모드라는 것은 엔코더 피드백 값을 이송 명령에서 어떻게 활용하느냐 하는 것입니다. 이송 명령이 내려졌을 때 목표 좌표를 커맨드(Command) 위치를 기준으로 적용할 것인지, 피드백(Feedback) 위치를 기준으로 적용할 것인지를 결정하는 함수입니다.
이 함수의 사용과 호출에 있어, 제공된 ㈜커미조아의 함수 헤더 Visual Basic 에서는 함수의 첨두어 cml 가 붙지 않습니다.
PARAMETER¶
▶ BoardID : 사용자가 설정한 디바이스(보드) ID.
▶ NodeId : 사용자가 제어하고자 하는 노드 번호.
▶ Channel : 축 번호. 통합 축으로 관리되는 축 번호를 의미하며, 상수 값으로 0 (Zero Based) 이상, 최대 통합 축 개수 - 1 이하의 값을 축 번호로 설정할 수 있습니다.
▶ CtrlMode : cmlPmCfgSetCtrlMode() 함수의 인자이며, 제어 모드를 설정합니다. 이 값의 의미는 다음과 같습니다.
▶ CtrlMode : cmlPmCfgGetCtrlMode() 함수의 인자이며, 제어모드를 반환합니다. 반환값의 의미는 다음과 같습니다.
Value |
Meaning |
---|---|
0(cmlCTRL_OPEN) [Default]
|
|
1 (cmlCTRL_SEMI_C)
|
|
RETURN VALUE¶
Value |
Meaning |
---|---|
음수 |
수행 실패 |
0(ERR_NONE) |
수행 성공 |
REFERENCE¶
여기서 설정하는 제어모드는 절대 좌표 이송 명령에서만 영향을 미치고, 상대 좌표 이송 명령에서는 항상 Open Loop 제어 모드로 운용됩니다.
일반적인 서보드라이브에서 CW/CCW 혹은 OUT/DIR 모드를 결정하기 위한 지령 펄스(Command Pulse) 입력 설정이 존재합니다. 서보드라이브의 매뉴얼을 반드시 참조하여, ㈜커미조아 모션 모듈과 동일하게 설정하여 주십시오. 동일하게 설정이 되지 않았을 경우에는, 다음과 같은 현상이 발생할 수 있습니다.
제어 모드에 따른 차이에 대한 이해를 돕기 위하여 예를 들어 보겠습니다. 현재 커맨드 위치가 5000 , 피드백 위치가 4000 인 상태에서 cmlPmSxMoveTo() 함수를 사용하여 10000의 위치로 이송하라는 명령을 하달하였을 때 • Open loop제어모드에서는 현재 위치에서 5000만큼 (+) 방향으로 이송 • Scmli-Closed Loop 제어모드에서는 현재 위치에서 6000만큼 (+) 방향으로 이송 을 하는 서로 다른 이송 결과를 나타낼 수 있습니다.
Scmli-Closed Loop제어모드로 설정하였을 때 이송 목표 좌표의 계산은 이송 명령을 수행하는 초기에 계산됩니다. 즉, 이송 명령을 실행하는 초기에 현재의 피드백 위치를 읽어서 목표 좌표와의 차이 만큼을 상대좌표 이송하는 방식으로 운용됩니다. 따라서 이송 명령이 끝나는 시점에서 피드백 위치를 확인하여 지령된 목표좌표에 피드백 위치가 항상 일치하는 것을 보장하는 Full-Closed Loop 방식과는 차이가 있습니다.
EXAMPLE¶
1 2 3 4 5 6 7 8 9 10 | C/C++
#include “ComiMLink2_SDK.h”
#include “ComiMLink2_SDK_Def.h”
long nChannel = 0;//0번 축을 선택합니다.
Long BoardID = 0;
long nCtrlMode = 0;
//0번 축을 Scmli-Closed Loop으로 설정합니다.
cmlPmCfgSetCtrlMode(BoardID, 0, nChannel, ccmlCTRL_SEMI_C );
//0번 축에 설정된 제어모드를 반환합니다.
cmlPmCfgGetCtrlMode(BoardID, 0, nChannel, &nCtrlMode );
|
SEE ALSO¶
See also