The whole system works on the Producer/Consumer tag model. Input modules Produce tags that the connected controller(s) consume, and the controller Produces tags that the connected output module consumes. In fact any module that has data for another Produces it onto the network for the other module to consume (In this respect the backplane itself is considered to be a network, so that modules can produce/consume between them in the same chassis).
Making tags that are Produced is simply a case of defining them as Produced when they are created. You specify the exact number of consumers of the tag to optimize network bandwidth.
In the other controller define the Consumer tag of the exact same data-type, and I prefer the names of the tags to be the same at both the Producer and Consumer. You then have to specify the producer, and you can only do that if the producer is entered into the I/O configuration "tree" in the consumer's project, so do this first before attempting to define the Consumer tag.
Remember that you can only modify tags offline, so if you want to produce/consume existing tags then they will need modifying, and the whole project downloaded, which of course will stop the controller.
Once set up correctly the tags will automatically transfer, producer to consumer, even if the controllers are in Program mode.