Fehler im Baustein ACTUATOR_3P in der Version OSCAT Building 100

Begonnen von Richardt, 08. März 2011, 14:15:54

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 2 Gäste betrachten dieses Thema.

Richardt

Hallo,

ich habe einen Fehler im Baustein ACTUATOR_3P in der Version OSCAT Building 100 gefunden. Er tritt auf, wenn ein Endlagenschalter verwendet wird (SWITCH_AVAILABLE = TRUE), die automatische Diagnose erlaubt ist (ARE = TRUE und T_DIAG > T#0s) und T_EXT nicht parametriert ist (kleiner Wert gegenüber T_RUN).

Beim erstmaligen Aufrufen des Funktionsbausteins wird die Diagnose durchgeführt. Bei STATUS = 103 wird, sobald der Endlagenschalter meldet (END_POS = TRUE), der STATUS auf 104 erhöht ohne die Variable start auf tx zu setzen. Dies führt dazu das diese erste IF-Schleife von CASE 104 nicht abgearbeitet wird:
IF tx - start < T_ext THEN

OUT1 := FALSE;

OUT2 := TRUE;

ramp.IN := 0;

next_diag := tx + T_DIAG;

somit wird die Laufrichtung nicht umgeschaltet und die Variable next_diag bleibt umgesetzt auf T#0s. Dadurch bleibt die Meldung des Endlagenschalters (END_POS = TRUE) erhalten und es wird direkt auf STATUS = 100 umgeschaltet. Da aber next_diag = T#0s ist wird sofort die auto diagnose aufgerufen:
(* check for auto diagnostics *)

IF T_DIAG > T#0s AND tx > next_diag AND ARE AND NOT ARX THEN

status := 103;

start := tx;

ARX := TRUE;

und somit wieder direkt auf STATUS 103 umgeschaltet. Dort beginnt das Spiel von neuem, wenn die Zeit T_EXT abgelaufen ist (Standard T#10s).

Um den Fehler zu beheben müsst meiner Meinung nach der Code wie folgt verändert werden:
103: (* diagnostics up*)

(* run up for T_ext *)

IF tx - start < T_EXT THEN

ERROR := FALSE;

ramp.TR := T_RUN;

ramp.TF := T_RUN;

OUT1 := TRUE;

OUT2 := FALSE;

ramp.IN := 255;

ELSIF SWITCH_AVAIL AND END_POS THEN

ramp.TR := tx - start;

STATUS := 104;

start := tx;           (* DIESE ZEILE NEU EINGEFÜGT! *)
ELSIF tx - start > T_EXT + T_RUN THEN

ERROR := SWITCH_AVAIL;

STATUS := 104;

start := tx;

END_IF;


MfG
Richardt


Richardt

Wenn der Baustein verbessert wird, schlage ich vor, in den Baustein auch eine parametrierbare Umschaltpause für die Ausgänge einzufügen. Bislang werden die Ausgänge innerhalb eines Taktes umgeschaltet.

Einen Funktionsbaustein mit Umschaltpause manuell vor den Funktionsbaustein ACTUATOR_3P anzufügen geht nicht. Dieser wirkt nicht bei der automatischen Diagnose.
Einen Funktionsbaustein mit Umschaltpause an den Ausgang des Funktionsbausteins ACTUATOR_3P anzufügen geht ebenfalls nicht. Dies würde die Messzeiten verfälschen.

Daher muss die Umschaltpause in den Funktionsbaustein implementiert werden.

Grüße
Richardt

hugo

ja das ist absolut wichtig eine umschaltpause zu realisieren, wir werden das in der nächsten release einbauen

Hesham

Hallo zusammen,
hat schon jemand den neuen Funktionsbaustein von ACTUATOR_3P zur Verfügung?

gruß
Hesham

Homesps

Hallo Hesham,

die Umschaltpause hat mir auch gefehlt. Der im ACTUATOR_3P verwendete _RMP_NEXT kennt das auch als TL (Sperrzeit). Ich habe dann für mich den ACTUATOR_3P entsprechend erweitert.

VAR_INPUT CONSTANT
   T_LOCKOUT: TIME := T#100ms;
END_VAR

(* internal flap simulation and output activation *)
ramp(OUT := POS);
ramp.TL := T_LOCKOUT;

Damit funktioniert das bei mir ganz gut.

Gruß
Klaus