Open runtimevic opened 6 months ago
Hi Victor! Similar to the Commando library, these Tc Libraries are still in very early development, so things are changing fast and not yet documented.
This library is an extension of the TcCommando concept but has two extensions.
The concept is that you have a sequence object that has a similar (ideal the same) interface as a Command from commando. The difference is that instead of just a bool (checked with consume) it has a state machine with a nice api.
//Calling the sequence
MoveUp.Command := myComponent.command.moveup;
MoveUp.Execute := TRUE;
MoveUp();
//moveup gets implemented as a state machine
CASE moveup.doStep() OF
0:
IF moveup.onEntry() THEN
//Start an action
axis1.move(moveup); //<-Start move on axis 1 and 2 with the same sequence as the status object
axis2.move(moveup);
END_IF
IF moveup.onsuccess( nextstep ) THEN <-- when the moves are complete go to nextstep
//Optional code to run on success
END_IF
IF moveup.onerror( errorstep ) THEN
//Optional code to run when leaving the step
END_IF
IF moveup.onexit( ) THEN
//Optional code to run when leaving the step
END_IF
nextstep:
//When we are done tell the sequencer
moveup.sequenceComplete(); -> status.done
errorstep
//If there was an error report it
moveup.sequenceError(); -> status.busy
END_IF
This library also supports integration with TcPiper which is our distributed packML state machine. If it is integrated with Piper, then piper acts as the step manager to coordinate the steps in the sequence as substate.
You can find more information about piper here:
https://loupeteam.github.io/LoupeDocs/libraries/piper.html https://loupeteam.github.io/LoupeDocs/styleguide/projectstructure/piperguide.html
We have TcPiper in development too, which very similar to our B&R implementation of Piper, but with a more OOP design,
Hello, Is there any example of using to TcSequencer understand it? thanks Víctor.