FB 41 Ausgang spielt verrückt

Sascha Klein

Level-1
Beiträge
18
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

Ich habe eine Temperaturregelung im Heizungsbereich mit dem FB 41 realiesiert, was mitlerweile auch super funktioniert. Mit dem Ausgangswert des Reglerbausteins fahre ich ein Mischerventil.

In der Anlage befinden sich 3 Mischerventile und der FB 41 wird 2 mal mit je einem anderen DB aufgerufen. Jetzt habe ich mich letztlich gewundert, warum das eine Ventil manchmal zuckt, und habe im Beobachtungsmodus herausgefunden, dass der Reglerausgangswert manchmal sehr stark "zuckt", z.B. wenn der Reglerwert auf 100% ist springt er ganz kurz auf ca. 70% und soifort wieder auf 100% zurück, was sich als "zuckendes" Ventil auswirkt. Ich habe vermutet, das ein PT 100 oder ein Analogeingang kurzfristig falsche Werte liefert, da der Regler von den Sensoren beeinflusst wird und habe darufhin ein kleines Programm geschrieben, mit min und max Wert Anzeige um dies zu beobachten, und habe festgestllt, dass dies nicht der Fall ist, die Werte der PT100 werden 100% korrekt eingelesen.

Hat jemand eine Idee, was ich eventuell nicht beachtet habe, denn das Problem tritt eben nur an einem Ventil auf.

PS: Meine CPU 313C-2DP

Vielen Dank im Vorraus

Gruß

Sascha Klein
 
schreib dir ein program dass wenn du wieder bei 70% bist, du mit einer positioven flanke einen bedingten sprung ausführst und dort alle eingangswärte des fb in merker geschrieben werden. dann siehst du wo das problem ist
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Sascha Klein,

vielleicht auch mal die Werte LMN-P, LMN-I und LMN-D überwachen. Dann sieht man, welcher Anteil des Reglers springt. Wir der Regler im OB35 aufgerufen (konstanter Aufrufzyklus)? Wenn nicht, könnte das Sprünge im I-Anteil hervorrufen.

MfG
FrankW
 
Wie hast du den Regler parametriert, wird er beim CPU-Start initialisiert, wo rufst du den Regler auf.
Setze doch mal deinen Aufruf des Reglers hier rein
 
hallo sascha klein,
immer das gleiche ventil ? komisch.... ist bei der abarbeitung vom fb41 bei dem ventil was anders ?
du schreibst das die werte 100% korrekt eingelesen werden.hast du die werte zyklisch produkolliert oder wie hast du das festgestellt?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

Vielen Dank für die nützlichen Tipps, ich habe nun ein Programm geschrieben das mir die Eingangswerte in einen DB schreibt und habe folgendes festgestellt. Der SP_INT springt kurz auf einen falschen Wert, was sich dann auch auf den Regler auswirkt. Also liegt das Problem doch nicht am Reglerbaustein. Der Wert für SP_INT wird in einem FC anhand verschiedener Zustände auf einen bestimmten Wert eingestellt. Daraufhin habe ich das Programm, welches mir die Eingangswerte in den DB schreibt einmal im OB 35 (wo der Regler aufgerufen wird) und am Ende des FC´s, in welchem der Sollwert bearbeitet wird aufgerufen und bin auf folgendes Ergebnis gekommen, der Sollwert im OB 35 bei diesem Ventil "zucken" ist anders als im FC, wo er bearbeitet wird. Natürlich habe ich gleich nachgeschaut, ob der Wert an einer anderen Stelle im Programm bearbeitet wird, was aber nicht der Fall ist.

Was könnte das Problem sein? Kann es eventuell etwas mit dem Aufruf des OB 35 zu tun haben, dass dieser zwischen der Programmbearbeitung des OB1 aufgerufen wird und in dem Moment, in dem dieser Wert einen anderen Wert hat abfragt? (Der Wert wird während dem OB1 Zyklus mehrfach geändert, bzw. je nach Vorrang überschrieben)

Vielen Dank nochmals für die TOLLE Hilfe

Gruß

Sascha Klein
 
Hallo zusammen,

Vielen Dank für die nützlichen Tipps, ich habe nun ein Programm geschrieben das mir die Eingangswerte in einen DB schreibt und habe folgendes festgestellt. Der SP_INT springt kurz auf einen falschen Wert, was sich dann auch auf den Regler auswirkt. Also liegt das Problem doch nicht am Reglerbaustein. Der Wert für SP_INT wird in einem FC anhand verschiedener Zustände auf einen bestimmten Wert eingestellt. Daraufhin habe ich das Programm, welches mir die Eingangswerte in den DB schreibt einmal im OB 35 (wo der Regler aufgerufen wird) und am Ende des FC´s, in welchem der Sollwert bearbeitet wird aufgerufen und bin auf folgendes Ergebnis gekommen, der Sollwert im OB 35 bei diesem Ventil "zucken" ist anders als im FC, wo er bearbeitet wird. Natürlich habe ich gleich nachgeschaut, ob der Wert an einer anderen Stelle im Programm bearbeitet wird, was aber nicht der Fall ist.

Was könnte das Problem sein? Kann es eventuell etwas mit dem Aufruf des OB 35 zu tun haben, dass dieser zwischen der Programmbearbeitung des OB1 aufgerufen wird und in dem Moment, in dem dieser Wert einen anderen Wert hat abfragt? (Der Wert wird während dem OB1 Zyklus mehrfach geändert, bzw. je nach Vorrang überschrieben)

Vielen Dank nochmals für die TOLLE Hilfe

Gruß

Sascha Klein

hallo sascha klein,
das es am fb41 liegt wäre unwahrscheinlich da dieser baustein x fach eingesetzt wird.
ohne jetzt dein programm zu kennen ergeben sich für mich eigentlich nur 2 möglichkeiten.
1. dein messgeber hat ein problem
2. deine aio an diesem anschluss hat ein problem

hast du schon die messgeber schon getauscht? wandert dann der fehler?
viele grüße
klaus.ka
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist der Grund für das "Zucken". Der OB35 unterbricht den OB1 an den unterschiedlichsten Stellen. Baue dein Programm so um dass der Sollwert im OB1-Zyklus nur einmal zugewiesen wird!

Vielen Dank für die schnelle Antwort, ich habe das Programm jetzt so aufgebaut, dass der Sollwert direkt im OB 35 Zyklus zugewiesen wird, da ich ihn ja nur dort benötige und bisher hat das wunderbar funktioniert.

Gruß

Sascha Klein
 
Vielen Dank für die schnelle Antwort, ich habe das Programm jetzt so aufgebaut, dass der Sollwert direkt im OB 35 Zyklus zugewiesen wird, da ich ihn ja nur dort benötige und bisher hat das wunderbar funktioniert.

Gruß

Sascha Klein

hallo
wo hast du denn denn den sollwert eingebunden? nicht im baustein wo du den regler aufrufst?
 
hallo
wo hast du denn denn den sollwert eingebunden? nicht im baustein wo du den regler aufrufst?

Hallo,

Ich habe den Sollwert im OB35 berechnet und rufe dannach auch im OB 35 den Reglerbaustein FB 41 auf und weise ihm diesen Sollwert zu, somit habe ich verhindert, dass durch die Unterbrechungen des OB1 Zyklus die falschen Sollwert an den Baustein übergeben werden.

Gruß

Sascha Klein
 
hallo sascha
und wo hast du den sollwert als er überschrieben worden ist bereit gestellt?
sorry steh etwas auf dem schlauch

Hallo,

Kein Problem ich erkläre die ganze Situation nochmal.

Ich habe mir in einer Funktion, welche im OB1 aufgerufen wurde den Sollwert durch verschiedene Bedingungen und Vorränge bestimmt.

Auszug aus meinem Programm.

L "DB Umrechnung Temperatur".ATB6
L "DB Ventil -V3".Temperaturdifferenz
+R
T "DB Ventil -V3".SollwertVorlauf
//Auf Vorlaufmaximaltemperatur anhand der Außentemperatur begrenzen
U(
L "DB Ventil -V3".SollwertVorlauf
L "DB Ventil -V3".MaxVorlaufTemperatur
>R
)
U "Regelung_Außentemp"
SPB MA1
SPA MA2

MA1: L "DB Ventil -V3".MaxVorlaufTemperatur
T "DB Ventil -V3".SollwertVorlauf

MA2: NOP 0


//Auf Vorlauftemperatur-Handwert einstellen

U "DB Visualisierung".Handwert_Vorlauftemp_ein
SPB MA3
SPA MA4

MA3: L "DB Visualisierung".handwert_vorlauftemp
T "DB Ventil -V3".SollwertVorlauf

MA4: NOP 0


//Auf 0°C Vorlauftemperatur einstellen wenn Pumpe -P4 ausgeschaltet ist
//um das Ventil zu schließen, damit die Wärme nicht steigt.

UN "-K5"
UN "Übertemperatur"
SPB MA5
SPA MA6

MA5: L 0
ITD
DTR
T "DB Ventil -V3".SollwertVorlauf

MA6: NOP 0


//Auf 60°C Vorlauftemperatur einstellen wenn Übertemperaturmodus aktiv

U "Übertemperatur"
SPB MA7
SPA MA8

MA7: L 60
ITD
DTR
T "DB Ventil -V3".SollwertVorlauf

MA8: NOP 0




Kurze Erläuterung: Ich lade die Temperatur vom Rücklauf (ATB6), rechne dieser einen eingestellten Wert (15K) hinzu und transferiere dies in den Vorlaufsollwert um die Vorlauftemperatur 15K wärmer zu halten, als die Rücklauftemperatur. Dann habe ich eine zu und wegschaltbare Funktion, welche die Vorlauftemperatur anhand der Außentemperatur begrenzt. Ist diese Funktion eingeschaltet wird der berechnete Wert für die Solltemperatur in den Vorlaufsollwert geladen. Dann gibt es die Funktion Handwert, hier wird sofern diese eingeschaltet ist der Handwert geladen und in den Vorlausollwert transferiert. Dann wird sofern die Heizungspumpe ausgeschaltet ist 0 in den Vorlaufsollwert geladen, um das Ventil zu schließen, wenn die Pumpe ausgeschaltet ist. Als letztes wird im Falle einer Übertemperaturstörung 60 in den Vorlaufsollwert transferiert, damit das Ventil öffnet und ich die Temperatur verringern kann bzw. sich im Heizungssystem verteilt.

Der Vorlaufsollwert wurde dann dem Reglerbaustein FB 41, welcher im OB 35 aufgerufen wurde zugewiesen. Der OB35 unterbricht den OB1-Zyklus und war der OB1 Zyklus gerade bei dieser Sollwert-Zuweisung konnte es vorkommen, dass dieser dann einen falschen Wert hatte. weil er nicht fertig zugewiesen war. Nun habe ich diese ganze Zuweisung einfach an den Anfang des OB 35 gesetzt, so ist es ausgeschlossen, dass der Sollwert noch nicht fertig zugewiesen ist.

Falls noch Fragen sind, kannst du gerne fragen.

Gruß

Sascha Klein
 
hallo sascha
jetzt hab ich es verstanden was du programmiert hast...
hätte noch andere lösungsmöglichkeiten gegeben
aber schön das es jetzt klappt
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hätte noch andere lösungsmöglichkeiten gegeben

Hallo,

Ja klar es gibt immer mehrere Lösungsmöglichkeiten, wäre mir bekannt gewesen, dass der OB35 den OB1-Zyklus unterbricht, hätte ich die Zuweisung ganz anders aufgebaut. Das kopieren in den OB35 war meines Erachtens nach jetzt die unkomplizierteste Möglichkeit.

Viele Grüße

Sascha Klein
 
Hallo,

Ja klar es gibt immer mehrere Lösungsmöglichkeiten, wäre mir bekannt gewesen, dass der OB35 den OB1-Zyklus unterbricht, hätte ich die Zuweisung ganz anders aufgebaut. Das kopieren in den OB35 war meines Erachtens nach jetzt die unkomplizierteste Möglichkeit.

Viele Grüße

Sascha Klein


hallo sascha
ja denn der ob 1 hat nunmal die niedrigste priorität (1) .
die höchste ich glaub ich Priorität 27
somit wird er von jedem bausteinaufruf unterbrochen .
ja geb dir recht ist/war die einfachste möglichkeit.
 
Zurück
Oben