Hello, Ian
Welcome and congratulations on the successful Door Simulator. Do you want comments and criticism on your programs? I assume that you would not have posted it if you didn't want other opinions. Note I said "opinions". That is all they are.
Your Rung 0 Branch 2 O:2/4 Unlatch and Rung 1 O:2/1 Solenoid have Outputs embedded where normally you only want to use Inputs or contacts from Outputs.
Your Rung 0 looks pretty complicated even for Exercise 3, using the Selector Switch. I think you are putting to much emphasis on the motor.
Beginners may overlook the fact that the PLC is controlling the WHOLE machine, not just the motors. Thus it is often assumed that if a motor is not spinning then the machine is not in RUN mode.
Do you remember this instruction from the LogixPro Exercise 1?
The RUN light will remain energized as long as the system is operating automatically.
I do not believe that your program keeps the RUN light on as instructed, but only when the motor is on or the solenoid is on.
On most machines, the machine can be and often is in RUN mode, even if there are no motors running. It may be simply waiting for something to happen. Does that mean it is inactive? Put another way, because a bus is sitting at rest in the street, would you assume that it would not run over you if you walked in front of it? Not by a long shot. The system is still "running", even though it may not be moving at the moment.
TIP: Think about making Rung 3, Output O:2/2 a "System Run" light. Then think about how it would simplify some things if you moved the Start and Stop functions from Rung 0 to Rung 3. Suddenly when you hit Start, the system goes into RUN mode, output O:2/2 goes on, when you hit Stop, output O:2/2 goes off. Now all you need in Rung 0 (to tell the motor if the machine is in Run Mode or not) is a contact from O:2/2. This one action should simply Rung 0 a bunch.
Another way to simplify Rung 0 is to use only 3 parallel branches, one each for Selector Positions A, B, and C. That is all you should really need, with the O:2/2 contact for "System Run" controlling the Selector Switch branches.