The COP instruction is more complex than it may at first seem, especially when working with UDT's, even more so when working with UDT's that are arrays or nested UDT's.
First thing to know is the COP is will copy byte for byte from source to destination. The source/destination data types don't really matter. Create a STRING and a DINT array, copy the string tag into the DINT array and see what happens.
The second thing that is important to understand is the length. It's easy to get this wrong. This tells the COP how many bytes to get from the source, based on the size of the destination type. So if your destination type is 88 bytes (STRING), your length is 2, it is going to try to copy 176 bytes from the source to the destination. If you are working with nested UDT's or UDT arrays, funny stuff can happen to adjacent data if you get the length wrong.