# Aufrufprobleme PID-Regler

**URL:** <https://oscat.discourse.group/t/aufrufprobleme-pid-regler/34>\
**Category:** Bestehende Module / Existing Modules\
**Created:** [24. Dezember 2006 um 13:30 UTC](https://oscat.discourse.group/t/aufrufprobleme-pid-regler/34 "2006-12-24T13:30:21Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![gravieren](https://avatars.discourse-cdn.com/v4/letter/g/54ee81/32.png) [@gravieren](https://oscat.discourse.group/u/gravieren)\
**Post date:** [24. Dezember 2006 um 13:30 UTC](https://oscat.discourse.group/t/aufrufprobleme-pid-regler/34/1 "2006-12-24T13:30:21Z")

</div>

Hi

Ich komme mit dem PID-Regler NICHT klar.

Irgendwie fehlt mir die Angabe für den Aufruf.

Als freilaufender Zyklus verrichtet der Baustein nach meinen Meinung nicht die gewünschte Arbeit.

Was mache ich falsch.

Karl

---

<div class="post-metadata">

**Author:** ![gravieren](https://avatars.discourse-cdn.com/v4/letter/g/54ee81/32.png) [@gravieren](https://oscat.discourse.group/u/gravieren)\
**Post date:** [24. Dezember 2006 um 14:01 UTC](https://oscat.discourse.group/t/aufrufprobleme-pid-regler/34/2 "2006-12-24T14:01:33Z")

</div>

Sorry

Bedienfehler von mir.

Es Bedarf einem “Reset” bevor man damit Arbeitet / Erster Aufruf.

Frage: Lässt sich der Code von rst : BOOL; auf rst : BOOL := TRUE; ändern ?  
(Erstinitialisierung beim Aufruf)

Karl

---

<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:** [25. Dezember 2006 um 08:41 UTC](https://oscat.discourse.group/t/aufrufprobleme-pid-regler/34/3 "2006-12-25T08:41:51Z")

</div>

wird in der rev 1.1 zum 1.1. erledigt, danke für den input.  
der pid ist freilaufend, damit er auch bei stark beladener sps exact arbeitet.  
ein pid der zyklisch aufgerufen wird kann von einer hoeher priorisierten task unterbrochen werden und dann entstehen fehler.  
in der 1.1 werden wir den pid auch auf trapezformel umstellen, die etwas mehr genauigkeit liefert als die jetzt verwendete rechteckformel.

sonstige wünsche bitte mitteilen.

---

<div class="post-metadata">

**Author:** ![gravieren](https://avatars.discourse-cdn.com/v4/letter/g/54ee81/32.png) [@gravieren](https://oscat.discourse.group/u/gravieren)\
**Post date:** [25. Dezember 2006 um 09:24 UTC](https://oscat.discourse.group/t/aufrufprobleme-pid-regler/34/4 "2006-12-25T09:24:48Z")

</div>

Hi

> sonstige wünsche bitte mitteilen.

Ja, hab noch einen.

> VAR\_INPUT KP, TN, TV, limit\_H, limit\_L : REAL; END\_VAR

Kannst du "limit\_H" und "limit\_L" tauschen, unter CFC etwas Gewöhnungsbedürftig. ( Hoher Wert steht oben )

Selbstoptimierung wäre Cool

---

<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:** [25. Dezember 2006 um 09:39 UTC](https://oscat.discourse.group/t/aufrufprobleme-pid-regler/34/5 "2006-12-25T09:39:00Z")

</div>

die eingänge tauschen ist ein guter tip, werde ich machen.  
aber wieso rst auf true initialisieren, damit waere ein offener rst immer ein rst den rst ist high active.

---

<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:** [25. Dezember 2006 um 09:42 UTC](https://oscat.discourse.group/t/aufrufprobleme-pid-regler/34/6 "2006-12-25T09:42:03Z")

</div>

Selbstoptimierung wäre Cool

das waere absolut cool, aber derzeit habe ich leider noch keine brauchbaren algorithmen / verfahren gefunden  
hat jemand hierzu ideen, inputs?

---

<div class="post-metadata">

**Author:** ![gravieren](https://avatars.discourse-cdn.com/v4/letter/g/54ee81/32.png) [@gravieren](https://oscat.discourse.group/u/gravieren)\
**Post date:** [26. Dezember 2006 um 15:44 UTC](https://oscat.discourse.group/t/aufrufprobleme-pid-regler/34/7 "2006-12-26T15:44:51Z")

</div>

Hi Hugo

> aber wieso rst auf true initialisieren, damit waere ein offener rst immer ein rst den rst ist high active.

Simmt grundsätzlich, jedoch sollte natürlich nachfolgender Zeile eingefügt werden. 

IF rst OR KP = 0 THEN  
rst := FALSE; ← Diese Zeile einfügen. Dann ist ein offener RST-Eingang natürlich NICHT 1  
(Diese Grundinitialisierung wird von vielen Nahmhaften Herstellern gemacht)  
y := offset;  
integ(rst := 1);  
integ.rst := 0;  
ELSIF manual THEN

---

<div class="post-metadata">

**Author:** ![gravieren](https://avatars.discourse-cdn.com/v4/letter/g/54ee81/32.png) [@gravieren](https://oscat.discourse.group/u/gravieren)\
**Post date:** [26. Dezember 2006 um 15:49 UTC](https://oscat.discourse.group/t/aufrufprobleme-pid-regler/34/8 "2006-12-26T15:49:50Z")

</div>

Hi Hugo

> Selbstoptimierung wäre Cool 
> 
> das wäre absolut cool, aber derzeit habe ich leider noch keine brauchbaren algorithmen / verfahren gefunden  
> hat jemand hierzu ideen, inputs?

Ich werde mal Informationen sammeln und einen neuen Tread aufmachen.

---

<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:** [26. Dezember 2006 um 19:17 UTC](https://oscat.discourse.group/t/aufrufprobleme-pid-regler/34/9 "2006-12-26T19:17:53Z")

</div>

verstehe, wenn jemand von extern einen rst aufruft dann wird er ausgeführt und die rst variable gelöscht.  
die grundinitialisierung mir rst = true wuerde dann noch dafür sorgen das er beim ersten aufruft auch gleich initialisiert wird.

ich habe mich bisher nie getraut eine eingangsvariable aus dem programm heraus zu schreiben, ist den das nach iec61131 zulässig?

---

<div class="post-metadata">

**Author:** ![gravieren](https://avatars.discourse-cdn.com/v4/letter/g/54ee81/32.png) [@gravieren](https://oscat.discourse.group/u/gravieren)\
**Post date:** [27. Dezember 2006 um 17:44 UTC](https://oscat.discourse.group/t/aufrufprobleme-pid-regler/34/10 "2006-12-27T17:44:05Z")

</div>

> ich habe mich bisher nie getraut eine eingangsvariable aus dem programm heraus zu schreiben

Das ist auch “nur” eine Speicherzelle .

> ist den das nach iec61131 zulässig?

Weiß ich nicht. Siemens setzt nach dem END\_IF einen ";" und behauptet das sei iec61131-Konform.

Karl

---

<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:** [28. Dezember 2006 um 17:26 UTC](https://oscat.discourse.group/t/aufrufprobleme-pid-regler/34/11 "2006-12-28T17:26:28Z")

</div>

hab das ganze mit eingangsvariblen aus einen fb schreiben probiert, es funktioniert.  
jedoch werde ich erst nachlesen ob das iec confrom ist. wenn ja mache ich die aenderung sie ist in jedem fall eine gute idee.

---

<div class="post-metadata">

**Author:** ![gravieren](https://avatars.discourse-cdn.com/v4/letter/g/54ee81/32.png) [@gravieren](https://oscat.discourse.group/u/gravieren)\
**Post date:** [29. Dezember 2006 um 09:44 UTC](https://oscat.discourse.group/t/aufrufprobleme-pid-regler/34/12 "2006-12-29T09:44:14Z")

</div>

Hi Hugo

> werde ich erst nachlesen ob das iec confrom ist.

Hast du dazu Lektüre ?

Karl

---

<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:** [30. Dezember 2006 um 11:30 UTC](https://oscat.discourse.group/t/aufrufprobleme-pid-regler/34/13 "2006-12-30T11:30:09Z")

</div>

habe folgendes gefunden:

in iec61131-3 von john tiegelkamp. seite 41 schreibt ganz klar das eine var\_input innerhalb einer poe oder funktionsblock nur gelesen werden darf.  
bei einer var\_in\_out ist dies anders, diese ist jedoch nur ein pointer auf die uebergebene variable, und hat weiterhin das problem der doppelten darstellung in einer grafischen sprache wie cfc

habe es zwar getetset, und unter codesys festgestellt ein funktionsbaustein kann sehr wohl eine var\_input beschreiben, betrachte es aber als gefährlich so etwas zu verwenden.  
für mich wäre es nur dann akzeptabel wenn die norm dies explizit erlauben würde.

fazit, in oscat wollen wir portabel bleiben und von keiner plattform abhaengig sein deshalb koennen wir dies nicht verwenden.  
sorry…

---

<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:** [30. Dezember 2006 um 11:34 UTC](https://oscat.discourse.group/t/aufrufprobleme-pid-regler/34/14 "2006-12-30T11:34:09Z")

</div>

weitere infos sch diesen link an seite 49

[http://www.fen-net.de/karlheinz.john/](http://www.fen-net.de/karlheinz.john/)
