TIA TIA S7-1500 kann man symbolisch ein Strukturelement adressieren?

vollmi

Level-3
Beiträge
5.430
Reaktionspunkte
1.405
Zuviel Werbung?
-> Hier kostenlos registrieren
In der S7-1500 ist ja neu, dass die Symbole mit auf die CPU geladen werden. Jetzt frage ich mich, ist es möglich einem Baustein mitzugeben auf welches Symbol er zugreifen soll?

Also ich hab an der Schnittstelle eines bausteins eine Struktur. Darin sind die Elemente "Status" und "Objekt"

Jetzt möchte ich den Baustein zweimal aufrufen einmal soll der Baustein auf das Element Status zugreifen. Das andere Mal auf das Element "Objekt"

z.B. So.
Code:
Elementinhalt := Baustein(IN := #Struktur, Zugriff := "Status")
Elementinhalt := Baustein(IN := #Struktur, Zugriff := "Objekt")

mfG René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe eine Struktur welche sich in einem Array befindet. Der Baustein soll nun aus mehreren Elementen den Inhalt auslesen und verarbeiten. Die Verarbeitung ist bei jedem dieser elemente gleich. Aber das Array ist halt recht gross.

Daher möchte ich den Baustein so oft aufrufen wie es unterschiedliche elemente gibt aber bei jedem aufruf das gesamte Array an INOUT anhängen.
 
Vielleicht habe ich es noch nicht verstanden.Aber würde es dann nicht Sinn machen eine Array-Nummer in den Baustein zu geben und am Ausgang gibt er dir Status und Objekt raus in Abhängigkeit von dieser Nummer.:)
 
nö dann hätte ich ja eben das wass ich nicht will, die gesamte Bearbeitung von status und objekt doppelt in dem baustein drin. Da kommen über die schnittstelle doch noch etliche Parameter dazu. Die Verarbeitung von status und objekt sind also nicht direkt trivial darum hätte ich das gerne nur ein einziges mal in einen Baustein gepackt.

mfG René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich habe nur Funktionen mit 2 dimensionalen Arrays.Das will ich aber der Übung halber mal auf Strukturen ummünzen. Die erste Dimmension wäre dann so eine Art Nummer des Objektes und die zweite die Daten als Struktur.
 
Hallo Vollmi,

du willst was? Eine Funktion, die eine Struktur und den Namen einer Variablen in der Struktur übergeben bekommt, um dann in der Funktion den Wert der Variablen zu bekommen?
Also nehmen wir mal an, dass die Variable vom Typ INT ist.

Code:
FUNCTION GET_VAR_VALUE : INT
    VAR_IN 
        x : einUDT
        y : STRING
    BEGIN
        GET_VAR := x.y; // schön wäre es, aber das geht nicht
END_FUNCTION


Nein, das geht nicht. Sohnemann redet von Reflexion -- C# und anderes in .Net können sowas. Java basiert auf einer Virtuellen maschine, die kann sowas auch. Und Scriptsprachen interpretieren alles, die also auch.
Aber echte Compiler können das nicht. Die sorgen dafür, dass der Assembler nur das enthält, was echt nötig ist. Und Runtime-Typeinfo machen sie nur wenn du sie dazu zwingst.

Siemens hat allerdings mit GetSymbolName, GetInstanceName, GetSymbolPath und GetInstancePath irgendwas drin, was Symbolinformation im Programm zugänglich macht. Das arbeitet aber in die andere Richtung. Und kostet auch einiges an Arbeitsspeicher im Aufrufer. Aber ein GetValueOfSymbol gibt es nicht. Wenn es das gäbe, dann könnte deine Funktion so aussehen:

Code:
FUNCTION GET_VAR_VALUE : VARIANT
    VAR_IN 
        x : STRING
        y : STRING
    BEGIN
        GET_VAR_VALUE := GetValueOfSymbol( sym := CONCAT( x, y ));
END_FUNCTION

Aber wie gesagt, dieser Traum ist eine geplatzte Seifenblase.

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