First... following up on dandrade's post, with regards to "Multi-Tasking"...
"While I'm doing 'this' I might be aware that I also need to do 'that'... but I can't actually do 'that' until I'm done with 'this'. Sure... I AM THE COMPUTER!... but Hey, c'mon, gimme a break... I am only one guy!"
True "Multi-Tasking" can only be accomplished by multiple processors. It takes two people to do two separate jobs, concurrently.
Examples of "True Multi-Tasking" are...
...a PLC and Motion Control Card combination (separate processors)
The PLC passes a command packet (whatever it might contain) to the Motion Control Card. The Motion Control Card then carries out those orders, according to its own processing, while the PLC continues doing what it does.
...multiple PLCs on a network sharing duties in a given process (separate processors)
Each PLC is running independently, however, each might depend on data from the other, to one degree or another, before furthering its own progress through its own portion of the process.
Bringing in (bringing on-line) any sub-routine-like coding is NOT Multi-Tasking. It is nothing more , or less, than extended processing.
There are other routines that use an effect called "Time-Slicing". These routines "steal" a little bit of scan-time, every so often, to provide the time necessary to be completed. These routines take multiple scans to be completed. These routines should NOT be Timing-Critical routines!
Then there is this effect called "Background Processing". I have this on my TI, as well as the Time-Slicing effect. I can write a routine to run in the "background". It can be "called" every 10-mSec (or less often). It can use the current values from the Input Image Table or it can use Immediate Inputs from the field (actually, I can use Immediate Inputs anytime I want). It uses the current values of the Control Relay Table.
In the course of processing the routine, all changes to Internal Control Relays are, of course, immediate. The routine can change the actual values of the Outputs to the field through "Immediate Output".
This means that Outputs can change state WHILE the ladder is still in process! As always... process development requires careful consideration!
This routine, running in the "Background", is "Interrupt Driven".
There are two kinds of "Interrupts": the first is "externally generated" (by Input) while the second is "internally generated" (by Clock).
Neither one of those is a "Multi-Tasking" function... but they can sure seem to be so.
Second... regarding the Elevator Program...
It appears that you are being "instructed" to develop the program in this particular manner. If so, I'm not going to go against your instructor.
However, even if this PLC is only a mid-range type, in terms of capability, I find it weird to see you say that "i can programme 16 events".
Are you talking about using a "DRUM"?
If so... that is NOT a good tack to take.
So... What say you?