PDA

View Full Version : Regelung im OB1 ?



kiestumpe
27.02.2007, 10:23
Hallo,

hab hier nen bestehendes Programm, das seine Regler (FB41) über den OB1 aufruft. In meinen Augen ziemlich fahrlässig, sowas zu tun. :(
Oder gibt es da einen Trick, womit das trotzdem gescheit geht?

Gruss

kiestumpe

Dagobert
27.02.2007, 11:04
Hallo,

es wird sehr viele Fälle geben in denen es gut funktioniert.
Um dieses zu erklären muss man ein wenig ausholen.
Entsprechend der ganzen Theorie (la Place, Z-Transformation
usw usw) braucht man ein deterministisches und konstantes
Zeitverhalten für die Regelkreise bzw für den Aufruf der
Regler. Warum? Weil diese Zeit mehr oder weniger starken
Einfluß auf die zu wählenden Reglerparameter hat.
Gleichzeitig sollte die Bearbeitung der Regler aber in einem
gesunden Verhältnis zur kleinsten Streckenzeitkonstante
stehen....
Und damit haben wir 2 Kriterien die dann unter Umständen
einen "fahrlässigen" Aufruf in OB1 gnadenlos aufdecken:
Wenn die kleinste Streckenzeitkonstante sich stark Richtung
<= 10 fache Zykluszeit bewegt (und die Zykluszeit schwankt)
bzw wenn ich die Reglerparameter sehr genau bestimmen konnte
und die Regelgüte (zum Beispiel ITAE) entsprechend hoch ist.
Schnelle und damit kritische Regelungen wären zum Beispiel
Druck- , Lage- oder Geschwindigkeitregelungen.
Bei all diesen muss man mit interruptgesteuerten Aufrufen
(Wie OB35...bei S7) arbeiten. Unkritisch in diesem Sinne sind
zum Beispiel die allermeisten Temperaturregelungen,
denn die werden aus den vorgenannten Gründen auch
mit Regleraufrufen im OB1 sicher funktionieren.

Hoffe das war jetzt ein wenig verständlich

Nachtrag: Wenn man keine Möglichkeiten wie
den OB35 hat, kann man auch mit selbstprogrammierten
Zeittaktverteilern das ganze ein wenig optimieren.
Bei S5 Steuerungen hat man das oft gemacht...

Gruß ans Forum D. Börgmann

Zottel
27.02.2007, 12:31
Ich möchte versuchen, einen Teil dessen was Dagobert geschrieben hat, einfacher auszudrücken:
In einem digitalen Regler wird zur Zeit des Aufrufs ausgerechnet, wie sich die Variablen eines analogen Regler seit dem letzten Aufruf verändert hätten. Beispiel I-Anteil: im analogen Regler wird ein Speicherglied, z.B. ein Kondensator, aufgeladen und zwar um so schneller, je größer die Regelabweichung ist.
Beim digitalen Regler sieht das so aus:
SpeicherInhalt=SpeicherInhalt+(Sollwert-Istwert)/Nachstellzeit
Wenn die Nachstellzeit in Sekunden ist, paßt es nur wenn der Regler einmal pro Sekunde aufgerufen wird. Wird er 10 mal aufgerufen, sollte jedesmal ein Zehntel addiert werden und es kommt dasselbe heraus. Für beliebige Aufrufintervalle:
SpeicherInhalt=SpeicherInhalt+(Sollwert-Istwert)/Nachstellzeit*Aufrufintervall
Die Zeitkonstanten stimmen also nur, wenn das Aufrufintervall paßt.
Wenn man den Regler im OB1 ausführt, ist das Aufrufintervall den Schwankungen der Zykluszeit unterworfen. Das ist im Endeffekt dasselbe, als wenn die Parameter schwanken würden. Wenn, egal für welche Regelaufgabe, die Regelung tolerant genug gegenüber diesen Schwankungen ist, ist es kein Problem.
Weiterhin kann man bei der S7 eine Mindestzykluszeit angeben, natürlich nur länger als die normale. Sie wartet dann vor Beginn des nächsten Zyklus.
Schließlich könnte man dem Regler seit dem letzten Aufruf tatsächlich vergangenen Zeit als Parameter mitgeben und die Schwankungen sind belanglos, solange der Regler noch rechtzeitig reagiert. Ob das mit den Siemens-FBs funktioniert, weiß ich allerdings nicht.

kiestumpe
27.02.2007, 12:40
@ Zottel und Dagboert

Danke für eure Ausführungen. Im Prinzip die gleichen Bedenken, die ich auch bereits hatte.

Ich werd's bei der Änderung verschieben müssen, da das PLC-Programm in etwa doppelt so groß ist und neben Temperaturregelungen auch eine Druckregelung im Spiel ist...oder versucht ihr mal nen Pudding an die Wand zu nageln...

plc_tippser
27.02.2007, 13:30
Die Druckregelung läuft doch wohl im OB35???

Wenn dem so ist, kann der Hintergedanke sein, den OB35 schnell laufen zu lassen, z.B. 25ms und damit er nicht zu lange für die Bearbeitung von zig-Reglern benötigt, wurden die langsamen Strecken ausserhalb des OB35 realisiert.

pt

kiestumpe
27.02.2007, 13:46
Die Druckregelung läuft doch wohl im OB35???

pt
nein, die läuft im OB 1 - dass ist es ja grad... (s.o.)

Zottel
27.02.2007, 14:03
Auch eine Druckregelung kann ziemlich unkritisch sein (großer Kessel, kleine Pumpe, geringe Anforderungen).

plc_tippser
27.02.2007, 14:24
nein, die läuft im OB 1 - dass ist es ja grad... (s.o.)

Ja, das habe ich wohl nicht richtig verstanden. :oops: Aber vom Prinzip her ist der Gedanke ja dann nicht schlecht gewesen.:-D

Gruß,pt

kiestumpe
27.02.2007, 14:26
Aber bei einer Vordruckregelung habe ich da meine Bedenken.

Das Risiko ist mir zu hoch, sonst gibt das m.Meinung nach dem Effekt "Aber es hat doch schonmal funktioniert ...";)

Ich dachte eher, dass der FB41 noch einen internen Parameter hat, der das irgendwie kompensiert - aber manchmal ist als einfach als ich denke:rolleyes:

(Es geht mir eigentlich im Moment nur drum, den Mehraufwand dieses Projekts korrekt weiterzugeben, damit wir später keine bösen Überraschungen haben)

Werner54
27.02.2007, 16:09
Ich dachte eher, dass der FB41 noch einen internen Parameter hat, der das irgendwie kompensiert - aber manchmal ist als einfach als ich denke
Hallo,
besagten Parameter gibt es, er heißt CYCLE. In der Hilfe steht dazu:
"Die Zeit zwischen den Bausteinaufrufen muß konstant sein. Der Eingang Abtastzeit gibt die Zeit zwischen den Bausteinaufrufen an."
Im Umkehrschluß bedeutet dies, dass der FB41 nur im OB1 aufgerufen werden kann, wenn die Zykluszeit immer gleich bleibt und die Zykluszeit im Parameter CYCLE in Millisekunden eingetragen ist. Was für ein superschneller Regelkreis soll das denn werden?

TommyG
27.02.2007, 21:12
Puh,

bin ich froh...

300l Wasser, 50 kg Stahl, 200°C +, 10K....
Also unkritisch..
Bloß eine Druckregelung und die ist auch mit dem OB35 zufrieden ;)

Greetz