Hallo, ich habe eine DB6 in dem meine Var von der Visu liegen. Dann habe ich eine DB5 in dem sind die Var die ich im Programm verwenden möchte. Ich möchte im OB1 am Anfang eine Funktion einbauen, die die Daten aus OB6 in OB5 kopiert. So dass ich kann nur noch im Programm mit OB5 arbeite.
Für TIA S7-1x00:
Wenn beides z.B. auf dem gleichen UDT basiert, kann man es in SCL einfach per := zuweisen.
Zwei gleiche Struct ebenso.
Sorry ich kann dir gerade nicht richtig folgen.
Auch wenn Du mittlerweile AWL vorgegeben hast und Dir noch weitere Probleme bei Deinem Vorhaben aufgezeigt wurden, möchte ich zumindest erklären, wovon ich gesprochen habe.
(Ich geh' einfach mal davon aus, dass "UDT" das eigentliche Folgen-Problem darstellt.)
Du hast jetzt vermutlich alle Deine Variablen 1x im DB5, 1x im DB6 (DB5 kopiert?) und 1x im HMI angelegt, oder?
Und wegen des Komplett-Kopierens der DBs musst Du auch immer dafür sorgen, dass DB5 und DB6 genau gleich sind.
Z.B. wenn Du zukünftig weitere Variablen benötigst, diese an der genau gleichen Stelle in der gleichen Reihenfolge einfügen.
Es besteht die Möglichkeit, statt des ersten DBs einen PLC-Datentypen (in S7 Classic = UDT) anzulegen, der den Aufbau des späteren DBs hat.
Wenn man das nachträglich machen möchte, kann man die Variablen aus dem DB kopieren und in den UDT einfügen.
Als Beispiel der UDT für meinen (globalen) DB für's Spiel "4 gewinnt" (gdb4):
Jetzt kann man einen DB erstellen, bei dem man als Typ statt "global" den erstellten UDT auswählt:
Der DB hat immer genau den Aufbau, den man im UDT festlegt/ändert.
Im DB selbst kann man dann keine Änderungen machen (außer Remanenz und Startwerte), die werden nur im UDT vorgenommen.
Aus dem UDT können auch mehrere DBs erstellt werden.
Erstellt man noch einen weiteren DB aus diesem UDT, haben alle DBs den genau gleichen Aufbau und sind auch als komplette Variable ansprechbar.
Dies ermöglicht in SCL das Kopieren per einfacher Zuweisung:
Schließlich sei erwähnt, dass durch den UDT der DB auch im HMI in einem Rutsch deklariert werden kann (anstatt x Einzelvariablen):
Alle im UDT enthaltenen Variablen sind automatisch im HMI bekannt, wenn der DB als Variable ausgewählt wird.
(Globale DBs, die nicht aus einem UDT erstellt wurden, können nicht als HMI-Variable ausgewählt werden.)
Änderungen im UDT (eine Stelle) wirken sich auf die daraus erstellten DBs und die daraus bestehenden Variablendeklaration(en) im HMI aus.
Es benötigt nur ein Übersetzen von PLC und HMI.
Abschließend ein "Nachteil":
Änderungen am UDT erfordern in der Regel eine Neuinitialisierung der daraus bestehenden DBs, was zum Verlust der Aktualdaten führt! (Wäre bei direkter Änderung eines DBs aber meist auch so.)