Codesys Anfänger braucht Hilfe bei Array programmierung

waeze
2010-03-30
2010-04-06
  • waeze - 2010-03-30

    Hallo,

    ich lese meinen Strimzähler über eine S0-Schnittstelle aus. Die Impulse werte ich mit dem Baustein von Oscat aus. Nun wie kann ich die Verbrauchswerte von jedem Tag in einem Array speichern und für die Visu wieder auslesen. Wie auf folgender Seite http://wagobuero.dyndns.org/plc/webvisu.htm.

     
  • Blitzy - 2010-04-06
    VAR CONSTANT
      (*diese Konstante enthaelt Deine gewuenschte Arraygroesse*)
      MAX_ARRAY_ELEMENT := 100;
    END_VAR
    VAR
       (*hier deklarierst Du Dein Array, den Typ solltest Du natuerlich anpassen*)
       aiVerbrauch : ARRAY[0..MAX_ARRAY_ELEMENT] OF INT;
       iIndex         : INT; (*das ist der "Zeiger" auf den aktuellen Arrayeintrag*)
       xNeuerZaehlerWertEingetroffen : BOOL; (*setzt Du, wenn Du einen 
    frischen Wert ins Array packen willst*)
      iAktuellerZaehlerWert : INT; (*das ist der Ausgangswert von Deinem Oscat-Baustein*)
    END_VAR
    (*****************)
    IF xNeuerZaehlerWertEingetroffen
    THEN
      iIndex := (iIndex + 1) MOD MAX_ARRAY_ELEMENT; (*hiermit erreichst Du, dass iIndex bei jedem Durchlauf hochzaehlt. Wenn der hoechst zugelassene Wert (also MAX_ARRAY_ELEMENT) ueberschritten ist, beginnt
    die Zaehlung wieder bei 0*)
      aiVerbrauch[iIndex] := iAktuellerZaehlerWert;
      xNeuerZaehlerWertEingetroffen := FALSE; (*merke Dir, dass Du den Wert nun eingetragen hast und auf den naechsten Wert wartest*)
    END_IF;
    

    Alles Klar???[/code]

     

Log in to post a comment.