# Fehler im Baustein ACTUATOR\_3P in der Version OSCAT Building 100

**URL:** <https://oscat.discourse.group/t/fehler-im-baustein-actuator-3p-in-der-version-oscat-building-100/1016>\
**Category:** Bestehende Module / Existing Modules\
**Created:** [8. März 2011 um 13:15 UTC](https://oscat.discourse.group/t/fehler-im-baustein-actuator-3p-in-der-version-oscat-building-100/1016 "2011-03-08T13:15:54Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/oscat/original/1X/2efdfb9c592ff9a666c94dff124ee84fa863dae5.jpeg) [@system](https://oscat.discourse.group/u/system)\
**Post date:** [8. März 2011 um 13:15 UTC](https://oscat.discourse.group/t/fehler-im-baustein-actuator-3p-in-der-version-oscat-building-100/1016/1 "2011-03-08T13:15:54Z")

</div>

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:

```auto
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:

```auto
		(* 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:

```auto
	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

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/oscat/original/1X/2efdfb9c592ff9a666c94dff124ee84fa863dae5.jpeg) [@system](https://oscat.discourse.group/u/system)\
**Post date:** [12. März 2011 um 12:27 UTC](https://oscat.discourse.group/t/fehler-im-baustein-actuator-3p-in-der-version-oscat-building-100/1016/2 "2011-03-12T12:27:12Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![hugo](https://yyz2.discourse-cdn.com/free1/user_avatar/oscat.discourse.group/hugo/32/133_2.png) [@hugo](https://oscat.discourse.group/u/hugo)\
**Post date:** [12. März 2011 um 17:00 UTC](https://oscat.discourse.group/t/fehler-im-baustein-actuator-3p-in-der-version-oscat-building-100/1016/3 "2011-03-12T17:00:56Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/oscat/original/1X/2efdfb9c592ff9a666c94dff124ee84fa863dae5.jpeg) [@system](https://oscat.discourse.group/u/system)\
**Post date:** [21. Mai 2013 um 12:52 UTC](https://oscat.discourse.group/t/fehler-im-baustein-actuator-3p-in-der-version-oscat-building-100/1016/4 "2013-05-21T12:52:43Z")

</div>

Hallo zusammen,  
hat schon jemand den neuen Funktionsbaustein von ACTUATOR\_3P zur Verfügung?

gruß  
Hesham

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/oscat/original/1X/2efdfb9c592ff9a666c94dff124ee84fa863dae5.jpeg) [@system](https://oscat.discourse.group/u/system)\
**Post date:** [9. August 2013 um 05:50 UTC](https://oscat.discourse.group/t/fehler-im-baustein-actuator-3p-in-der-version-oscat-building-100/1016/5 "2013-08-09T05:50:30Z")

</div>

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
