1) Why do you want the memory address?
I'm asking for a colleague working on another project. He asked me this questions, but I didn't know the answer.
2) If you're using optimized DBs (the default), then there is no memory address you can see. The compiler takes care of it all sneaky in the background, but it's faster in runtime and takes up less space (hence "optimized").
Yes, I'm using the default DB settings, so it is optimised.
You can change the DB to be non-optimized (uncheck the box in the DB properties), which means that every tag in the DB gets an assigned address offset, of the form DB1.DW6, or whatever. I don't think you can read that address in runtime in the PLC, but if it exists it will hover over top of the tag name like it does for M/I/Q bits.
ps I'm pretty sure retain status doesn't matter.
Okay - I thought maybe the retained tags might have an allocated memory address carried over from one power-up to the next.