Hi Water,
I've had to deal with this in the past between KUKA and a Siemens PLC. While I'm not incredibly familiar with the Beckhoff PLC, I do think this issue comes up fairly often.
First, your best bet is to define your SIGNAL as a 12-bit. Then set the signal to an INT.
example:
SIGNAL example $OUT[1] TO $OUT[12] ;in config.dat (global variable)
INT int_value_example ;in the program (local variable)
int_value_example = example ;prevents you from altering the signal accidentally, or scaling
In WorkVisual, you can change the way the signals are defined and it'll allow you to switched between a signed INT (-32767 to 32768) and un-signed INT (0 - 65535).
Second, check the manual for your PLC. KUKA handles little endian, while Siemens handles big endian; meaning they send / receive data in different orders.
Thankfully, KUKA is aware that this is an issue. So, in WV you can reverse the order of the bits. Here's and example:
Original signal: 1234 2234 3234 4234
After byte swap: 3234 4234 1234 2234
Check the Workvisual manual (section 8.2.3 Swapping signals (reversing the byte order)). In version 2.4, that's page 52.