|
|
|
Język programowania robotów Fanuc - KAREL Karel jest językiem wyższego poziomu programowania robotów. Struktura, funkcje oraz programowanie przypomina języki Pascal czy PL/1. Język ten używany jest najczęściej w sytuacjach, gdy podstawowe funkcje robota dostępne bezpośrednio na panelu operatora nie wystarczają. Jak zobaczymy poniżej, program
dzieli się na deklarację stałych i zmiennych, deklarację zmiennych kompilatora, deklarację funkci i procedur oraz podstawowy kod programu. Za pomocą języka Karel możemy:
Programy w języku Karel są szczególnie pomocne przy programowaniu funkcji logicznych wielokrotnie wywoływanych w programach robota jak np:
PROGRAM SearchL %NOLOCKGROUP %ENVIRONMENT strng %ENVIRONMENT REGOPE %ENVIRONMENT SYSDEF %ENVIRONMENT MOTN %ENVIRONMENT TPE %ENVIRONMENT PATHOP %ENVIRONMENT KCLOP %NOPAUSE=ERROR + COMMAND + TPENABLE %NOPAUSESHFT %COMMENT = 'Fliegende Suche' %alphabetize -- Program zwraca pozycję kartezjańską robota przy przerwaniu poczhodzącym ze zdeklarowanego sygnału -- pozycja w formacie xyzwpr. -- Program musi zostać wywołany z programu TP -- (Call SearchL(Stop,SearchSigNo,SearchPos,ToPos,Speed,ToolNo,FrameNo) -- Bartłomiej Siuda -- Wersja BSI V1.2 09.12.2009 VAR Found :XYZWPR Target :XYZWPR Speed, par_real, regreal : REAL STAT, StopRob, TargetPRegNo, ToolNo, FrameNo, ResultPRegNo, SigNo, regint, param_no, par_typ, par_int : INTEGER par_str : STRING[8] Flanke, realflag : BOOLEAN ROUTINE ReadPos BEGIN -- odczytanie pozycji Found = CURPOS(0,0,1) Flanke=TRUE END ReadPos BEGIN -- inicjalizacja zmiennych Flanke=FALSE STAT=0 Found.x=0 Found.y=0 Found.z=0 Found.w=0 Found.p=0 Found.r=0 -- odczytanie parametrów wejściowych wywołania programu -- Numer sygnału GET_TPE_PRM(1,par_typ,par_int,par_real,par_str,STAT) IF (par_typ=1) AND (STAT=0) THEN --INTEGER StopRob=par_int ENDIF -- Numer sygnału GET_TPE_PRM(2,par_typ,par_int,par_real,par_str,STAT) IF (par_typ=1) AND (STAT=0) THEN --INTEGER SigNo=par_int ENDIF -- Numer rejestru pozycji gdzie ma być zapisana zmienna GET_TPE_PRM(3,par_typ,par_int,par_real,par_str,STAT) IF (par_typ=1) AND (STAT=0) THEN --INTEGER ResultPRegNo=par_int ENDIF -- Numer pozycji docelowej GET_TPE_PRM(4,par_typ,par_int,par_real,par_str,STAT) IF (par_typ=1) AND (STAT=0) THEN --INTEGER TargetPRegNo=par_int ENDIF -- Prędkość robota podczas wyszukiwania GET_TPE_PRM(5,par_typ,par_int,par_real,par_str,STAT) IF (par_typ=1) AND (STAT=0) THEN --INTEGER Speed=par_int ENDIF -- Numer narzędzia (TCP) GET_TPE_PRM(6,par_typ,par_int,par_real,par_str,STAT) IF (par_typ=1) AND (STAT=0) THEN --INTEGER ToolNo=par_int ENDIF -- Numer FRAME GET_TPE_PRM(7,par_typ,par_int,par_real,par_str,STAT) IF (par_typ=1) AND (STAT=0) THEN --INTEGER FrameNo=par_int ENDIF -- Aktywacja procesu wyszukiwania -- Odczytanie pozycji docelowej Target=GET_POS_REG(TargetPRegNo,STAT) -- Parametry ruchu robota $MOTYPE = LINEAR $GROUP[1].$UTOOL = $MNUTOOL[1,ToolNo] IF FrameNo>0 THEN $GROUP[1].$UFRAME = $MNUFRAME[1,FrameNo] ELSE -- Domyślnie ustawiono World ENDIF $Speed=Speed IF StopRob=0 THEN -- Rozpocznij ruch z warunkami MOVE TO Target, WHEN RDI[SigNo]+ DO ReadPos ENDMOVE ELSE -- Rozpocznij ruch z warunkami MOVE TO Target, WHEN RDI[SigNo]+ DO ReadPos Cancel ENDMOVE ENDIF IF Flanke THEN -- Zwrócenie wartości pozycji SET_POS_REG (ResultPRegNo,Found,STAT) ELSE -- Zwrócenie wartości pozycji SET_POS_REG (ResultPRegNo,Target,STAT) ENDIF END SearchL |



Język Fanuc Karel
