I am mystified as to what serialize/deserialize actually do.
It certainly looks like a complex way to get the same thing done.
Does serialize/deserialize take into account that the data gets shifted 1 byte in the middle of the structure ?
In the Siemens FAQ, the example merely shows data of different type but same size (WORD - INT).
For what I've used them for, Serialize/Deserialize take a UDT/Struct, and add it to an array (usually an array of bytes?), or remove that struct from the array. This is useful if you want to put a couple UDTs in one long array to send via TSEND.
HOWEVER, there's no magic there. It is literally taking the data and inserting it into the buffer, or removing data from the buffer and copying it into the UDT. If there are gaps in the UDT, it doesn't magically fix the data to make it fit. It assumes the data in the array already fits the UDT you want.
In a way, the commands are similar to the pitfalls of manually switching between symbolic and absolute programming.