Classical PLC programs are imperative:
they consist of instructions that are executed step by step.
Selmo programs are declarative:
they describe, what should hold, not how it is executed.
An example:
In a conventional PLC program it would say:
IF StartButton = TRUE THEN
Cylinder1Extend := TRUE;
IF FrontSensor = TRUE THEN
NextStep := 2;
END_IF;
END_IF;
In Selmo the description instead reads:
State 1: “Waiting for start button” → Button (IN zone) has operand S.
State 2: “Extend cylinder 1” → Cylinder 1 (IN_OUT zone) has operand S.
If feedback = TRUE, the state machine automatically moves to the next state.
No code, no nested logic, no misinterpretation – the sequence is described by the model itself.