multiplying with 1 does nothing except make more work for CPU.
that will work but it will give you position value rounded to a millimeter because SIGNAL is an INT type, not a REAL. to send REAL value to PLC, you need to transfer bit-by-bit value from REAL to INT before assigning it to POSXAct for example.
another workaround to preserve at least some of decimal places is to multiply REAL value by some factor (such as 1000.0). then receiving side should of course divide received value by same factor.