4.1.31. cmmCfgSetSeqMode¶
SYNOPSYS¶
VT_I4 cmmCfgSetSeqMode(
[in] VT_I4 SeqMode
)
DESCRIPTION¶
cmmCfgSetSeqMode () 함수는 현재 이송이 진행되고 있는 축에 새로운 이송 명령이 하달되었을 때 이의 처리를 어떻게 할 것인지에 대한 모드를 설정하는 것입니다. 이러한 경우에 CMMSDK 에서는 현재 이송 명령이 진행되고 있으므로 에러로 처리하는 모드와 이전 이송 명령이 완료될 때까지 내부적으로 루프를 돌면서 기다리다가 이전 명령이 완료되면 새로운 명령을 실행하는 모드를 지원합니다.
시퀀스(Sequence) 모드 설정은 모든 축에 공통적으로 적용됩니다.
PARAMETER¶
SeqMode : cmmCfgSetSeqMode 함수의 인자이며, 현재 이송이 진행되고 있는 축에 새로운 이송 명령이 하달되었을 때 이의 처리를 어떻게 할 것인지에 대한 시퀀스(Sequence) 모드를 설정하는 것입니다. 이 값의 의미는 다음과 같습니다.
Value |
Meaning |
---|---|
0 (cmSEQM_SKIP_RUN) [초기값] |
현재 이송이 진행되고 있는 축에 새로운 이송 명령이 하달되면 -5170(cmERR_MOT_SEQ_SKIPPED) 에러값과 함께 곧바로 반환됩니다. 다양한 에러코드의 확인 본 매뉴얼의 부록편에 명시되어 있습니다. |
1 (cmSEQM_WAIT_RUN) |
현재 이송이 진행되고 있는 축에 새로운 이송 명령이 하달되면 이송 함수 내부에서 루프를 돌면서 이전 이송이 완료되기를 기다리다가 이전 이송이 완료되면 현재 하달된 이송 명령을 수행합니다. |
RETURN VALUE¶
Value |
Meaning |
---|---|
음수 |
수행 실패 |
cmERR_NONE |
수행 성공 |
REFERENCE¶
Warning
시퀀스(Sequence) 모드가 cmSEQM_SKIP_RUN 으로 설정된 경우2에 이전 이송 명령이 아직 끝나지 않은 상태에서 새로운 이송 명령이 하달되면 에러 처리되고 해당 이송 명령은 실행되지 않습니다. 따라서 이 모드에서 이송 명령을 내릴 때 사용자는 이전의 이송 명령이 완료되었음을 확인하는 것이 바람직합니다.
EXAMPLE¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | C/C++
#include “Cmmsdk.h”
#include “CmmsdkDef.h”
void OnSetSeqMode ()
{
long nSeqMode; // 시퀀스 모드 정보.
// 설정되어있는 시퀀스 모드를 확인 후, cmSEQM_SKIP_RUN 모드로 설정합니다.
if (cmmCfgGetSeqMode ( &nSeqMode ) == cmERR_NONE )
{
if ( nSeqMode != cmSEQM_SKIP_RUN )
{
cmmCfgSetSeqMode ( cmSEQM_SKIP_RUN )
}
}
}
void OnMove ()
{
SxVMoveStart (cmX1 ,1); // 속도 이송 명령 수행
if ( cmmSxMoveStart (cmX1, 100000 ) != cmERR_NONE )
{
// -5170 에러 코드 반환
// 시퀀스 모드가 cmSEQM_SKIP_RUN 모드로 설정되어 있으므로
// 이송 명령이 완료되지 않은 상태에서 다른 이송 명령은 실행되지 않습니다.
}
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | Visual Basic
Private Sub OnSetSeqMode ()
Dim nSeqMode As Long ‘ 시퀀스 모드 정보.
‘ 설정되어있는 시퀀스 모드를 확인 후, cmSEQM_SKIP_RUN 모드로 설정합니다.
If cmmCfgGetSeqMode ( nSeqMode ) = cmERR_NONE Then
If nSeqMode <> cmSEQM_SKIP_RUN Then
Call cmmCfgSetSeqMode ( cmSEQM_SKIP_RUN )
End If
End If
End Sub
Private Sub OnMove ()
Call SxVMoveStart (cmX1 ,1) ‘ 속도 이송 명령 수행
If cmmSxMoveStart (cmX1, 100000 ) <> cmERR_NONE Then
‘ -5170 에러 코드 반환
‘ 시퀀스 모드가 cmSEQM_SKIP_RUN 모드로 설정되어 있으므로
‘ 이송 명령이 완료되지 않은 상태에서 다른 이송 명령은 실행되지 않습니다.
End If
End Sub
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | Delphi
procedure OnSetSeqMode ();
var
nSeqMode : LongInt; // 시퀀스 모드 정보.
begin
// 설정되어있는 시퀀스 모드를 확인 후, cmSEQM_SKIP_RUN 모드로 설정합니다.
if cmmCfgGetSeqMode ( @nSeqMode ) = cmERR_NONE then
begin
if nSeqMode <> cmSEQM_SKIP_RUN then
begin
cmmCfgSetSeqMode ( cmSEQM_SKIP_RUN );
end;
end;
end;
procedure OnMove ();
begin
SxVMoveStart (cmX1,1 ); ‘ 속도 이송 명령 수행
if cmmSxMoveStart (cmX1, 100000 ) <> cmERR_NONE then
begin
{ -5170 에러 코드 반환
시퀀스 모드가 cmSEQM_SKIP_RUN 모드로 설정되어 있으므로
이송 명령이 완료되지 않은 상태에서 다른 이송 명령은 실행되지 않습니다. }
end;
end;
|
See also