TIA Symbol als String übergeben

vollmi

Level-3
Beiträge
5.436
Reaktionspunkte
1.410
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi

Wenn ich einen Baustein habe der z.B. die HW_ID verlangt. Kann ich diese ja als Symbol anknüpfen oder auch absolut angeben.
Funktionieren tut also
Code:
#status := RD_ADDR(LADDR:=[COLOR=#ff0000]"Rack1~Sig_1_DI"[/COLOR], PIADDR => #piaddr, PICount => #picount, PQADDR => #pqaddr, PQCount => #pqcount);

und auch
Code:
#status := RD_ADDR(LADDR:=[COLOR=#ff0000]269,[/COLOR] PIADDR => #piaddr, PICount => #picount, PQADDR => #pqaddr, PQCount => #pqcount);

Wenn ich das jetzt aber dynamisch aus einem DB lesen will dann kriege ich das jetzt nur althergebracht hin, indem ich da einen INT an Laddr anhänge und die ganzzahlige Adresse reinschreibe.

Gibt es eine möglichkeit aus einem WSTRING der das Symbol in Stringform beinhaltet eine Variable abzufüllen die ich dann an LADDR anhängen kann?
Ich will also ein symbol vom typ WSTRING mit Inhalt WSTRING#'"Rack1~Sig_1_DI"' irgendwie an laddr anhängen und die CPU soll das als Symbol interpretieren.

mfG René
 
Hallo René,

meinst du die Aneisung "GetSymbolPath" ? Die leifert dir den Namen der übergebenen Variablen zurück ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
meinst du die Aneisung "GetSymbolPath" ? Die leifert dir den Namen der übergebenen Variablen zurück ...

Ich habe ja den Namen der Variablen. In einem WSTRING. ich hätte diesen Namen gerne einem Baustein zugeführt der z.B. HW_ID erwartet Symbolisch oder als INT (RD_ADDR).

Das ist jetzt kein wichtiges Projekt sondern eher ein reines Interesse Freizeitsprojekt. Ich möchte gerne an einem PANEL in einem STRING EA Feld den Namen eines Moduls eingeben "Rack1~Sig_1_DI" und dann die Werte der Peripherieadressen dieses Moduls ausgeben.

mfG René
 
OK ... jetzt habe ich das verstanden - du brauchst also das genaue Gegenteil des genannten Befehls ...

... den gibt es anscheinend aber nicht ... :(
 
Zuletzt bearbeitet:
Kannst du nicht mithilfe diesen Befehles ne Schleife laufen lassen und die WSTIRNGS verlgleichen? So bekommst du doch was du willst. Theoretisch brauchst du das ja nur einmal initialisieren bzw. dann, wenn der Wert geändert wurde.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... das halte ich nur für sinnvoll, wenn es sich dabei um eine eng begrenzte vorgegebene Anzahl von Variablen handelt.
So, wie ich René kenne, will er aber genau das eben nicht - ich denke, dass soll dann super flexibel sein (und nach Möglichkeit auch schnell).

Gruß
Larry
 
Der Larry kann mich lesen wie ein Buch :)
In erster linie wollte ich ja mal sehen was so möglich ist.
Aber ich sehe für die Funktionen noch nicht wirklich einen Sinnvollen einsatz oder bedarf.
Ich wünsch mir ja schon seit TIA eine möglichkeit Symbolisch auf die Hardware zuzugreifen ohne umwege über Bausteinaufrufe und dergleichen.
Sozusagen ein Slice zugriff auf ein Modul.
"Rack1~Sig_1_DI".%X0 z.B.

Weil seien wir mal ehrlich. Das ist das was uns noch so richtig viel Fleissarbeit abnötigt.
Ich beschrifte 100te Module mit einer Betriebsmittelkennzeichnung. Geb ihnen eine peripherieadresse. Lege ein Symbol in der Symbolliste ein und weise diesem die Hardwareadresse zu.
Klar mit UDT ist die Arbeit weniger geworden. Aber wozu der umweg über die Symbolliste? Das modul hat doch schon ein Symbol. Da macht es doch eigentlich sinn direkt darüber auf die vom Modul beeinhaltende Peripherieadressen zuzugreifen.

mfG René
 
Zurück
Oben