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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: Ereignisse mit einer Struktur aufzeichnen

  1. #1
    Registriert seit
    01.09.2015
    Beiträge
    72
    Danke
    10
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Tag Zusammen,

    ich versuche momentan Ereignisse mit Hilfe eines Arrays einer Struktur aufzeichnen zu lassen und diese in einer Tabelle darstellen zu lassen.
    Code:
    timestamp:STRING;
        inverter:STRING;
        report:STRING;
    END_STRUCT
    Wenn eine boolesche Variable TRUE wird, soll eben ein array[n] of struct mit den Werten gefüllt werden. Nun habe ich das Problem, wenn die Variable auf TRUE bleibt schreibt es mir alle 100ms das selbe Ereigniss in das Array. Ich möchte es jedoch nur einmal geschrieben haben, egal wie lange es andauert. Ich hoffe ihr versteht was ich möchte. Hat jemand einen Tipp für mich?

    MfG

    Bone
    Zitieren Zitieren Ereignisse mit einer Struktur aufzeichnen  

  2. #2
    Registriert seit
    04.11.2014
    Beiträge
    139
    Danke
    1
    Erhielt 25 Danke für 23 Beiträge

    Standard

    Hallo,

    entweder du schaltest die Variable wieder auf FALSE wenn geschrieben wurde oder du verwendest einen Trigger (R_TRIG).
    Der Trigger wertet sie steigende Flanke aus.

    Grüße

  3. #3
    Registriert seit
    01.09.2015
    Beiträge
    72
    Danke
    10
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hi Hack,

    die Variable kann ich nicht ausschalten, da ich sie als Input reinbekomme und solange z.b. ein Ereginis andauert, bekomme ich eben auch die Variable mit TRUE geliefert. Aber bleibt der Ausgang des Triggers nicht auch immer auf FALSE oder TRUE, solange sich der Eingang nicht ändert? Dann habe ich ja wieder das selbe Problem -.-

  4. #4
    Registriert seit
    24.02.2009
    Beiträge
    1.244
    Danke
    23
    Erhielt 276 Danke für 235 Beiträge

    Standard

    Ein Flankentrigger macht genau das, das sein Name vermuten lässt. Er zeigt dir an, ob ein Bit im vergleich zum letzten Zyklus von LOW nach HIGH bzw. von HIGH nach LOW gewechselt hat. Ändert sich das Bit nicht, bleibt der Triggerausgang auf FALSE.

    Was du suchst ist der R_TRIG, also ein Trigger der nur ein TRUE ausgibt wenn das Eingangsbit von 0 auf 1 schaltet. In Hilfe (TwinCAT / Codesys) ist das auch nochmal erklärt.
    Sänd from mei Kombjudder mitse Dastadurr.

  5. #5
    Registriert seit
    01.09.2015
    Beiträge
    72
    Danke
    10
    Erhielt 3 Danke für 3 Beiträge

    Standard

    ok, aber anscheinend bin ich zu blöd den R_TRIG zu nutzen -.-
    Code:
    test_rtrig:R_TRIG;
    eingang:BOOL;
    ausgang:BOOL;
    und dann
    Code:
    test_rtrig(CLK:=eingang);
    ausgang:=test_rtrig.Q;
    nur ändert sich am Ausgang überhaupt nichts -.- wette es ist mal wieder eine Kleinigkeit, welche ich übersehe.

    MfG

    Bone

  6. #6
    Registriert seit
    04.11.2014
    Beiträge
    139
    Danke
    1
    Erhielt 25 Danke für 23 Beiträge

    Standard

    Der Ausgang sollte sich nur für einen Zyklus ändern. Das ist dir klar?

  7. Folgender Benutzer sagt Danke zu Hack für den nützlichen Beitrag:

    bone666 (29.02.2016)

  8. #7
    Registriert seit
    13.12.2011
    Beiträge
    1.505
    Danke
    163
    Erhielt 181 Danke für 164 Beiträge

    Standard

    Hallo Bone,
    Zitat Zitat von bone666 Beitrag anzeigen
    wette es ist mal wieder eine Kleinigkeit, welche ich übersehe.
    ja, Du übersiehst etwas, nämlich den Ausgang.
    Aber im Ernst, der Ausgang ist nur einen Zyklus auf TRUE und das bekommst Du in den seltensten Fällen wirklich mit, da die Anzeige "nur" ca. alle 200ms aktualisiert wird. Dein Code-Schnipsel ist auf jeden fall richtig. Zum Testen kannst Du ja hinter R_Trig eine IF-Abfrage machen in der Du eine Testvariable auf TRUE setzt.

  9. Folgender Benutzer sagt Danke zu oliver.tonn für den nützlichen Beitrag:

    bone666 (29.02.2016)

  10. #8
    Registriert seit
    01.09.2015
    Beiträge
    72
    Danke
    10
    Erhielt 3 Danke für 3 Beiträge

    Standard

    danke euch zweien jetzt habe ichs gecheckt

  11. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.327
    Danke
    932
    Erhielt 3.332 Danke für 2.690 Beiträge

    Standard

    Tip: Frage den Ausgang des R_TRIG mal mit einem Zähler ab.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  12. #10
    Registriert seit
    01.09.2015
    Beiträge
    72
    Danke
    10
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Habe ein weiteres Problem/eine weitere Frage -.-

    zunächst einmal mein Code
    Code:
    IF inverter1.bool_STS_error_SCU = TRUE THEN
        FB_R_TRIG(CLK:=inverter1.bool_STS_error_SCU);
        bool_report[1]:=FB_R_TRIG.Q;
            IF bool_report[1]= TRUE THEN
                report_collection[n].timestamp:=SYSTEMTIME_TO_STRING(FB_Systemtime.systemTime);//stri_timestamp;
                report_collection[n].inverter:='1';
                report_collection[n].report:='error: SCU';
                bool_report[1]:=FALSE;                    
                n:=n+1;            
            END_IF        
        END_IF
    Jetzt schreibt er mir nur noch einmal dieses Ereignis in das Array. Das passt soweit, jedoch "resettet" sich der R_TRIG irgendwie nicht -.- CLK bleibt die ganze Zeit auf TRUE egal was ich mit der booleschen Eingangsvariable mache -.- Sorry falls ich mich etwas doof anstelle, aber habe bis jetzt nichts mit diesen Triggern angestellt.

    Bone

Ähnliche Themen

  1. Step 7 Erweiterung einer Struktur mit 3 REAL Variablen
    Von lion1702 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 14.10.2014, 17:39
  2. Retaindaten in einer Struktur
    Von SY50 im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 15.09.2014, 08:05
  3. Antworten: 5
    Letzter Beitrag: 10.07.2012, 12:45
  4. Elemente einer Struktur initialisieren
    Von Tigerente1974 im Forum Programmierstrategien
    Antworten: 5
    Letzter Beitrag: 20.01.2012, 07:18
  5. Länge einer Struktur im DB ermitteln
    Von Knut333 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 22.01.2009, 18:04

Lesezeichen

Berechtigungen

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