TIA Arbeiten mit Zeigern

Stefan1994

Level-2
Beiträge
17
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen, ich habe schon einiges über den Typ Variant gelesen, werde daraus aber nicht schlau.

Habt ihr vielleicht ein Beispiel für mich wie ich damit umgehe und den Zeiger einsetze.

Vielen Dank.
 
Was möchtest du denn damit machen? Es gibt viele verschiedene Möglichkeiten, besonderes mit der neuen Referenz Funktion (TIA v15).
 
Einfach z.B. mit dem Varaint von einem DB auf einen anderen Zielen.
Das geht nicht mit Variant. Variant ist für Zeiger-Anwendungen eigentlich nutzlos, weil man ihn nicht verändern/manipulieren kann und auch nicht für Zeiger-Arithmetik verwenden kann. Variant ist dafür gedacht, feste Adressen bzw. Verweise und eine Datentyp-Codierung von Variablen/Objekten unterschiedlichster Datentypen aufzunehmen (auch von Variablen welche offiziell gar keine Adresse haben, weil sie z.B. in "optimiertem" Speicher liegen), um damit generische/universelle Übergabeparameter in Bausteinschnittstellen realisieren zu können.

Wenn Du von einer Adresse die DB-Nummer variieren willst dann schau Dir mal die Anweisungen PEEK/POKE an. Heutzutage verwendet man für indirekte Adressierung von Variablen aber wo immer möglich PLC-Datentypen: UDTs und UDT-Arrays. Indizierbare DB-Nummern verwendet man möglichst nicht mehr, weil man für Fehlerminimierung durchgängig symbolisch adressieren will.

Harald
 
Hallo Harald , vielen Dank für die ausführliche Antwort.

Ich werde mich damit mal vertraut machen.

PEEK/POKE sagt mir etwas.

Also ist der Variant kein Zeiger?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Siemens schreibt daß Variant ein Zeiger ist, weil er einen Verweis auf ein Objekt enthält. Man kann den Verweis aber nicht verwenden um damit Zeiger-typisch irgendwelche Adressberechnungen anzustellen.

Harald
 
PEEK and POKE funktionieren aber nur mit nicht "optimierten" DB.
Ansonssten kann man zum "variablen" Umkopieren von einem DB in den anderen case verwenden und dann "feste" symbolische Adressierung.
Das schränkt die Möglichkeiten arg ein.
An der Stelle hakt es leider bei den neuen PLC, wir haben unsere Programmierweise entsprechend umgestellt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Man könnte aber per "Serialize" / "Deserialize" in dem Fall verwenden.

Mich würde ein Beispiel interessieren.

DBx.Struktur_z in DBy.Struktur_z kopieren, wobei y variabel sein soll. Hab ich bisher noch keine Lösung für optimierte DB.
 
Zurück
Oben