There's some additional complexity here. First, in order to transfer Reals, you have to have a means to position the decimal point properly. Then, you have to deal with polarity.
For the decimal point, the simplest method is to multiply by 10^x on the transmitting side, to move the decimal point x places to the right -- in essence, converting the REAL into an INT (for a certain number of significant digits). Then, on the receiving end, you have to divide by 10^x before using the value. And, of course, you have to ensure that x is the same on both ends.
Handling +/- is more tricky. First, you have to remember this: KRL treats a multi-bit SIGNAL declaration as an unsigned INT, unless the SIGNAL is 32 bits in size -- then, and only then, does KRL treat it as a signed INT.
So, let's assume a simplistic 16-bit signed integer. If the 16th bit is the sign bit, then you have 15 bits of resolution -- your value can range from +32767 down to -32768. But the KUKA will only see it as ranging from 0 to +65535.
So, simple approach: in your KRL program, receive the 16-bit input, mask off the sign bit, divide by 10^x to get your decimal point back in the right location, then negate the resulting value if the sign bit was True.
DECL INT TempInt
DECL REAL TempReal, FinalX
SIGNAL CameraInputX $IN[1] to $IN[16]
TempInt = CameraInputX B_AND 'H7FFF' ; mask off the sign bit
TempReal = TempInt / 100 ; move decimal place 2 places to the left -- adjust as needed
IF CameraInputX B_AND 'H8000' THEN ; check if Sign bit was set
FinalX = 0 - TempReal ; sign bit was True, hence value was negative
ELSE
FinalX = TempReal ; sign bit was false, value was positive
ENDIF
That's a very simplistic implementation, and can suffer from some rounding error on the lower digits, but it's worked for me in the past. However, it will depend on how the transmitting device is formatting the REAL value. If it's using IEEE-754 encoding, for example, this trick won't work. You'll need to do some research into exactly how your camera encodes it data for transmission.