TIA symbolisch auf Variablen zugreifen (per STRING)

-ASDF-

Level-1
Beiträge
235
Reaktionspunkte
8
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forum,

ich möchte über einen STRING, symbolisch auf Variablen in einem optimierten DB zugreifen.

Der DB kann z.B. so aussehen:
AAA :INT;
BBB :INT;
CCC :INT;

Wenn jetzt der STRING den Wert 'BBB' hat will ich auf dieses Variable zugreifen.

Hat hier jemand eine Idee wie man das umsetzt?
 
Du könntest "Variablen-multiplex" projektieren - abhängig von dem Wert im DB eine Indexvariable steuern, welche die Zielvariable auswählt. Um wie viele Variablen geht es denn?

Harald
 
Du könntest "Variablen-multiplex" projektieren - abhängig von dem Wert im DB eine Indexvariable steuern, welche die Zielvariable auswählt. Um wie viele Variablen geht es denn?

Harald

Beim Multiplexen muss ich aber jeder Variable einen Wert(Index) zuweisen. (AAA -> 1, BBB -> 2, etc...)
Das will ich vermeiden.
Die Anzahl an Variablen sollte keine Rolle spielen. In meinem konkreten Fall sind es ca. 150 Variablen (STRUCTs) mit jeweils 64 BYTE.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Einfach nur irgendeinen Text zusammenbasteln und versuchen eine Variable mit diesem Name zu lesen wird vermutlich nicht gehen, weil der Kommunikationstreiber zu jeder symbolischen Variable der S7-1500 für den Zugriff noch eine "magic" ID wissen muß (*). Ich weiß nicht, ob der Siemens-HMI-Kommunikationstreiber die erforderliche ID ohne Projektierung on-the-fly aus der S7-1500 auslesen kann.

(*) habe ich irgendwo gelesen. Das ist vermutlich der Grund, warum nicht-Siemens-Kommunikationstreiber das TIA-Projekt benötigen.

Harald
 
Einfach nur irgendeinen Text zusammenbasteln und versuchen eine Variable mit diesem Name zu lesen wird vermutlich nicht gehen, weil der Kommunikationstreiber zu jeder symbolischen Variable der S7-1500 für den Zugriff noch eine "magic" ID wissen muß (*). Ich weiß nicht, ob der Siemens-HMI-Kommunikationstreiber die erforderliche ID ohne Projektierung on-the-fly aus der S7-1500 auslesen kann.

(*) habe ich irgendwo gelesen. Das ist vermutlich der Grund, warum nicht-Siemens-Kommunikationstreiber das TIA-Projekt benötigen.

Harald

Mit einem Script und den SmartTags lassen sich die Variablennamen mit einem STRING zusammenbasteln und verwenden.
Allerdings funktioniert das ganze nicht in der SPS bzw. ist mir noch keine Möglichkeit bekannt.
 
Ja, so kenne ich das auch. Doch dafür müsstest Du alle 150 PLC-Variablen als HMI-Variablen anlegen. Dann kannst Du in der HMI den Name der HMI-Variablen dynamisch zusammensetzen.
Nun willst Du aber symbolisch auf PLC-Variablen zugreifen, welche der HMI bei der Projektierung nicht bekannt sind. Das kann der HMI/WinCC-Kommunikationstreiber meines Wissens nicht.

Harald
 
Ein anderer Weg wäre, den Name der PLC-Variable im HMI zusammenzusetzen und als STRING zur PLC zu senden und die PLC interpretiert den STRING und greift auf die gewünschte Variable zu. Ich kenne die S7-1500 nur vom sehen, doch ich glaube, die kann das auch nicht. Das müßte man sich wohl als Fallunterscheidung selber programmieren.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Okay, dass ist ja verständlich. Aber unabhängig woher ich einen STRING beschreibe, "muss" es doch einen Weg geben aus diesem STRING einen Variablenzugriff in der SPS zu gestalten.
 
... "muss" es doch einen Weg geben aus diesem STRING einen Variablenzugriff in der SPS zu gestalten.

Warum "muss" es das? Man kann natürlich alles mögliche machen wollen... aber zumindest ich bin kein Freund von solchen "Schweinereien"
Wer soll denn da später in 10 Jahren mal durchblicken?
Aber vielleicht erklärst Du uns den Grund für diese Anforderung? Vielleicht erkenne ich dann auch noch den Grund, warum sowas gehen "muss" ;)

Gruß.
 
Jepp, ich halte das ebenfalls für "Schweinerei", wenn man im PLC-Programm noch nicht mal die Variablennamen ändern darf ohne Angst, daß dann die HMI nicht mehr funktioniert. Oder wenn durch das beliebige Zusammenbasteln von Variablennamen auf Variablen zugegriffen wird, welche nicht für HMI-Zugriffe vorgesehen sind.

Harald
 
Du kannst dir auf der Sps ne switch case anweisung machen, und je nach string einen anderen wert zurückgeben. sich den symbolischen namen zusammenbasteln, und dann auf sie zugreifen geht in der plc nicht.
 
Jepp, ich halte das ebenfalls für "Schweinerei", wenn man im PLC-Programm noch nicht mal die Variablennamen ändern darf ohne Angst, daß dann die HMI nicht mehr funktioniert.

Hätte aber doch den vorteil, das man Variablen reinfummeln kann wie man lustig ist und der Zugriff weiterhin funktioniert obwohl sich die Absolutadressen verschieben, ohne das man HMI nachladen muss. Da wär dann auf einmal auch ein Instanzzugriff nicht mehr so böse.

Also ich wünschte mir schon einen echt Symbolischen zugriff von HMI oder auch von anderen SPSen aus.

mfG René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich wünschte mir schon einen echt Symbolischen zugriff von HMI oder auch von anderen SPSen aus.

Dann könnte man ja wieder mit Fremdvisusystemen auf symbolische (optimierte) DBs zugreifen, und genau das wollte ja Siemens mit dieser ganzen Geschichte verhindern... Also selbst wenns theoretisch irgendwie gehen würde, wird Siemens da sicherlich nen Riegel vorgeschoben haben...

Aber solange kein Kunde von mir unbedingt optimierte DBs für die Visukopplung vorschreibt, hab ich bisher kein Problem mit nichtoptimierten DBs...

Wie ich früher schon mal schrieb, ich bevorzuge eine klar definierte und am Anfang des Projektes abgestimmte Schnittstelle zwischen Visu und SPS. (ausser bei PCS7 bzw. CFC mit ASOS-Übersetzten, aber davon ist TIA ja noch weit entfernt.)

Also für mich eher alles politische/komerzielle Argumente, eninfacher und übersichtlicher wird dadurch garnix...

Gruß.
 
das man Variablen reinfummeln kann wie man lustig ist
Ja, für einen Programmierer, der seinen Code sauber dokumentiert, wäre das wohl eine feine Sache.

Meine Erfahrung ist allerdings, daß auch schon ohne Symbolik von den vielen technisch ungenügend gebildeten HMI-"Designern" ohne dokumentierte Schnittstelle völlig planlos "wie man lustig ist" auf PLC-Variablen zugegriffen wird. Denn sie wissen nicht was sie tun ...
Wenn solche Zugriffe (ohne Kontrolle der Datentypen) aus lauter Faulheit dann auch noch hinter Zusammenbasteln von Variablennamen versteckt werden, dann hätte man gar keine Chance mehr, (fehlerhafte) HMI-Zugriffe zu finden.

Harald
 
Danke für die Kritik.
Hilft mir bei der Lösung leider nicht weiter.
Ich versuche euch das Problem später mal genauer zu schildern.

auch wenn ich noch drauf warte ;)

In der 1500 gibt's ne Anweisung "GetSymbolName"...

wenn Zykluszeit keine Rolle spielt: ne schleife in der SPS schreiben, welche den DB durchrattert, wo die Visu was lesen darf. Die rückgelieferte Symbolik mit dem String von der Visu vergleichen. Wenn gleich dann Wert an Visu schicken, wenn nicht Schleife weiter bearbeiten oder Ende...

Hab "GetSymbolName" nur grad im TIA gesehn, aber nie angewendet, also keine Gewähr, dass es funktioniert...

Gruß.

PS: wobei ich mir grad überlege, das mit der Schleife wird nicht funktionieren, da man dafür ja absolut durchpointern müsste, und dann macht das ja irgendwie keinen Sinn mehr...
 
Zuletzt bearbeitet:
Zurück
Oben