Over the years I've developed a numbering system that resembles the AB SLC style addressing. I use this numbering for addressing within the program and also for wire numbers. This is the scheme I use:
- First 2 digits is node number. If it is local IO, these will be 0.
- Next 2 digits will be slot number
- Fifth digit is byte number. Will be 0 for 8 point or less digital cards.
For example:
%IX01050.0
would be a digital input rack node 01, slot 5, bit 0
Another example:
%QW02032 (I actually use %QW2032, but show the leading zero to make it easier to understand)
would be rack node 02, slot 03, and second analog output. Analogs generally use 2 bytes, so the last digit would be 0,2,4, etc
For wire numbering, I leave off the % and X, W, or B. So my wire number would be Q2032
You can see one advantage to this scheme is easy identification of where the address physically resides. Another advantage is this scheme is compatible with ARM based processors such as the CX8090, which only allow even number addresses.
The single disadvantage I have found is if you make changes often and insert cards in the middle of the rack. This will then make your slot numbers no longer line up with the address. Although since there is a 10 byte jump in between slot, you can still maintain consecutive order.