4.2.8. cemCfgSoftLimit_Set


SYNOPSIS

VT_I4 cemCfgSoftLimit_Set(
  VT_I4 Axis,
  VT_I4 IsEnable,
  VT_R8 LimitN,
  VT_R8 LimitP
)

DESCRIPTION

  • 소프트웨어 리밋(Limit) 기능을 활성 또는 비활성화 하고 소프트웨어 리밋 범위를 설정합니다. 소프트웨어적인 Limit 은 리밋 센서의 설치가 용이하지 않을 때 안전성을 위하여 모션의 이송 범위를 소프트웨어적인 이송제한범위를 설정하여 제한하는 것입니다.

  • 소프트웨어적인 Limit 은 Command pulse 카운터의 절대값이 지정한 +/- Limit 값보다 같거나 크게 되면 모션을 자동 정지하도록 합니다.

PARAMETER

  • Axis : 축 번호. 통합 축으로 관리되는 축 번호를 의미하며, 상수 값으로 0 (Zero Based) 이상, 최대. 통합 축 개수 - 1 이하의 값을 축 번호로 설정할 수 있습니다.

  • IsEnable : 소프트웨어 리밋(Limit) 기능의 활성/비활성 여부를 설정 혹은 반환합니다.

  • LimitN : (-) 방향 Limit 값을 설정 혹은 반환합니다.

  • LimitP : (+) 방향 Limit 값을 설정 혹은 반환합니다.

RETURN VALUE

Value

Meaning

음수

수행 실패

0 (ceERR_NONE)

수행 성공

Note

S/W Limit 의 설정에는 항상 Unit Distance 의 값이 고려되지 않는 상황에서 문제가 발생할 수 있습니

다. 만약 설정한 Unit Distance 값이 1000 으로 설정되어 있다면, 이 값에 입력된 LimitN 값과 LimitP

값이 28Bit 로 표현할 수 있는 정수 값을 초과해서는 안됩니다.

이 내용을 식으로 표현하면 다음과 같습니다.

Unit Distance * S/W Limit Value < 268,435,456(28bit 정수)

위 의미는 결국 Unit Distance 와 S/W Limit 의 변수 값이 28bit 정수보다 작아야 한다는 의미입니다.

본 함수의 인자가 Double 형이라고 할지라도 이 점을 반드시 주의하시기 바랍니다. 만약 이 값이

28Bit 정수보다 크게 되면, 변수의 값이 Overflow 되어 내부에서 Negative Limit 이 Positive Limit

효과를 가져와, 모터의 축이 +/- 방향으로 움직이지 못하는 현상을 발생시킬 수 있습니다.

Example

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 C/C++
 #include “ceSDK.h”
 #include “ceSDKDef.h”
long nAxisNo = 1; // Software Limit 을 설정할 축을 선택합니다.
void OnSetSoftLimit ()
{
long nIsEnable; // Software Limit 정보.
double fElNeg, fElPos;
/* Software Limit 설정 상태를 확인하고, Software Limit 기능이 비활성 상태이면 활성 상태로 설정합니다. */
if ( cemCfgSoftLimit_Get( nAxisNo, &nIsEnable, &fElNeg, &fElPos ) == ceERR_NONE )
{
if ( nIsEnable != CE_TRUE )
{
// Software Limit 기능을 활성화 하고, -EL 은 -100000, +EL 은 100000 으로 설정합니다.
cemCfgSoftLimit_Set ( nAxisNo, CE_TRUE, -100000, 100000 );
}
}
}
void OnMove ()
{
/* 현재 위치 : 50000 이라 가정, 이송 거리 : 100000 으로 이송 명령을 주면 SW Limit 이송 제한 범위에 걸려
150000 까지 Command pulse 를 출력하지 못하고 100000 위치에서 자동으로 정지합니다. */
cemSxMoveStart ( nAxisNo, 100000 );

}