Schrittkette
Beispiel zum Schrittkettentutorial, aber ohne Plutonium
Kein vollständiger Beispielcode. Code wurde von mir nicht getestet. Es fehlen zudem die Unterprogramme die verwendet werden und es sind nicht alle Variablen deklariert. Du könntest das besser schreiben? Dann schicks an webmaster@roboterszene.de und es wird hier mit veröffentlicht.
Code im DAT File:
-----------------------------------------------------------------------------------------------------------------------------------------
GLOBAL ENUM ROB_STATES IstInWarten, FahreWarten, FahreAblegen, FahreAufnehmen,
OeffneGreifer, SchliesseGreifer
DECL GLOBAL ROB_STATES CURRENT_ROB_STATE=#IstInWarten
-----------------------------------------------------------------------------------------------------------------------------------------
Code im SRC File:
-----------------------------------------------------------------------------------------------------------------------------------------
GLOBAL DEF MAIN()
WHILE($IN[100]) ;solange Signal 100 ansteht wird das Programm wiederholt
SWITCH CURRENT_ROB_STATE
CASE #IstInWarten
IF (GripperHasPart) THEN ;Wenn Teil gegriffen
CURRENT_ROB_STATE = #FahreAblegen ;Naechsten Zustand setzen
ELSE
IF(NOT GripperHasPart) ;Wenn kein Teil gegriffen
CURRENT_ROB_STATE = #FahreAufnehmen ;Naechsten Zustand setzen
ENDIF
ENDIF
CASE #FahreWarten
MoveToWait()
CURRENT_ROB_STATE = #IstInWarten ;Naechsten Zustand setzen
CASE #FahreAblegen
MoveToPlace()
CURRENT_ROB_STATE = #OeffneGreifer ;Naechsten Zustand setzen
CASE #FahreAufnehmen
IF(Z1Ready)THEN ;Je nachdem wo etwas liegt, dieses abholen. Prioritaet: 1 dann 2 dann 3
MoveToZ1()
ELSE
IF(Z2Ready)
MoveToZ2()
ELSE
IF(Z3Ready)
MoveToZ3()
ENDIF
ENDIF
ENDIF
CURRENT_ROB_STATE = #SchliesseGreifer ;Naechsten Zustand setzen
CASE #OeffneGreifer
OpenGripper()
CURRENT_ROB_STATE = #FahreWarten ;Naechsten Zustand setzen
ENDIF
CASE #SchliesseGreifer
CloseGripper()
CURRENT_ROB_STATE = #FahreWarten ;Naechsten Zustand setzen
ENDSWITCH
ENDWHILE
END
-----------------------------------------------------------------------------------------------------------------------------------------