einfache tendenzerkennung

Begonnen von UlTra, 10. April 2012, 13:38:21

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

UlTra

Hallo und vielen Dank für dieses fantastische Forum.

Gibt es in der oscat.lib eine Tendenzerkennung?

Ich habe einen INT-Wert  0-400 und möchte gerne 3x1 BIT raus haben:

steigend
gleichbleibend
fallend

eventuell mit totzeit  8)

Gibt es sowas, oder hat jemand eine Idee?

beste Grüße, UlTra

alexdrik

#1
Hallo,

ich hätte das jetzt auf die schnelle (für CodeSys2) mal so hinprogrammiert:

Deklaration:

FUNCTION_BLOCK tendenz
VAR_INPUT
   input: INT;
   Totzeit: TIME;
END_VAR
VAR_OUTPUT
   steigend: BOOL;
   konstant: BOOL;
   fallend: BOOL;
END_VAR
VAR
   input_old: INT;
   Last_time: TIME;
END_VAR


Impelentation:

(* Abwarten der Totzeit *)
IF Last_time + Totzeit < TIME() THEN

   Last_time := TIME();

   IF input = input_old THEN
      steigend := FALSE;
      konstant := TRUE;
      fallend  := FALSE;

   ELSIF input < input_old THEN
      steigend := FALSE;
      konstant := FALSE;
      fallend  := TRUE;

   ELSE
      steigend := TRUE;
      konstant := FALSE;
      fallend  := FALSE;

   END_IF

   input_old := input;

END_IF


Gruß
     Alex