Sind die zu kopierenden Daten jedes mal von einem anderen PLC-Datentyp oder Struktur?
Wenn ja, und Du es so allgemein wie möglich halten willst, sehe ich nur die Möglichkeit die Daten per Variant zu übergeben und dann per Serialize ein Array of Byte zu erzeugen. Dieses Array deklarierst Du als temp. Die Länge solltest Du so groß wählen, wie die Daten sind. Ist das Array zu groß, werden die Quelldaten trotzdem kopiert. Musst halt abwägen wie groß die Daten max sind. Wenn 1. Element der Datenstruktur ein String ist, steht aktuelle Stringlänge im Byte 0 des tem Array of Byte. Dann weisst ja, wie viele Bytes davon Du als String auswerten musst.... Um dann alle Daten komplett in die Zieldatenstruktur zu kopieren, kann mittels Deserialize das Array of Byte in die Zieldaten kopiert werden.... Serialize und Deserialzebesitzen zusätzlich Diagnosestatus. Damit kannst entsprechend reagieren, wenn Daten zu klein oder zu groß sind. Prinzipiell solltest aber das temp Array of Byte zu groß wählen, dann sollte Alles so klappen wie Du es willst.
Weitere Kriterien wären:
Soll symbolisch rein programmiert werden, optimiert?
Ist AWL / Any Pointer "erlaubt"?
Sonstige Vorgaben, Styleguides etc...?
Sollte es rein symbolisch, optimiert, SCL, ohne Any etc. sein, ist obige Beschreibung die einzigste mir bekannte Möglichkeit. Mir wäre auch nicht bekannt, dass es der Variant Poiunter hergibt, auf dessen Elemente einzeln zuzugreifen....
Ist immer die Frage, ob sowas Sinn macht? Ansonsten, wenn die Anzahl der Datestrukturen nicht allzu groß ist, wäre vlt. eine Ausimplementierung mit den einzelenen Datentypen sinnvoller. Wie gesagt, diese Serialize und Deserialize Anweisungen sind laufzeittechnisch mehr als nicht optimal.