String Array

Etechnika
2008-09-16
2008-09-23
  • Etechnika - 2008-09-16

    Hallo,

    hab folgendes Problem, viellichtt kann jemand helfen.

    Ich habe eine Varibale vom Typ "String(80)" in der mir Statusmeldungen

    übergeben werden.

    Diese Meldungen möchte ich nacheinander in einem Array speichern, so dass ich quasi am Ende ALLE Meldungen in diesem einem Array habe.

    Weiss jemand wie man das machen kann?

     
  • RolandWagner

    RolandWagner - 2008-09-16

    Hallo,

    vielleicht klingt das jetzt ein wenig blöd , aber Du kannst natürlich einfach ein

    ARRAY [0..n] OF STRING

    verwenden.

    Also z.B. so:

    PROGRAM PLC_PRG

    VAR

    fehlertext:<span style="color: blue">STRING</span>(80);
    
    Textliste:<span style="color: blue">ARRAY </span>[0..MAXListenLaenge] <span style="color: blue">OF STRING</span>;
    
    NeuerFehlertext: <span style="color: blue">BOOL</span>;
    
    i:<span style="color: blue">INT</span>;
    

    END_VAR

    VAR CONSTANT

    MAXListenLaenge:<span style="color: blue">INT </span>:= 5;
    

    END_VAR

    IF NeuerFehlertext THEN

    Textliste[i] := fehlertext;
    

    IF i >= MAXListenLaenge THEN

        i:=0;
    

    ELSE

        i:=i+1;
    

    END_IF

    NeuerFehlertext := <span style="color: violet">FALSE</span>;
    

    END_IF

    Die Frage ist nur, wie Du die ganzen Meldungen dann verwaltest, sprich löscht etc. Aber bis Du ja dann mit dem Array ganz flexibel.

     
  • Etechnika - 2008-09-22

    Hallo,

    Danke für die Antwort. Leider funktioniert das nicht ganz so wie es soll.

    Im Array steht immer die gleiche Fehlermeldung in allen Feldern.

    Den Fehlerstring erhlate durch eine Case-Aweisung:

    CASE Error OF

    16#0000: FehlerString:='Keine Fehler';

    16#3280 : FehlerString:='Ladezeit Zwischenkreis überschritten';

    16#3281 : FehlerString:='Unterspannung für aktive PFC';

    16#3282 : FehlerString:='Überlast Bremschopper';

    END_CASE;

    Das heisst die Variable "Fehlerstring" ändert bei jedem neuen Fehler einfach ihren Wert. Diese Änderung muss irgentwie erkannt werden und der Fehler muss dann ein Mal in ein neues StringArray geschrieben werden.

    Weiss jemand einen Rat?

     
  • Erik Böhm - 2008-09-22

    Hallo

    Ich zeige z.B. in meiner Visu immer die letzten 6 Nachrichten in einem MessageWindow an.

    Dabei wird die neueste Meldung immer an die höchste Array Position geschrieben. Wenn alle 6 Zeilen voll sind, scrollen die Strings 2-6 eins nach unten. Die alte 1 fliegt raus und der neue String kommt in die 6.

    Das sollte (evtl. mit kleiner Abwandlung) auch dein Problem lösen können.

    Beispiel anbei.

    Gruss

    Erik

    SETMAINMESSAGE.zip [662 Bytes]

     
  • Etechnika - 2008-09-23

    Danke für die Hilfe,

    hab nun hinbekommen was ich wollte!!

     

Log in to post a comment.