Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 5 von 5

Thema: Enum mit String vergleichen

  1. #1
    Registriert seit
    12.11.2014
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,
    ich habe ein Problem bei dem Vorhaben eine Enum-Variable mit einem String zu vergleichen.
    Das Grundproblem:
    Das Ganze ist für ein VORHANDENES Baukastensystem für Standardanwendungen gedacht, daher keine gravierenden, kostenintensiven Änderungen mehr möglich (hinterher ist man immer schlauer!)
    In einer Enum-deklaration sind die Namen für diverse Instanzen angegeben.
    Diese werden in einer, in der WebVisu laufenden, Auswahlmaske selektiert um diese zu verknüpfen. Soweit so gut. Leider ist die Anzahl der Namen stark gewachsen, sodass die Selektion total unübersichtlich wird.
    Die Idee:
    In der Auswahlmaske eine Vorselektion treffen (über ein String) in der man die, z.B. ersten drei Zeichen des gewünschten Namens eingibt. Dadurch soll dann die Möglichkeit der zu selektierenden Namen auf die eingegrenzt werden, die diese ersten drei Zeichen enthalten.
    z.B.:
    Namen (Enum):
    „ST1_WP“
    „ST1_HP“
    “ST9_S1_HP”
    “ST9_S1_WP”

    Frei einzugebende Vorselektion (als String) = “ST1*”
    Ergibt mögliche Auswahl von „ST1_WP“ und „ST1_HP“

    Wie ich den Zahlenwert, der hinter einer Enum Variable steht über Pointer ermittle, ist klar!
    ABER:
    Weiß Irgendjemand wie man unter CoDeSys2.3 den NAMEN einer Enumvariable zu Laufzeit ermitteln kann um diesen dann mittels MID,Left, usw. mit einem String zu vergleichen?
    Für Anregungen oder Hilfe wäre ich echt dankbar!
    Zitieren Zitieren Enum mit String vergleichen  

  2. #2
    Registriert seit
    16.03.2014
    Beiträge
    359
    Danke
    74
    Erhielt 45 Danke für 38 Beiträge

    Standard

    Dito Hallo,
    ich bin zwar nicht Fit in Twincat aber glaube folgendes erkannt zu haben:
    ENUM ist eine "virtuelle Nummerierung", d.h. man hat zur Entwicklungszeit symbolische Namen, welche vom Zielcompiler in feste Adressen (Nummern) übersetzt werden.
    Von daher ist es eigentlich unmöglich auf dem Laufzeitsystem die Symbolk "zurückzuverfolgen"...
    Ich hoffe, das ich es so richtig verstanden habe, die anderen werden es mir dann ggf. erklären.

    Du hast daher nur eine Chance, wenn du diesen Wunsch mit zusätzlichen Strings abbildest.
    Bsp.: Entweder in einem String mit Trennzeichen und eigener Suchfunktion oder als Array.
    Auch bietet sich bei einer solchen Lösung eine Gruppenbildung an: Gruppe/Name
    Dann könnte der Anwender den / die Gruppennamen oder Nummer (schneller zu tippen) eingrenzen.

    LG
    Shrimps

  3. #3
    RennV4.1 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    12.11.2014
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Shrimps,
    generell hatte ich früher auch diese Vermutung (ähnlich der Symbolik), aber ich wurde durch Versuche, eines bessern belehrt, das die Namen auch zur Laufzeit vorhanden sind.
    Der Grund meiner Behauptung:
    Wir haben in dem Projekt eine dynamische Auswahlmaske programmiert. Die besteht im Wesentlichen aus fünf Tasten für die Namen und je links und rechts eine „Scrolltaste“. Durch eine Funktion werden beim Aufruf der Seite die Tastenbeschriftungen mit den ersten fünf ENUM Namen geladen. Betätigt man nun die rechte „Scrolltaste“ werden die fünf Tasten mit den nächsten fünf Namen geladen, usw.
    Diese Namen stehen in keinem Array oder sonstigen Variablen, sondern sind die ENUMNamen, die in einer Struktur im Globaldatenbereich deklariert sind.
    Das heißt für mich, dass die ENUM Namen auch zur Laufzeit irgendwo im Speicher stehen. Nur WO?
    Oder sollte der Compiler so schlau sein zu erkennen, das ich eine dynamische Auswahlmaske programmiert habe und er „vorsichthalber“ alle ENUMNamen auf Tasten schreibt und diese dann einblendet…Nee, das ist glaube ich total Quatsch! – HAL 9000 lässt grüßen -
    Aber Trotzdem erst mal danke für den Denkanstoß.
    Gruß

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    @TE:
    Du mußt schon zwischen dem SPS-Programm und dem .Net-Programm der Visu unterscheiden. Das .Net-Programm der Visu kann die numeration wieder auflösen - die SPS n.m.M. nicht ...

    Gruß
    Larry

  5. #5
    RennV4.1 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    12.11.2014
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Tachchen Larry,
    so, jetzt bin ich verwirrt. Deiner Aussage nach ist die Visu eine .Net? Also ich weiß nicht ob ich mich falsch ausgedrückt habe, aber ich meine schon die Web-Visu die Lizenzfrei unter CoDeSys erstellt werden kann (Reiter“Visualisierung“). Ich muss zugeben, das ich mich mit dem Thema der Verschiedenen Visualisierungsarten noch nicht ausgiebig auseinander gesetzt habe.
    Und sollte dies trotzdem eine .Net sein, so müssten doch die Namen der ENUMwerte irgendwo dort in nem XML stehen, oder?
    Oder gibt es einen Umweg über die VISU den ENUMNamen in eine String Variable zu schreiben?
    Ich wüsste zwar nicht ob es wichtig ist, aber es handelt sich bei der Hardware um einen Wago Controller 750-880.

Ähnliche Themen

  1. String vergleichen
    Von Bensen83 im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 14.07.2015, 10:52
  2. Word mit String vergleichen Step 7 AWL
    Von phil122 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 25.07.2012, 00:11
  3. String TO Enum
    Von hago10 im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 20.07.2011, 12:34
  4. String vergleichen
    Von enter im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 12.02.2008, 09:19
  5. WinCC Flex 2005 String vergleichen
    Von PLCTEC im Forum HMI
    Antworten: 7
    Letzter Beitrag: 13.05.2007, 19:33

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •