De två små robotarna har en tom main-rutin och väntar på interupt-signaler från den stora roboten. Så fort en liten robot får order om att utföra så utför den oavsett var den befinner sig. På det här sättet låter vi den stora roboten stå för logiken och de små blir bara utförare.
För den som är intresserad finns kod att hämta:
rob_stor.txt
rob_liten_1.txt
rob_liten_2.txt
Ett utdrag från koden visar hur man använder TRAP för att använda interupts i RAPID-kod.
VAR bool first_loop:=true;
VAR intnum sig_mt_home;
VAR intnum sig_mt_ws;
VAR intnum sig_dodrill;
PROC main()
IF (first_loop) THEN
! mt_home
CONNECT sig_mt_home WITH t_mt_home;
ISignalDI DI_cR1_mt_home, high, sig_mt_home;
! mt_ws
CONNECT sig_mt_ws WITH t_mt_ws;
ISignalDI DI_cR1_mt_ws, high, sig_mt_ws;
! do drill
CONNECT sig_dodrill WITH t_dodrill;
ISignalDI DI_cR1_dodrill, high, sig_dodrill;
first_loop := false;
ENDIF
Reset DO_cR1_mt_home_d;
Reset DO_cR1_mt_ws_d;
Reset DO_cR1_dodrill_d;
!drill_sequence;
ENDPROC
TRAP t_dodrill
! its a trap!
Reset DO_cR1_dodrill_d;
dodrill;
Set DO_cR1_dodrill_d;
WaitTime 1.5;
RETURN;
ENDTRAP