KUKA 온라인 측정 샘플 프로그램

현재 최신 버전 (1.3.0)에 대한 매뉴얼을 보고 계십니다. 다른 버전에 액세스하려면 페이지 오른쪽 상단 모서리에 있는 '버전 전환' 버튼을 클릭하세요.

■ 현재 사용하고 있는 제품의 버전이 확실하지 않은 경우에는 언제든지 당사 기술 지원팀에 문의하시기 바랍니다.

프로그램 소개

기능 설명

사용자는 로봇 측에서Mech-Metrics를 트리거하여 Mech-MSR를 사용해 측정하고, Mech-Metrics로 측정 결과를 반환합니다.

파일 경로

Mech-MSR 및 Mech-Metrics 소프트웨어 설치 디렉터리의 Mech-MSR/center /MSR_Interface/KUKA/MSR_METRICS_SAMPLE.src.

필요한 리소스

Mech-MSR솔루션 및 Mech-Metrics 프로젝트

사용 전제 조건

  • 온라인 측정 시스템 측 준비:

    • 현재 대상 물체가Mech-Metrics에서 Mech-MSR솔루션에 연결되어 있습니다.

    • 현재 특징이Mech-Metrics에서 Mech-MSR 프로젝트에 바인딩되어 있습니다.

    • Mech-MSR솔루션과 프로젝트가 Mech-MSR에서 열려 있습니다.

  • 로봇 측 준비:

    • KUKA 표준 인터페이스 통신 구성 이 완료되었습니다.

    • KUKA 자동 교캘리브레이션 이 완료되었습니다.

    • 측정 위치 티칭이 완료되었습니다.

    • 로봇 측에서 로봇을 첫 번째 측정 위치로 이동했습니다.

    • 측정 시작 전에 로봇과 카메라를 30분 동안 미리 예열했습니다.

    • 측정 시작 전에 외부 조명과 온도가 안정적인지 확인했습니다.

이 샘플 프로그램은 예시 프로그램일 뿐입니다. 사용자는 실제 상황에 맞춰 이 내용을 바탕으로 수정해야 하며, 해당 프로그램을 그대로 사용하지 않도록 하십시오.

프로그램 해설

다음에는 MSR_METRICS_SAMPLE 샘플 프로그램의 코드와 관련 설명입니다.

&ACCESS RVP
&PARAM EDITMASK = *
&PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe
DEF MSR_METRICS_SAMPLE( )
  ;FUNCTION: Test Metrics
  INT MSR_Continuous_Mode,Measure_Result,MSR_Status
  MSR_Continuous_Mode = 0
  Measure_Result = 0
  Failed_Count[1] = 0
  Failed_Count[2] = 0
  Failed_Count[3] = 0
  MSR_Init_Socket("XML_Kuka_MSR",20,30,60)
  MSR_Start_Measure(1,"Piece01","ABC",2,10,20,30,40,50,60,70,80,MSR_Continuous_Mode,MSR_Status)
  IF MSR_Status <> 8100 THEN
    MSR_LOG("Run failed!")
    HALT;
  ENDIF
  MSR_Set_Piece_Info(1,"Piece01",MSR_Status)
  IF MSR_Status <> 8103 THEN
    MSR_LOG("Run failed!")
    HALT;
  ENDIF
;FOLD PTP P3 CONT Vel=100 % PDAT3 Tool[1] Base[0];%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.old; Kuka.IsGlobalPoint=False; Kuka.PointName=P3; Kuka.BlendingEnabled=True; Kuka.MoveDataPtpName=PDAT3; Kuka.VelocityPtp=100; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=PTP
;ENDFOLD
$BWDSTART = FALSE
PDAT_ACT = PPDAT3
FDAT_ACT = FP3
BAS(#PTP_PARAMS, 100.0)
;SET_CD_PARAMS (0)
PTP XP3 C_Dis
;ENDFOLD
  MSR_Measure_Feature(1,1,MSR_Status)
  IF MSR_Status <> 8101 THEN
    MSR_LOG("Run failed!")
    HALT;
  ENDIF
;FOLD PTP P2 CONT Vel=100 % PDAT2 Tool[1] Base[0];%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.old; Kuka.IsGlobalPoint=False; Kuka.PointName=P2; Kuka.BlendingEnabled=True; Kuka.MoveDataPtpName=PDAT2; Kuka.VelocityPtp=100; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=PTP
;ENDFOLD
$BWDSTART = FALSE
PDAT_ACT = PPDAT2
FDAT_ACT = FP2
BAS(#PTP_PARAMS, 100.0)
;SET_CD_PARAMS (0)
PTP XP2 C_Dis
;ENDFOLD
  MSR_Measure_Feature(1,1,MSR_Status)
  IF MSR_Status <> 8101 THEN
    MSR_LOG("Run failed!")
    HALT;
  ENDIF
;FOLD PTP P4 CONT Vel=100 % PDAT4 Tool[1] Base[0];%{PE}
;FOLD Parameters ;%{h}
;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.old; Kuka.IsGlobalPoint=False; Kuka.PointName=P4; Kuka.BlendingEnabled=True; Kuka.MoveDataPtpName=PDAT4; Kuka.VelocityPtp=100; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=PTP
;ENDFOLD
$BWDSTART = FALSE
PDAT_ACT = PPDAT4
FDAT_ACT = FP4
BAS(#PTP_PARAMS, 100.0)
;SET_CD_PARAMS (0)
PTP XP4 C_Dis
;ENDFOLD
  MSR_Measure_Feature(1,1,MSR_Status)
  IF MSR_Status <> 8101 THEN
    MSR_LOG("Run failed!")
    HALT;
  ENDIF
  MSR_End_Measure(1,Measure_Result,Failed_Count[],MSR_Status)
  IF MSR_Status <> 8102 THEN
    MSR_LOG("Run failed!")
    HALT;
  ENDIF
  MSR_View_Piece_Data(1,"Piece01",MSR_Status)
  IF MSR_Status <> 8104 THEN
    MSR_LOG("Run failed!")
    HALT;
  ENDIF
  WAIT SEC 1
END

다음 표는 위 절차에 대한 논리적 해석을 제공합니다. 위 코드에서 세미콜론(;)으로 시작하는 주석 처리된 행은 주석 처리된 내용이 해제되었음을 나타냅니다.

워크플로 코드와 설명

통신 초기화하기

INT MSR_Continuous_Mode,Measure_Result,MSR_Status
MSR_Continuous_Mode = 0
Measure_Result = 0
Failed_Count[1] = 0
Failed_Count[2] = 0
Failed_Count[3] = 0
MSR_Init_Socket("XML_Kuka_MSR",20,30,60)
  • INT MSR_Continuous_Mode, Measure_Result, MSR_Status: 세 개의 정수형 변수 MSR_Continuous_Mode, Measure_Result 및 MSR_Status를 선언합니다.

    • MSR_Continuous_Mode = 0: MSR_Continuous_Mode 변수를 0으로 초기화하며, 실행 모드를 저장하는 데 사용됩니다.

    • Measure_Result = 0: Measure_Result 변수를 0으로 초기화하며, 최종 측정 결과를 저장하는 데 사용됩니다.

    • MSR_Status: 명령 반환 상태 코드를 저장하고, 각 주요 명령 후 검증하는 데 사용됩니다.

    • Failed_Count[1] = 0: Failed_Count 배열의 첫 번째 요소를 0으로 초기화하며, 1급 공차대를 초과한 측정 항목 수를 저장하는 데 사용됩니다.

    • Failed_Count[2] = 0: Failed_Count 배열의 두 번째 요소를 0으로 초기화하며, 2급 공차대를 초과한 측정 항목 수를 저장하는 데 사용됩니다.

    • Failed_Count[3] = 0: Failed_Count 배열의 세 번째 요소를 0으로 초기화하며, 3급 공차대를 초과한 측정 항목 수를 저장하는 데 사용됩니다.

  • MSR_Init_Socket ("XML_Kuka_MSR",20,30,60): 온라인 측정 시스템과 로봇 간의 TCP 프로토콜 통신 연결을 설정합니다.

    • "XML_Kuka_MSR": 네트워크 구성 파일 이름입니다.

    • 20: 통신 상태에 해당하는 신호 번호입니다(XML 구성 파일 파라미터와 일치).

    • 30: 수신 상태에 해당하는 신호 번호입니다(XML 구성 파일의 파라미터와 일치).

    • 60: 이 파라미터는 통신 시간 초과 대기 시간을 나타내며, 단위는 초입니다.

측정을 시작하기

MSR_Start_Measure(1,"Piece01","ABC",2,10,20,30,40,50,60,70,80,MSR_Continuous_Mode,MSR_Status)
IF MSR_Status <> 8100 THEN
  MSR_LOG("Run failed!")
  HALT;
ENDIF
  • MSR_Start_Measure (1,"Piece01","ABC",2,10,20,30,40,50,60,70,80,MSR_Continuous_Mode,MSR_Status): 측정 작업을 시작하고 사용자 정의 파라미터를 설정합니다.

    • 1: 대상 물체 번호.

    • "Piece01": 대상 물체 이름.

    • "ABC": 대상 물체 SN.

    • 2: 품질 검사 모드입니다. 1은 전수 검사를, 2는 부분 검사를 나타냅니다.

    • 10, 20, 30, 40, 50, 60, 70, 80: 설정된 사용자 정의 파라미터입니다.

    • MSR_Continuous_Mode: Mech-Metrics에서 반환한 실행 모드를 저장하는 데 사용됩니다.

    • MSR_Status: 명령 반환 상태 코드를 저장하는 데 사용됩니다.

  • IF MSR_Status <> 8100 THEN …​ ENDIF: 상태 코드가 8100이 아닌 경우, 측정 시작 명령 실행에 실패했음을 나타내며, 로봇 측에서 로그를 기록하고 프로그램을 중지합니다.

    여기의 검사 모드와 사용자 정의 파라미터는 Mech-Metrics에서 설정한 값과 일치해야 합니다.

대상 물체를 Mech-Metrics에 전달하기

MSR_Set_Piece_Info(1,"Piece01",MSR_Status)
IF MSR_Status <> 8103 THEN
  MSR_LOG("Run failed!")
  HALT;
ENDIF
  • MSR_Set_Piece_Info (1, "Piece01", MSR_Status): SN이 Piece01인 대상 물체를 Mech-Metrics에 전달하고 명령 상태 코드를 가져옵니다.

    • 1: 대상 물체 번호.

    • "Piece01": 대상 물체 SN.

  • IF MSR_Status <> 8103 THEN …​ ENDIF: 상태 코드가 8103이 아닌 경우, 대상 물체 정보 전달에 실패했음을 나타내며, 로봇 측에서 로그를 기록하고 프로그램을 중지합니다.

이동 로봇은 지정된 위치로 이동하여 특징 측정 작업을 수행하기

$BWDSTART = FALSE
PDAT_ACT = PPDAT3
FDAT_ACT = FP3
BAS(#PTP_PARAMS, 100.0)
PTP XP3 C_Dis
MSR_Measure_Feature(1,1,MSR_Status)
IF MSR_Status <> 8101 THEN
   MSR_LOG("Run failed!")
   HALT;
ENDIF
$BWDSTART = FALSE
PDAT_ACT = PPDAT2
FDAT_ACT = FP2
BAS(#PTP_PARAMS, 100.0)
PTP XP2 C_Dis
MSR_Measure_Feature(1,1,MSR_Status)
IF MSR_Status <> 8101 THEN
   MSR_LOG("Run failed!")
   HALT;
ENDIF
$BWDSTART = FALSE
PDAT_ACT = PPDAT4
FDAT_ACT = FP4
BAS(#PTP_PARAMS, 100.0)
PTP XP4 C_Dis
MSR_Measure_Feature(1,1,MSR_Status)
IF MSR_Status <> 8101 THEN
   MSR_LOG("Run failed!")
   HALT;
ENDIF
  • $BWDSTART = FALSE: 역방향 경로 보정을 비활성화합니다. 즉, 실행 중 경로 역추적을 수행하지 않습니다.

  • PDAT_ACT = PPDAT3: 현재 점대점 이동 파라미터를 PPDAT3으로 설정하며, 속도, 가속도 및 블렌딩 설정을 포함합니다. PDAT_ACT = PPDAT2 및 PDAT_ACT = PPDAT4도 동일합니다.

  • FDAT_ACT = FP3: 현재 위치의 좌표계 데이터를 FP3으로 설정하며, 로봇의 운동 기준을 정의하는 데 사용됩니다. FDAT_ACT = FP2 및 FDAT_ACT = FP4도 동일합니다.

  • BAS(#PTP_PARAMS, 100.0): 점대점 이동의 기본 파라미터를 적용하며, 속도는 100%로 설정합니다.

  • PTP XP3 C_Dis: 로봇이 점대점 방식으로 XP3 지점까지 정확하게 이동합니다. PTP XP2 C_Dis 및 PTP XP4 C_Dis도 동일합니다.

  • MSR_Measure_Feature (1, 1, MSR_Status): 로봇 측에서 대상 물체 번호가 1이고 측정 특징의 측정 번호가 1인 Mech-MSR 프로젝트 실행을 트리거하고, 명령어 상태 코드를 가져옵니다.

    • 첫 번째 1: 대상 물체 번호.

    • 두 번째 1: 측정 특징 번호.

  • IF MSR_Status <> 8101 THEN…​ ENDIF: 특징 측정을 트리거할 때마다 상태 코드를 확인합니다. 상태 코드가 8101이 아닌 경우, 로봇 측에서 로그를 기록하고 프로그램을 중지합니다.

사용자는 측정 위치(XP2, XP3, XP4)를 티칭해야 합니다. 구체적인 티칭 방법은 자동 캘리브레이션의KUKA 자동 캘리브레이션 장의 캘리브레이션 시작점 부분 작업을 참조하십시오.

측정 종료하기

MSR_End_Measure(1,Measure_Result,Failed_Count[],MSR_Status)
IF MSR_Status <> 8102 THEN
  MSR_LOG("Run failed!")
  HALT;
ENDIF
  • MSR_End_Measure (1, Measure_Result, Failed_Count[], MSR_Status): 측정을 종료하고, 측정 결과를 Measure_Result에 저장하며, Failed_Count 배열을 업데이트하고, 동시에 명령 상태 코드를 가져옵니다.

  • IF MSR_Status <> 8102 THEN …​ ENDIF: 상태 코드가 8102가 아닌 경우, 측정 종료 명령 실행에 실패했음을 나타내며, 로봇 측에서 로그를 기록하고 프로그램을 중지합니다.

이력 데이터 조회하기

MSR_View_Piece_Data(1,"Piece01",MSR_Status)
IF MSR_Status <> 8104 THEN
  MSR_LOG("Run failed!")
  HALT;
ENDIF
WAIT SEC 1
END
  • MSR_View_Piece_Data1, "Piece01", MSR_Status): 외부에서 대상 물체 SN을 전달하여 Mech-Metrics 소프트웨어 기본 화면의 데이터 보기를 전달된 SN의 대상 물체로 전환하고, 명령 상태 코드를 가져옵니다.

  • IF MSR_Status <> 8104 THEN …​ ENDIF: 상태 코드가 8104가 아닌 경우, 이력 데이터 조회에 실패했음을 나타내며, 로봇 측에서 로그를 기록하고 프로그램을 중지합니다.

이 페이지가 도움이 되었습니까?

다음 방법을 통해 피드백을 보내주실 수 있습니다:

저희는 귀하의 개인정보를 소중히 다룹니다.

당사 웹사이트는 최상의 사용자 경험을 제공하기 위해 쿠키를 사용하고 있습니다. "모두 수락"을 클릭하시면 쿠키 사용에 동의하시는 것이며, "모두 거부"를 클릭하시면 이 웹사이트 방문 시 귀하의 정보가 추적되거나 기억되지 않도록 단일 쿠키만 사용됩니다.