Programming/KUKA KRL

KUKA KRL 현재 로봇 위치를 지속적으로 PLC에게 알려 주려면

레드마티즈 2024. 1. 21. 18:38
728x90

지난번 포스팅에서 로봇의 현재 위치가 특정 티칭위치 근처에 있는지 반환하는 함수를 소개해 드렸습니다.

 

https://dsseo.tistory.com/6

 

KUKA KRL 현재위치가 특정 티칭위치 근처에 있는지 확인하는 함수

좌표공간에서 두 점 사이의 거리를 구하는 공식을 이용하여 로봇의 TCP가 특정 티칭위치 근처에 있는지 확인하는 함수를 소개합니다. 아래 함수는 첫번째 인수로 거리값을 mm로 받고, 두번째 인

dsseo.tistory.com

 

이번에는 해당 함수를 활용하여 지속적으로 PLC에게 로봇의 위치를 알려주는 방법을 소개해 드립니다. 산업용 로봇은 티칭된 위치에 있을 때 가장 안전 합니다. 로봇이 정지해 있을 때 누군가가 Jogging으로 로봇을 이도저도 아닌 위치로 이동시켜 두었다면, 해당위치에서 로봇을 구동하는 것은 매우 위험하며, 홈 복귀도 어려워 집니다.(넓은 공간에서 단순 Pick & Place를 하는 경우는 그나마 좀 낫습니다만...)

 

이제 다시 본론으로 돌아와서 방법을 소개해 드립니다.

 

먼저 티칭 포지션을 $config.dat 파일안에 아래와 같이 배열로 선언 합니다.

$config.dat 파일 위치

 

 

지난번 포스팅에서 소개해 드린 CHECK_LOCATION1를 함수를 활용하여 인수로 시작점과 끝점을 받아 어느 포지션에 로봇이 위치하는지 확인하는 함수 입니다. 이도저도 아닌 위치에서는 0을 반환 합니다.

GLOBAL DEFFCT INT CHECK_LOCATION2(nStart:IN,nEnd:IN)
   
   BOOL bResult
   INT nReturnVal
   INT nPosNum,nStart,nEnd
   
   bResult=FALSE
   nReturnVal=0  
   
   FOR nPosNum=nStart TO nEnd STEP 1      
     
      ON_ERROR_PROCEED
      bResult=CHECK_LOCATION1(1,(XGP[nPosNum]))
     
      IF bResult==TRUE THEN
         nReturnVal=nPosNum
         RETURN nReturnVal
      ENDIF
     
   ENDFOR
   
   RETURN nReturnVal
   
ENDFCT

 

이제 상시 구동 프로그램이 있는 sps.sub 파일에 아래와 같은 코드를 구성해 줍니다.

sps.sub 파일 위치

 

CHECK_LOCATION2 함수에 첫번째 인자로 100, 두번째 인자로 600을 전달해서 로봇이 100번 ~ 600번 티칭된 위치중 어디에 있는지 확인하는 코드 입니다.(티칭된 위치를 벗어나면 0을 반환합니다.)

 

이제 nCurPos에 저장된 값을 PLC에 전달해주면 끝입니다.

IF $ACT_TOOL>=1 THEN        
         nCurPos=CHECK_LOCATION2(100,600)
      ELSE
         nCurPos=0
ENDIF

 

감사합니다.