TIA Indirekter Zugriff mit String als Symbolname auf optimierten Datenbaustein

Stichrian

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
Bei der Umstellung von der S7-300 auf die 1500er Steuerung möchte ich möglichst alle Vorteile der optimierten Datenbausteine nutzen.
Wir haben bisher für Diagnose Zwecke eine Funktion im HMI hinterlegt, mit der alle Daten aus Datenbausteinen einegsehen werden können.
Eingabe der DB-Nummer im HMI, Eingabe des DBW und Ausgabe des DB.DBX , DB.DBB und DB.DBW Wertes im HMI.
Bei der Umstellung auf optimierte Datenbausteine, kann ich aber nicht mehr absolut auf diese Werte zugreifen.
Ich würde jetzt gerne einen Workaround aufbauen, in dem ich im HMI einen String eingebe, diesen dann in der Steuerung auf eine Art als symbolischen Namen abspeicher und mir dann den Wert des DB.Symbolname ausgebe.
Hat jmd eine Idee wie man das machen kann, oder ist diese Idee absolut abwegig?

Danke für eure Hilfe

Besten Gruß
Stichrian
 
Die Idee ist nicht so furchtbar abwegig ... nur meiner Ansicht nach nicht praktikable.
Die SPS (ob nun mit optimierten Bausteinen oder nicht) greift immer noch absolut auf die Adressen zu. Wenn du also eine Art Reflektion (wie bei .Net) machen willst so müßtest du ein Programmteil dazwischen haben, dass dem String immer wieder die tatsächliche SPS-Adresse zuordnet. Das braucht auf jeden Fall CPU-Leistung. Darüber hinaus würden Änderungen im DB nicht vom System automatisch mitgemacht werden sondern die müßtest du selber machen (irgendwie).
Die Visu macht so etwas in der Art - die hat aber auch die Resourcen dafür (bei TIA allerdings mehr oder weniger).

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Auch meine Meinung: das ist nicht praktikabel. Außerdem halte ich so eine "Status Var"-Diagnose für praktisch nutzlos.

Man müsste in der PLC für jede Variable, auf die man vom HMI zugreifen will, einen Stringvergleich programmieren.
Oder im HMI jede gewünschte PLC-Variable als HMI-Variable projektieren, dann könnte man im HMI den Name der Variablen eingeben oder zusammensetzen.

Bedenke: die HMI-Projektierung greift auf HMI-Variablen zu und die Verbindungstabelle HMI-Variable zu PLC-Variable entsteht nicht für alle Variablen automatisch sondern muß für jede gewünschte Variable einmal projektiert werden. Und muß im HMI nachgeführt werden, wenn sich in der PLC der Name oder die Adresse ändert.

PS: Du kannst mal testen, ob die im Webserver der CPU bereits eingebaute "Status Variable"-Möglichkeit auch für symbolische Zugriffe geht und für Euch ausreicht.

Harald
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Funktion im Webserver "Variablenstatus" ist eigtl. genau das, was ich in unserem HMI nachbilden möchte.
Siemens muss doch bei genau dieser Eingabemaske auch so etwas wie String to Symbolname verwenden !?
 
Ja ... Siemens hat eine Variablen-Tabelle in der die Alias-Symbolnamen der Visu den absoluten Adressen der SPS zugeordnet werden.
 
Habe mir noch einmal etwas genauer den Webserver der 1500er angesehen.
Wenn ich dort nun eine Variable eingebe, von der ich den Wert ausgelesen habe möchte, gebe ich dort z.B. "D600.Istwert" ein.
Schaue ich mir dann im Debug-Fenster die Daten an, die dazu übergeben werden, steht dort auch nur bei value der Name "D600.Istwert".
An dieser Stelle werden doch keine Alias-Symbolnamen verwendet oder ähnliches. Somit muss doch der Zugriff auf den reinen Symbolnamen auch möglich sein.

Evtl. hätte ich noch dazu sagen sollen, das ich kein Siemens HMI im Einsatz habe, so dass dort nicht auf die Siemens Funktionalitäten zurückgegriffen werden kann.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielleicht kannst du ein Webbrowser in dein HMI einbetten, in dem der Variablenstatus vom Webserver der SPS angezeigt wird.
Oder je nach dem was dein HMI kann, könntest im Hintergrund über ein paar Skripte den Webserver der SPS selber abfragen, und die Ergebnisse dann in eigenen Steuerungselementen anzeigen.
 
Wieviele Daten sind das denn in dem DB? Evtl. sollte mit dem "GetSymbolName" oder wie das heisst, in der SPS was gehen. Aber schoen wird das nicht und garantiert ordentlich Performance und Speicher Kosten...
 
Ist das bei "GetSymbolName" nicht so, daß man damit nur den Name einer an einem Bausteineingang verschalteten Variable ermitteln kann? Ich komm' nicht drauf, wie man damit eine Namestring/Symbol-Beziehung erstellen könnte. Man müsste bestimmt explizit jede einzelne Variable im Programm verwenden, um zu ermitteln, ob ein Namestring gleich dem Variablensymbol ist.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Man müsste bestimmt explizit jede einzelne Variable im Programm verwenden, um zu ermitteln, ob ein Namestring gleich dem Variablensymbol ist.

Harald

Jo, deshalb die Frage, um wieviele Variablen es geht ;) und die Anmerkung, dass es Performance Kosten wuerde ;)
Also sicherlich keine schoene Loesung.
 
Er muesste alle Variablen in der SPS mit "GetSymbolName" abfragen. Das Ergebnis mit dem String vom HMI vergleichen. Bei Gleichheit dann den Wert der Variablen zur Visu schicken...
Hoffe ihr koennt mir folgen ;) abrr eigentlich ne Schnappsidee
Gruss
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da müsste man aber aus einem Baustein heraus aufwärts bis zur Wurzel browsen, und dann wieder abwärts alle Pfade abgreifen. Ich glaube nicht, dass es sowas gibt.
Und dann fehlt noch eine Funktion wie GetValueByName oder sowas, also mit der man über den Namen an den Variablenwert gelangt.
 
Zurück
Oben