TIA Variablen DB komplett kopieren

TheRealVash

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag,

seit gestern "darf" ich zum ersten mal ein kleines Projekt auf einer 1500er realisieren und hätten dazu eine Frage bezüglich der Portierung einer alte Funktionalität auf die 1500er.

Gegeben ist:
-DB700 (abgeleitet vom Typ UDT_X)
-DB801-810 (abgeleitet vom Typ UDT_X)

Aufgabe:
Ein DB soll komplett in einen anderen geschoben werden, z.B. 804->800

Alte Lösung:
Über einen in AWL geschrieben FC werden zwei Anypointer generiert (Parameter: DB Nummer, Länge des DBs) und der Inhalt von einem in den anderen mit BLKMOV übertragen.

1500er:
Die DBs sind jetzt als "optimierten Bausteine" eingestellt. Ich habe rumprobiert aber bisher keine richtige Lösung gefunden. Anbei ist ein Bild mit dem MOVE_BLK_VARIANT, nur hier wären die Quell/Ziel DBs konstant und nicht dynamisch wie gefordert.

Gibt es hierfür eine einfache elegante Lösung? Danke schon mal! :)
 

Anhänge

  • tia13.jpg
    tia13.jpg
    32,8 KB · Aufrufe: 89
Hier mal ein Beispiel, wie ich das umgesetzt habe (nicht optimierte DB). #8
Der restliche Thread bringt dich aber evtl. auch noch weiter.
Suche mal im Forum nach "Variant".
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

wenn du aus UDT abgeleitete Bausteine oder Strukturen daraus Kopieren willst, dann genügt der normale MOVE Befehl.


Siehe Bild. Im Netzwerk 1 habe ich den Datenbaustein_1 auf Datenbaustein_2 kopiert. Beide sind mit den gleichen UDT erstellt worden.

Im Netzwerk 2 und 3 ist ein Beispiel mit MOVE_BLK_VARIANT. In diesen werden 36 Werkzeugträger im Kreis geschoben.


Ich habe früher auch viel über Pointer adressiert. Aber in meinen jetzigen 1500 Projekten kann man komplett auf Pointer verzichten.
Wenn man ohne Strukturen einmal was Kopieren muss hilft der Befehl SERIALIZE bzw. DESERIALIZE weiter.

mfg Harald

Kopi.jpg
 
@Ralle: Danke für den Link, aber da wir wollen komplett mit optimierten DBs arbeiten.

@Funky: Danke für den Tipp mit dem MOVE :)

Aktuell sieht es folgendermaßen aus:copy.jpg

Das Problem ist aktuell, dass man für jeden DB einen separaten Pfad braucht (3x: Load/Save/Delete).

Die schönere Lösung (Hat durch die Anypointer in der 300 funktioniert) wäre eine automatisierte Berechnung des Quell bzw. ZielDBs in z.B. einem FC. Hättest du dazu noch einen Lösungsvorschlag?
 
@Ralle: Danke für den Link, aber da wir wollen komplett mit optimierten DBs arbeiten.

@Funky: Danke für den Tipp mit dem MOVE :)

Aktuell sieht es folgendermaßen aus:Anhang anzeigen 31379

Das Problem ist aktuell, dass man für jeden DB einen separaten Pfad braucht (3x: Load/Save/Delete).

Die schönere Lösung (Hat durch die Anypointer in der 300 funktioniert) wäre eine automatisierte Berechnung des Quell bzw. ZielDBs in z.B. einem FC. Hättest du dazu noch einen Lösungsvorschlag?

Das ist eines der großen Mankos von TIA, das geht m.E. nicht mit optimierten DB. Daher mein obiger Post.
Du kannst alles in einem DB machen und ARRAY von UDT nutzen, aber die DB-Nummer ändern, dazu muß man dann Zeiger verbiegen --> optimierter DB adé ...
 
Zurück
Oben