I like the Bestune version C for the inner loop which is the position loop. The problem I see is that most PLC PID have their time constants in minutes instead of milliseconds.
For the outer loop, version C may is probably the best but now one must think in terms of distance constants instead of time constants.
Fortunately the Contrologix has compute blocks or structured text.
BTW, this application has got me thinking about how we could do this application on our controller. Currently our PIDs are time based. We would also have to use 'compute blocks'. In the end this may be the best solution because in the over 20 years we have been making motion controllers, this is the first time I have come across an application where a PID needs to executed as a function of distance.
Note, Bestune makes it very clear that they think version C is the best. I agree IF the SP is changed in steps or erratically by an outer loop. If someone is interested in why one would want to use version A or B then post a new thread with Advanced Control in the title.