Aliasing
This process can be taken one step further. The program can be set up so nothing has to be changed in logic have to be changed after it has been copied. Aliasing allows this to be done. An Alias is a tag that is a shortcut to another tag. We can create program tags in the program tag database that point to the real world I/O. After a program has been copied, you just need to go into the program tag database, and change the address the aliases point to. Look at this example.
Open the program tags of Section_1. Be sure 'Edit Tags' is selected and create a tag called 'Start'. In the Alias for column, make this tag alias for Local:5:I.Data.0.

Notice the C next to the Input module's address. This means that you are pointing to a controller tag.
Now go back to the MainRoutine, and change the address on the first instruction to the alias name. Notice by default the actual memory location the alias is pointing to appears below the alias name.

Now copy section on and paste it twice again into the main task. That will give us sections 11 and 12.

Go into section 11, and change the Start alias to point to bit 11 of the input module.

Do the same for section 12. Change the start tag to look at bit 12 of the input module.
When bit 11 goes high on the input module, Conveyor 11's start bit will be energized. When Bit 12 goes high on the input module, Conveyor 12's start bit will energize! You can see how aliasing would allow you to quickly develop programs that are very similar.
A Controller tag can be an alias for another controller tag. A program tag can alias another program tag. A program tag can alias a controller tag, but a controller tag CANNOT alias a program tag.
You can alias to several tag levels. The start tag you just created pointed to a bit level tag. But if it would have pointed to the data word instead, we would have to specify the bit number manually in logic. Look at the chart below:
