Example of FANUC Karel program
Call a KAREL program that behaves the same way as the Example of FANUC TP program from another TP program.
TP program
1: ! Call the karel program that does the pick and place scenario
2: CALL KAREL_EXAMPLE
[End]
KAREL program
PROGRAM KAREL_EXAMPLE
-- Environment file required to access registers
%ENVIRONMENT REGOPE
VAR
reValue : REAL
boValue : BOOLEAN
inStatus : INTEGER
stIpAddress : STRING[50]
inClientNumber1 : INTEGER
inClientNumber2 : INTEGER
inPortNumber : INTEGER
stRecipeID : STRING[10]
errorCode : INTEGER
i : INTEGER
-- Routine equivalent to EYE_CHECK_LAST_ERROR
ROUTINE RaiseCheckLastError FROM IPL_ASYRIL_EYE_CFG
-- Routine equivalent to EYE_START_PRODUCTION
ROUTINE MainRoutineStartProduction(stRecipeID : STRING) FROM IPL_ASYRIL_EYE_CFG
-- Routine equivalent to EYE_GET_PART
ROUTINE MainRoutineGetPart FROM IPL_ASYRIL_EYE_CFG
-- Routine equivalent to EYE_PREPARE_PART
ROUTINE MainRoutinePreparePart FROM IPL_ASYRIL_EYE_CFG
-- Routine equivalent to EYE_RAW_COMMAND
ROUTINE MainRoutineRawCommand (stRawCommand : STRING; inClientNB : INTEGER) FROM IPL_ASYRIL_EYE_CFG
-- Routine equivalent to EYE_STOP
ROUTINE MainRoutineStop(stParameter : STRING) FROM IPL_ASYRIL_EYE_CFG
BEGIN
stIpAddress = '192.168.0.50' -- ip address of your EYE+
inPortNumber = 7171 -- port number of your EYE+
inClientNumber1 = 1 -- First client reserved for plugin (1-8)
inClientNumber2 = 2 -- Second client reserved for plugin (1-8)
stRecipeID = '12345' -- Recipe identifier
-- Start production using the right recipe identifier
MainRoutineStartProduction(stRecipeID)
-- Check no error occured (last error will be write into the default register R[21])
RaiseCheckLastError
-- Get the RaiseCheckLastError response in register R[21]
GET_REG(21, boValue, errorCode, reValue, inStatus)
IF errorCode <> 0 THEN
-- Error when staring the production, abort the program
ABORT
ENDIF
-- Loop to pick and place
FOR i = 1 TO 50 DO
-- Send a get_part command to retreive the part coordinates, the coordinates are saved in register PR[20].
MainRoutineGetPart
-- Check no error occured (last error will be write into the default register R[21])
RaiseCheckLastError
-- Get the RaiseCheckLastError response in register R[21]
GET_REG(21, boValue, errorCode, reValue, inStatus)
IF errorCode = 0 THEN
-- Coordinates are saved in the default position register (P[20])
-- Do your pick and place here
-- ...
ELSE
-- Error occured while getting part coordinates
-- Do something depending on the error raised
ENDIF
ENDFOR
-- Stop EYE+ production state and the communication
MainRoutineStop('production')
RaiseCheckLastError
-- Get the RaiseCheckLastError response in register R[21]
GET_REG(21, boValue, errorCode, reValue, inStatus)
IF errorCode <> 0 THEN
-- Not well configured
ABORT
ENDIF
END KAREL_EXAMPLE