TIA Funktion Trigger

Deep Blue

Level-2
Beiträge
440
Reaktionspunkte
17
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich wünsche euch allen erst einmal einen guten Rutsch!

Im Moment kämpfe ich mit einer Verständnisfrage, welche ich mir nicht erklären kann.

Ich habe mir eine einfache Funktion geschrieben, welche ich immer wieder für das hochzählen eines Stromzählers nutzen möchte. Es ändert sich nur der Zählimpulseingang, die Funktion ist aber immer die Gleiche. Schreibe ich mir diese in einen FC klappt das zuverlässig, trotz zyklischem Aufruf (erwarte ich so vom Trigger). Nutze ich aber eine Funktion und rufe diese dann in einem FC auf, zählt der Zählwert zyklisch hoch, also er macht dementsprechend Sprünge von ca. + 100-150, eben so schnell wie die SPS den Zyklus schafft. Das verstehe ich nicht...warum will es so nicht klappen?

Code:
Impulseingang = In
Zählwert = InOut
Trigger = InOut (auch ein Out oer Temp hilft nicht)

"R_TRIG_FC_141"(CLK:=#Impulseingang,
                Q=>#Trigger);

IF #Trigger = true THEN
    #Zählwert := #Zählwert + 1;
END_IF;
 
Wie sieht dann dein Aufruf der Zählfunktion auf?
Der InOut Trigger muss eine statische oder eine globale Variable sein.

Ich würde bei SCL keine Trig-Funktion verwenden, ich würde das ungefähr so programmieren:
Code:
Impulseingang = In
Zählwert = InOut
Altwert_des_Impulseingangs = stat

IF #Impulseingang AND not #Altwert_des_Impulseingangs
    THEN #Zählwert += 1;
END_IF;

#Altwert_des_Impulseingangs := #Impulseingang
 
Zurück
Oben