Autor Thema: einfache tendenzerkennung  (Gelesen 6483 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

UlTra

  • Gast
einfache tendenzerkennung
« am: 10. April 2012, 13:38:21 »
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

  • Gast
Re: einfache tendenzerkennung
« Antwort #1 am: 11. April 2012, 08:56:59 »
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
« Letzte Änderung: 11. April 2012, 09:04:15 von alexdrik »