Step 7 Kann man einen Any Pointer Symbolisch Adressieren?

erzteufele

Level-2
Beiträge
740
Reaktionspunkte
167
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin Zusammen,

Habe einen Variablen Any Pointer. Nun habe ich in der Deklaration vom Any Pointer die Startadresse dbx120.0 stehen. Dies ist der Anfang von einer UDT.
Da ich SymbolischProgrammiere... Kann ich Irgendwie vorher das Symbol laden und daraus mir die Adresse klauen das es eben nicht statisch ist?
Habe überlegt evnt. das erste Byte von der UDT auf das ar1 zu laden und die Deklaration vom Any Pointer dann als Startadresse zu übergeben. Ist mir aber erst heute Nacht eingefallen und habe es noch nicht Probiert da ich heute nicht arbeiten bin :D Trotsdem gribbelt es mich gerade ob es so funktionieren könnte?

Grüße erzi
 
Wenn du hier in Wirklichkeit einen UDT übergibst ... was hält dich davon ab, statt eines ANY-Pointers die IN-Variable im Typ des UDT's zu definieren ? Somit hättest du deinen Voll-symbolischen Zugriff auf alle Unter-Elemente. Bei dem ANY wird dir das nicht gelingen, da diese Informationen erst zur Laufzeit entsteht ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey Larry, ich glaube das geht in meinem fall nicht.
also ich habe in der Anlage 12 Servo´s sind alle gleich von den i/o´s deswegen udt d.h. in einem d.b. habe ich für die 12 jeweils den udt zugeordnet.
für die Anzeige im Panel habe ich ebenfals eine udt eingrichtet. nun schalte ich mit einem Auswahlliste Servo 1-12 die udt vom servo auf die anzeige des panel´s. quasi multiplexen.
das ganze habe ich die ganze zeit komplett mit blkmov gemacht was den baustein recht groß werden lässt, da ich ja 12 mal den blkmov im programm stehen hab...
wenn ich nun den anypointer im temp definiere und diesen dann entsprechend füttere also 1-12 nur die dementsprechende adresse gebe muss ich nurnoch einmal den blkmov verwenden -> baustein kleiner.
nur hab ich beim any definieren eine statische adresse drin... beim blkmov kann ich auch das symbol vom udt im datenbaustein angeben

ich hoffe ich habe es nicht zu kompliziert beschrieben :roll:
 
Hallo Erzteufele,

leider er habe ich deinen Post erst jetzt gesehen wie ich es sehe Programmierst du auf einer S7-300 /400.
Wäre es evtl eine Idee für dich die Daten in einem Array abzulegen genauer Array of Udt wo du geschrieben hast? Dann könntest du ganz Easy in Scl auf das Array voll Symbolisch zugreifen und dies auf deinen Visu Udt Schieben.
wenn du in Tia eine 1?00 CPU hast geht das sogar mit einer normalen Move Box.

mit freundlichen Grüßen tia
 
Entweder löse ich das mit einem Array of UDT oder wenn ich die UDT direkt auf die EAs lege, dann gibt es eben mit einem Case.
Bei 12 Achsen ist dies auch kein Aufwand.

Gruß
Blockmove
 
Wenn du ein Array of UDT anlegst, kannst du doch gleich direkt am Panel mit Multiplexvariablen arbeiten. Dann benötigst du in der SPS überhaupt keinen extra Code.
 
vielen dank für die Ideen!!! scl mag ich nicht in der sps haben wegen des mangelden beobachten^^ dann versuche ich mich mal an dem array of UDT
 
Zurück
Oben