Regleraufrufe aus OB35 oder 100ms Takt

sailor

Level-1
Beiträge
641
Reaktionspunkte
27
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.
Wie macht ihr eure Regleraufrufe (z.B. FB41)? Ich hab hier die Meinung, daß es besser ist, die Regler aus den zyklischen Programm aufzurufen und nur alle z.B. 100ms (auch versetzt) zu bearbeiten, da der OB 35 unter Umständen an Stellen im Zyklus aufgerufen werden kann, wo es nicht so gut ist. (Ansonsten muß dort Alarmverarbeitung gesperrt u. freigegeben werden).

Viele Grüße
Sailor
 
Hi

Hast du eine langsame Regelstrecke --> Aufruf alle 5000 ms ;-)


Ein Zyklischer Aufruf verbraucht hier zuviel Rechenleistung.

Ich schaue z.b. auch nur 1 mal am Tag in meinen Briefkasten :ROFLMAO:
Und --> Sontags nie. :cool:



Ergo: OB35 ist gut und sinnvoll.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hast du eine langsame Regelstrecke --> Aufruf alle 5000 ms

Was meinst du denn damit? 100ms!


Ein Zyklischer Aufruf verbraucht hier zuviel Rechenleistung.

Ich habe einen Zeittakt, gebildet im OB1, aus der letzten Zykluszeit (OB1_prev_Cycle) mit Überlauf-Save und bearbeite damit den Regler nur 1 Zyklus alle 100ms mit Unschärfe Zykluszeit.
 
Hallo.
Wie macht ihr eure Regleraufrufe (z.B. FB41)? Ich hab hier die Meinung, daß es besser ist, die Regler aus den zyklischen Programm aufzurufen und nur alle z.B. 100ms (auch versetzt) zu bearbeiten, da der OB 35 unter Umständen an Stellen im Zyklus aufgerufen werden kann, wo es nicht so gut ist. (Ansonsten muß dort Alarmverarbeitung gesperrt u. freigegeben werden).

Weckalarm is meinermeinung nach besser, besonders bei Zeitkritischen Reglern
getaktete aufrufe aus dem OB1 geht manchmal bei Zeitkritischen Sachen nicht gut.



Zum Beispiel hast du bei einer längeren Zykluszeit ja meistens keinen wirklichen 100ms Aufruf, mal is es dann ein 102 ms Takt, dann wieder 145 ms je nach zykluszeit eben, bei nicht so kritischen Reglern gut möglich aber bei Zeitkritischen Reglern schon blöd.
 
Das gleicht sich beim nächsten Zyklus wieder aus, da der Überlauf gerettet wird. Ich bin der Meinung, dass bei Zykluszeiten von 45ms was nicht stimmt. <25ms ist ok. Oder???
Bitte weitere Beiträge --> Danke !
Sailor :s12:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das gleicht sich beim nächsten Zyklus wieder aus, da der Überlauf gerettet wird. Ich bin der Meinung, dass bei Zykluszeiten von 45ms was nicht stimmt. <25ms ist ok. Oder???

45 ms, bei größeren Anlagen kommt das schon vor, ist ansich ja kein Prob

PS: kann bei kleinen Anlagen und saumäßiger Programmierung auch vorkommen :rolleyes:
 
Hi,
@MW: 45ms ist meiner Meinung zu viel => schnellere CPU kaufen
@gravieren: Sorry, ich will hier nur grundsätzlich diese Problematik eruieren
Ich mach Regler von Krücke bis Rakete, bei Instanzen >3 versetz ich die Aufrufe. Ziel der ganzen Aktion ist AUCH, eine möglichst gleichmäßige Zykluszeit hinzubekommen (mit versetzten Aufruf und Nichtbenutzen des OB35 für Regleraufrufe) und um damit "stabilere" Programme zu erreichen.
Gruß
Sailor
 
Wenn Du Deinen Regler im 100ms Raster aufrufst (via Timer), und Dein OB1 z.B. eine Zykluszeit von z.B. 30ms hat, kannst Du Dir einen Zeitfehler von eben 30ms einfangen (Dann, wenn dein Timer am Ende von OB1 noch 1ms Restzeit hat, und erst im nächsten Zyklus abläuft)

Wenn Du nur einen P-Regler hast, ist das egal. Bei I und D Anteilen in Deinem Regler können dann aber schon je nach Höhe Deiner P-D-Anteile "ordentliche" Fehler rauskommen. (Siehe Berechnungen)

I-Regler:
Summe_Abweichung = Summe_Abweichung + Aktualabweichung
y = I_Anteil * Abtastzeit * Summe_Abweichung

D-Regler:
y = D_Anteil * (Aktualabweichung – AlteAbweichung)/Abtastzeit


Da so ein Aufruf vom PID Baustein auf einer 315 maximal 1,5ms dauert, würde das selbst bei 10 Aufrufen gerade mal 15ms ausmachen. Wenn das für Deine Anlage nicht weiter schlimm ist, würde ich die PID-FBs immer in OB35 aufrufen.
 
Danke erstmal.
Ich glaub, du hast mich nicht richtig verstanden. Ich hab keinen Timer. Ich addiere im OB1 die Zykluszeit (letzte) bis 100ms, rette den Überlauf für die nächsten 100ms, usw.. Ich hab den Timer mal in einer laufenden (größeren) Anlage laufen lassen und gestoppt. Ich hatte nach 10 min keine Abweichung > 1sek feststellen können.
Sailor
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok, dann ist Dein Verfahren ein wenig anders gelagert. Das ändert aber nichts daran, daß Dein Aufruf vom Zeitraster des OB1 abhängig ist. Insofern ist der Fehler beim Aufruf über die Zykluszeitaddition identisch mit dem eines Timers.
 
Die Abtastzeit wirkt sich auf die Regelgüte auf und wenn jemand den Regler im OB1 aufruft, kann man nicht mehr richtig regeln. einen Regler kann man nur sinnvoll in einem Weckalarm aufrufen.
 
Hi,
@MW: 45ms ist meiner Meinung zu viel => schnellere CPU kaufen

Nö, kannste so nicht sagen. Also ich hab letztens eine Anlage gehabt mit ner Zykluszeit von 60ms. Naja, große oder kleine Anlage ist definitionssache. War ne 315-2-PN-DP.
Aber waren ca. 60 Regler. Aber die Zykluszeit hat man auch mit weniger Reglern leicht zusammen....

Also, man kann absolut nicht sagen 45ms ist zuviel. Da sag ich jetz einfach mal ganz klar, das ist FALSCH!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@sailor

was wäre denn ein ungünstiger zeitpunkt in deinem ob1 zyklus, in welchem ein weckalarm ein problem verursachen würde?

ein regler aufruf (nat. abhängig von verschiedenen faktoren) dauert nur wenige ms. was hast du denn vor bzw. wieviele regler willst du denn aktualisieren?

wenns wirklich viele regler sind und du verhindern willst, dass zu viele auf einmal aufgerufen werden, kannst du die regler in mehrere weckalarmOBs aufteilen und eine phasenverschiebung einstellen.

du solltest dir auch überlegen ob denn eine abtastzeit von 100ms denn wirklich nötig ist. ausser wirklich schnelle regelungen wie zb. bei einspritzungen etc. erscheinen mir solche abtastzeiten für 0815 anwendungen wie zb. eine klappenstellung für medien eher unnötig prozesslastig.

grüsse
 
Hi,
@MW: 45ms ist meiner Meinung zu viel => schnellere CPU kaufen

Mach ma nen Vorschlag, es is eine 416F, da gibbet nix schnelleres :ROFLMAO: :cool:

Ok, dann ist Dein Verfahren ein wenig anders gelagert. Das ändert aber nichts daran, daß Dein Aufruf vom Zeitraster des OB1 abhängig ist. Insofern ist der Fehler beim Aufruf über die Zykluszeitaddition identisch mit dem eines Timers.
*ACK*
 
Ohne OB35 arbeitet der FB41 nicht richtig.
--> Nachschauen im Siemens Support.

Gruß Peter
Liefere doch bitte einen Link mit, wenn du auf den Support verweist.

Also in der Siemens FAQ steht folgendes

...
Bei Nutzung dieser Bausteine beachten Sie bitte nachfolgende Punkte.
  1. FB 41 "CONT_C"
  • Der Regler sollte in einem Weckalarm-OB aufgerufen werden (z.B. OB35).
  • Der Parameter "CYCLE" entspricht der Abtastzeit. Hier muss die Zeit zwischen den Bausteinaufrufen parametriert werden.
  • Der Regler ist defaultmäßig auf Handbetrieb eingestellt (MAN_ON=true). Der Regelkreis ist unterbrochen. In dieser Betriebsart wird die Stellgröße dem Handwert MAN nachgeführt.
  • Für eine stoßfreie Umschaltung von Hand nach Automatikbetrieb sind mindestens 2 Durchläufe des Bausteins im Handbetrieb erforderlich.
  • Der Baustein sollte beim Neustart der CPU einmal mit "COM_RST" = true durchlaufen werden.
  • Der Parameter "COM_RST" kann zum Sperren des Reglers verwendet werden.
...
 
Hallo marlob,

mea culpa, ich gelobe Besserung wg. Link.

Den "COM_RST" setze ich im OB100 (S Merker) und lösche in im ersten Aufruf
des Regler im OB 35, (R Merker). Das stellt die Initialisierung des FB41 sicher.
Bei "CYCLE" kommt die Zykluszeit des OB 35 hin.
Ein Versuch mit einem Timeraufruf des Reglers scheiterte.

Gruß Peter
 
Zurück
Oben