In addition to RoboDK, ArtiMinds and Octopuz are also offline simulation software for UR. You can find more information about these products on the UR+ webpage: https://www.universal-robots.com/plus/software/.
Mathematically coupled: The 7th axis is part of the robot's motion model, influencing the speed and direction of TCP motion. This requires that the kinematic relationship of the 7th axis to $ROBROOT be well-calibrated. This allows a rail-mounted robot to move along the rail while continuously welding a seam, or allows the robot to "follow" a part that is rotating on a 7th-axis turntable while continuously welding on it non-stop.
If the 7th axis is not mathematically coupled, this is not possible. However, time synchronous motion is still possible -- if the 7th axis is commanded to move as part of a PTP motion of A1-A6, then all 7 axes will begin and end their motion at the same time -- if the 7th axis is faster than A1-A6, it will slow down to match the speed of the slowest axis. If E1 is slower than A1-A6, then A1-A6 will slow down to let E1 keep up.
However, even if the E1 axis is synchronous, without mathematical coupling, any LIN or CIRC motion will not be able to take E1's motion into account. So a LIN motion that drives A1-A6 and E1 may result in a TCP motion that looks more like a PTP move.
Asynchronous external axes are usually decoupled from A1-A6 motion, and can be moved by separate commands (ASYPTP). This makes it possible to command an external axis to do something that has no effect on A1-A6 motion, and is unaffected by A1-A6 motion. In effect, the external axis acts somewhat as if it were another, independent machine. A PTP motion driving A1-A6, and an ASYPTP motion driving E1, can execute in parallel but are "invisible" to each other, running independently and at their own speed and timing. Sometimes this is useful, sometimes it can create serious collision risks if you're not careful.
In some configurations, an asynchronous external axis can be controlled by the SPS instead of the main interpreter, and can become an almost entirely separate machine, with no interaction with the main interpreter unless you add handshaking between the programs.
Thank you for the detailed explanation! Is there an official document from KUKA that contains the instructions on how to program additional axes? I couldn't find any on KUKA's official website.