# BLIND\_CONTROL ohne Tolerranz

**URL:** <https://oscat.discourse.group/t/blind-control-ohne-tolerranz/802>\
**Category:** Bestehende Module / Existing Modules\
**Created:** [10. März 2010 um 15:50 UTC](https://oscat.discourse.group/t/blind-control-ohne-tolerranz/802 "2010-03-10T15:50:01Z")\
**Posts on this page:** 3\
**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:** [10. März 2010 um 15:50 UTC](https://oscat.discourse.group/t/blind-control-ohne-tolerranz/802/1 "2010-03-10T15:50:01Z")

</div>

Hallo,

ich habe die BLIND Bausteine in meinem Gebäude zum Testen übernommen.  
Dabei ist mir eine kleine Unstimmigkeit in BLIND\_CONTROL aufgefallen.  
Folgende Punkte:

1.Position vor Regelung abfragen:  
Die Position wir nach der Regelung abgefragt daher hat man immer einen SPS Zyklus Versatz, was in meinem Beispiel 5/256 des verfahr weg ausmacht.  
Bei entsprechend langer Zykluszeit wird das immer mehr.  
(bei einer Zykluszeit von max 23ms und eine T\_ANGLE von 1200ms ergibt sich 1200/256 = 4,7 ms Pro Pos Verstellung das heist 23/4,7=5 sens = 5)

Lösung:  
Position Berechnung von BLIND\_ACTUATOR in einer Aktion dadurch ist es einfach möglich vor der Regelung die Position schon mal zu berechnen

2.Tolerranz für Position ANG  
Unter (\* regulate angle _)  
Wird delta := 0 gesetzt wo bei der Rollo aber 5/256pro Zyklus (in meinem Fall) verfährt, folge die Position wird überfahren  
Lösung:  
In den beiden ElSIF von (_ regulate angle \*)  
delta := sense/2;

Die geänderten Bausteine kann ich zum testen euch zukommen lassen.

Hier noch mal der geänderte Code:

```auto
(* Check Position*)
act.aPosition();

IF UP AND DN THEN
	(* automatic modus detected *)
	(* first find correct position *)
	IF BYTE_TO_INT(act.pos) < BYTE_TO_INT(pi) - delta THEN
		act.UP := TRUE;
		act.DN := FALSE;
		delta := 0;
		STATUS := 121;
	ELSIF BYTE_TO_INT(act.pos) > BYTE_TO_INT(pi) + delta THEN
		act.UP := FALSE;
		act.DN := TRUE;
		delta := 0;
		STATUS := 122;
	(* regulate angle *)
	ELSIF BYTE_TO_INT(act.ang) < BYTE_TO_INT(ai) - delta AND T_angle > T#100ms THEN
		act.UP := TRUE;
		act.DN := FALSE;
		delta := sens/2;
		STATUS := 123;
	ELSIF BYTE_TO_INT(act.ang) > BYTE_TO_INT(ai) + delta AND T_angle > T#100ms THEN
		act.UP := FALSE;
		act.DN := TRUE;
		delta := sens/2;
		STATUS := 124;

```

Gruß Andreas

---

<div class="post-metadata">

**Author:** ![martin.k](https://avatars.discourse-cdn.com/v4/letter/m/3e96dc/32.png) [@martin.k](https://oscat.discourse.group/u/martin.k)\
**Post date:** [11. März 2010 um 08:29 UTC](https://oscat.discourse.group/t/blind-control-ohne-tolerranz/802/2 "2010-03-11T08:29:08Z")

</div>

Hi AE,

Du bekommst von mir ein großes Lob. Durch Leute wie Dich kommt das Projekt Oscat vorwärts.

Grüße  
Martin

---

<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:** [11. März 2010 um 10:24 UTC](https://oscat.discourse.group/t/blind-control-ohne-tolerranz/802/3 "2010-03-11T10:24:15Z")

</div>

Hi Martin,

Danke das freut mich.  
hier hab ich die geänderten Bausteine als Export im Anhang.

[gelöscht durch Administrator]
