Your comments

if just teaching robot programming basics , can try this

https://youtu.be/iV_6L31MtdM

https://www.hyundai-robotics.com/english/customer/customer4_view.html?no=94

https://www.hyundai-robotics.com/english/include/downloaddoc.html?docid=253

codesys kinimatik is not open source and program planer for linear movment is not clear .. but can try codesys example with codesys win 64 softmotion runtime, it limit for 2working hour, then need restarting. 

or can implement code from github in unity 

trying to add one ethercat axis, (in project it is virtual, working good to) 

- connected by Modbus TCP. Unity as Slave with 6 float registers for Axis angels

- yes inverse kinematics calculated by codesys, raspbery pi3, 10us cycle. Not sure about DH parameters for robot , looks like ABB IRB2600 , on X , Y, Z moving calculation for axies is correct. 


https://cloud.mail.ru/public/NX8a/PooBj2PGp - here is unity runtime with robot. 

https://cloud.mail.ru/public/VKLn/hyHuLNvhc - it is project archive for codesys 3.5.16, need change ip for modbus master to unity PC address. 

And in source script need add

newrigid.mass = Mass;
newrigid.interpolation = RigidbodyInterpolation.Interpolate;

some like this working

void Start()
{
_distancepos = transform.position;
..........

if (true) //speed != 0)
{
mov = (transform.position - _distancepos) + TransportDirection * Time.fixedDeltaTime * speed *
Game4AutomationController.SpeedOverride /
Game4AutomationController.Scale;
_rigidbody.position = (_rigidbody.position - mov);
_rigidbody.MovePosition(_rigidbody.position + mov);
_distancepos = transform.position;
}

Here in transport surface need add absolute moving of transport surface byself + Transportdirection moving (in script only transport direction, and no moving of surface byself , rotation and linear) Have no idea yet how add surface object moving. Any idea?

if (speed != 0)
{
mov = TransportDirection * Time.fixedDeltaTime * speed *
Game4AutomationController.SpeedOverride /
Game4AutomationController.Scale;
_rigidbody.position = (_rigidbody.position - mov);
_rigidbody.MovePosition(_rigidbody.position + mov);
}

if (speed == 0)
{
mov = TransportDirection * Time.fixedDeltaTime * 100 *
Game4AutomationController.SpeedOverride /
Game4AutomationController.Scale;
_rigidbody.position = (_rigidbody.position - mov);
_rigidbody.MovePosition(_rigidbody.position + mov);
}

I send on email. it is same problem on DemoChain scen,Cans not moving in horisontal direction..