TIA Struct (variabel) in Struct kopieren

kliebisch.m

Level-1
Beiträge
120
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

gibt es etwas, womit man einen Struct in einen Datenbaustein in einen anderen Struct eines anderen Datenbaustein kopieren kann.
Habe schon versucht, in SCL dies zu machen (mit Input String, DB_Block unt INT), hat aber nicht funktioniert.

Danke
 
Hallo,

am besten du definierst einen Datentyp (bei TIA unter 'PLC-Datentypen'), den du dann in beiden Bausteinen verwendest.
Dann kannst du in SCL direkt per Intellisense den ganzen Block auswählen und kopieren.

//Jörg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi

einen Datentyp definieren

in beiden DB diesen verwenden

derDB1
var1 : myType

derDB2
var3 : myType


und dann einfach zuweisen

"derDB2".var3 := "derDB1".var1


Wer viel tippen will, kann auch in den beiden DB zwei völlig gleich aufgebaute Strukturen aufbauen. Dann klappt das auch. Bei jeder Änderung fällt das aber auseinander.


'n schönen Tach auch
HB
 
Dein Bild ist sehr interessant...
Auf dem Bild erkenne ich einen FC ? Richtig?
Der "Temp"-Bereich bleibt immer nur solange gültig, wie gerade der FC aufgerufen wird.

Ich nehme mal an, dass #DB_nummer und #DB_nummer_2 jeweils Instanz-DBs sind? Dann kann das auch nicht funktionieren.

Poste bitte drei Bilder:
1. Den Aufruf des FCs
2. Struktur von DB 1
3. Struktur von DB 2
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute, hallo shutdown_TIA12,

der scl-Baustein vom Bild soll folgendes machen:

Ich habe Erleuterungen:
Nummer von DB1: (z.B. 100), Nummer nach DB: (z.B. 101).
Hier sind jeweils in den DB's die selben Struct'e angelegt mit selben Namen, dem ich mit einem String an den Eingangsparametern gebe.

Anhand des Stringes soll jetzt das Programm von DB 1 nach DB 2 den Struct kopieren.
Daher sind beide #DB_nummer und Name Eingangsparameter!

Danke der Hilfe
 
Hab mal schnell im OB1 ein Netzwerk mit MOVE erstellt ... und zwei DBs.
Mein PLC-Datentyp mit den Namen "Block_DB" habe ich selbst erstellt.
Und hier die Simulationsergebnisse:

vorher:

Capture1.jpg

nachher:
Capture2.jpg
 
Hallo und danke shutdown,

vielleicht hast du mich falsch verstanden.

Ich wollte keinen String kopieren, sondern einen kompletten Struct von einem Datenbaustein in einen anderen.

Gruß
 
Hallo kliebisch.m
Hallo und danke der Antworten.

Leider bekomme ich das nicht zum laufen. Vielleicht hat jemand die Lösung:

Das wundert mich nicht.

Ein Input vom Typ Block_DB ist faktisch nur eine DB-Nummer. Wie soll ein Compiler wissen welchen Datentyp der DB hat, der da rein kommen wird.
Dann der Versuch den Namen einer Struktur einer String-Variable zuzuweisen. Nett und völlig sinnlos.
Und schließlich der Zugriff mit #DB_nummer.#Temp_1
So kann man dem Compiler nicht beibringen welchen Datentypen dein DB hat.

Wenn du 1200 oder 1500 verwendest, dann klappt das in etwa so:
FUNCTION dings
VAR_INPUT
bin_laden : Bool;
quelle : "myUDT";
END_VAR
VAR_INOUT​
ziel : "myUDT";​
END_VAR

if #bin_laden then​
ziel := quelle;


und irgendwo dann
dings( bin_laden := true, quelle := "derEineDB", ziel := "derAndereDB" )

und keine Angst, hier werden nur Referenzen an dings übergeben

'n schönen Tach auch
HB
 
Zuletzt bearbeitet:
Zurück
Oben