Home Język Fanuc Karel
PDF Drukuj
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:
  • Programować skomplikowane ruchy robota
  • Programować operacje logiczne
  • Komunikować się z innymi urządzeniami zewnętrznymi
  • Prowadzić interakcję z użytkownikiem (wprowadzanie danych, potwierdzenia na panelu)
  • Tworzyć nowe menu dla użytkownika
  • Operować bezpośrednio na zmiennych systemowych robota
Programy Karel można tworzyć w edytorze tekstu. Taki program przed załadowaniem do robota należy skompilować specjalnym oprogramowaniem (Karel Translator) do kodu wynikowego zwanego p-code.

Programy w języku Karel są szczególnie pomocne przy programowaniu funkcji logicznych wielokrotnie wywoływanych w programach robota jak np:
  • obliczania pozycji przy paletyzacji
  • otwierania i/lub zamykania chwytaka
  • obsługi urządzeń
  • wyświetlania komunikatów na konsoli operaotora
Poniżej przedstawiono przykład programu w języku Karel do odnajdywania pozycji przy zdarzeniu pochodzącym z zadeklarowanego czujnika. Program zapisuje znalezioną pozycję w zadeklarowanym rejestrze pozycji.

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
 

© 2013 Bartłomiej Siuda Robotyka i Automatyka Przemysłowa Roboty Fanuc Kuka Abb

Polityka prywatności

Webmaster: NRGstudio.pl
Joomla! is Free Software released under the GNU General Public License.

Strona używa informacji zapisanych za pomocą… plików cookies w celu dostosowania do indywidualnych potrzeb użytkowników. Jeżeli tego nie akceptujesz zmień ustawienia przeglądarki dotyczą…ce cookies. Więcej informacji można znaleźć‡ w naszej Polityce prywatności.