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

Ergebnis 1 bis 7 von 7

Thema: Beckhoff TC2 Array füllen und auslesen

  1. #1
    Registriert seit
    15.04.2013
    Ort
    78713 Schramberg
    Beiträge
    9
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Morgen allerseits,

    ich hätte mal eine Frage.
    Ich habe mit einer Beckhoffklemme EL3403 eine kleine Steuerung zur Phasenüberwachung realisiert.
    Das Ganze habe ich mit TwinCAT2 in ST erstellt und mit einer Visualisierung versehen in der man schön die aktuelle Spannung pro Phase beobachten kann.
    Ich würde jetzt noch gerne immer ein paar ältere Werte aufgelistet haben.
    Das müsste doch eigentlich mit einem Array gehen, das ich mir damit z.b. die letzten 2000 Werte pro Phase speichere, oder?
    Hätte da evtl jemand eine Idee und könnte mir evtl sagen wie ich das in ST umsetzen kann?
    Gerne würde ich diese Werte dann auch in einer Tabelle in der Visualisierung anzeigen lassen.
    Wäre nett wenn mir da jemand helfen könnte.
    Geändert von ToLe@CS (04.11.2013 um 11:53 Uhr)
    Zitieren Zitieren Beckhoff TC2 Array füllen und auslesen  

  2. #2
    Registriert seit
    10.04.2008
    Beiträge
    38
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Gib in der Hilfe Array ein dann siehst du wie Array´s verwendet werden!

  3. #3
    Registriert seit
    28.01.2013
    Beiträge
    10
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zuerst musst du besimmen wie oft du einen eintrag machst - z.B. jede sekunde, oder anderes ereignis?
    Ich würd den Wert immer auf die erste Stelle im array schreiben ..... Phase_L1[1] := AktuelleSpannung;
    Bevor du das machst musst du aber alle Einträge nach 'unten' verschieben, damit du nichts überschreibst. Am besten mit einer Schleife beginnend mit dem letzen Eintrag ->
    Phase_L1[i] := Phase_L1[i-1];
    Geändert von wolfi186 (05.11.2013 um 14:01 Uhr)

  4. #4
    ToLe@CS ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.04.2013
    Ort
    78713 Schramberg
    Beiträge
    9
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ok Danke schon mal, aber wie setze ich das um das er nach einer sekunde den Wert in Phase_L1[2] und nach einer weiteren sekunde in [3] schreibt.
    Er schreibt mir gerade immer die aktuelle Spannung in [1]

  5. #5
    Registriert seit
    28.01.2013
    Beiträge
    10
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich würde den aktuellen wert nicht direkt in [2], [3] usw. schreiben, denn irgendwann ist das array voll und du weist nicht wann welcher wert geschrieben wurde. Wenn du immer in [1] schreibst, und die gespeicherten werte weiterschiebst, hast du immer die letzten 2000 werte im array, wobei wert 2000 der älteste ist.

    Erstell mit R_TRIG eine Flanke wenn sich die Sekunde ändert
    Dann:

    if Flanke:=true then
    FOR i:= 2000 TO 2 BY -1 DO // von 2000 abwärts bis 2
    Phase_L1[i] := Phase_L1[i-1]; // von Phase[2000] = Phase[1999] usw. bis Phase[2] = Phase[1]
    END_FOR // Alle werte wurden um einen eintrag weitergeschoben

    Phase_L1[1] := AktuelleSpannung;
    END_IF



    Sollte so ungefähr funktionieren. wennst willst kannst auch ein 2 dimensionales Array machen und den Messzeitpunkt bei jeder Messung mitspeichern

  6. #6
    ToLe@CS ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.04.2013
    Ort
    78713 Schramberg
    Beiträge
    9
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hmm nee ein 1-dimensionales reicht mir, danke^^
    den Baustein R_TRIG habe ich gefunden, wie kann ich ihm sagen das er für CLK die Sekunde und für Q dann die Flanke nehmen soll?

  7. #7
    Registriert seit
    28.01.2013
    Beiträge
    10
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    du könntest die systemzeit auswerten, besser aber du machst es mittels timer, weil flexibler


    TON_Messung : TON; (Einschaltverzögerung)
    Messintervall : TIME; (Zeit einstellbar)
    ---

    TON_Messung(IN:= NOT Flanke , PT:= Messintervall);
    Flanke := TON_Messung.Q;

Ähnliche Themen

  1. Array mit Zeitwerten füllen
    Von MPH im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 24.10.2012, 11:33
  2. Array [index] gleichzeitig füllen
    Von good_mike im Forum Programmierstrategien
    Antworten: 13
    Letzter Beitrag: 17.01.2012, 19:56
  3. Array füllen
    Von elmoklemme im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 31.08.2010, 18:23
  4. Array indirekt füllen
    Von Woto im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 11.05.2009, 19:40
  5. DB's abwechselnd füllen und auslesen
    Von Karli im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 07.11.2008, 07:06

Stichworte

Lesezeichen

Berechtigungen

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