Brennersteuerung

Begonnen von hugo, 31. Dezember 2006, 13:31:50

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 9 Gäste betrachten dieses Thema.

hugo

FUNCTION_BLOCK Burner
VAR_INPUT
   in : BOOL;
   over_temp : BOOL;
   oil_temp : BOOL := TRUE;
   Flame : BOOL;
   rst : BOOL;
   rst_timer : BOOL;
END_VAR
VAR_INPUT CONSTANT
   vorheizzeit : TIME := t#5s;
   vorbelueftungszeit : TIME := t#15s;
   vorzuendzeit : TIME := t#5s;
   nachzuendzeit : TIME := t#25s;
   sicherheitszeit : TIME := t#5s;
   sperrzeit : TIME := t#10s;
   mehrfachzuendung : BOOL := TRUE;
   KW : REAL;
END_VAR
VAR_OUTPUT
   motor : BOOL;
   oel_ventil : BOOL;
   pre_heat: BOOL;
   zuendung : BOOL;
   betriebsstunden : REAL;
   KWh : REAL;
   fail : BYTE;
END_VAR
VAR
   state : BYTE;
   last : TIME;
   tx: TIME;
   last_change: TIME;
   timer : ontime;
   oil_temp_last: BOOL;
END_VAR

(*
version 1.3   31 dec 2006
programmer    oscat
tested by      tobias

burner ist eine Oel-Brenner_steuerung fuer nichtmodulierende Oelbrenner
die steuerung kann ueber setup werte programmiert werden und entsprechenden brennern angepasst werden.
die vorheizzeit ist die zeit die eine oelvorwaermung aufgeheizt wird bevor der motor gestartet wird.
der eingang oil_temp gibt an ob die oil_temp erreicht wurde, er ist default auf true und kann auch offen gelassen werden.
die vorbelueftungszeit ist die zeit die der luefter laeuft bevor die oelzufuhr freigegeben wird.
die vorzuendzeit iust diejenige zeit die die zuendung vor offnen des oelventiel gestartet wird.
nachzuendzeit ist die zeit die nach entzuendung der flamme noch gezuendet wird.
die sicherheitszeit ist die zeit nach der die oelzufuhr gesperrt wird wenn keine flamme entsteht.
nach ablauf der sicherheitszeit wird ein fehler flag gesetzt und kann erst nach der sperrzeit wieder durch einen reset geloescht werden.
waehrend der sperrzeit ist keine weitere zuendung oder einschalten moeglich.
das flag mehrfachzuendung gibt an ob eine erloschene flamme in betrieb automatisch wieder gezuendet werden soll.
der flammwaechster liegt auf eingang flamme, ein uebertemperaturschutz auf dem eingang over_temp
der betriebsstundenzaehler gibt die brennerstunden in stunden als real ausgabewer an.
der ausgang motor steuert den luefter / pumpenmotor, oil_ventil schaltet das oil ventil und zuendung schaltet die zuendung ein.

if output fail > 0 an error happened and the output has an error code:
0 :   no error
1 :   pre heating time expired and oil temp input is not true
2 :   flame monitor is active during preheating time
3 :   flame monitor active during pre_ventilation_time
4 :   no ignoition during safety time
5 :   no flame during operation
9 :   overtemp input is true

*)

tx := TIME();

(* check rst input and rst if true *)
IF rst OR over_temp OR state = 0 THEN
   IF fail > 0 AND tx - last >= sperrzeit AND rst THEN
      fail := 0;
   ELSE
      (* normaler reset *)
      motor := FALSE;
      oel_ventil := FALSE;
      zuendung := FALSE;
      pre_heat := FALSE;
      IF over_temp THEN fail := 9; END_IF;
      last_change := tx;
      last := tx;
      state := 1;
   END_IF;
END_IF;

(* check for timer rst and rst timer if true *)
IF rst_timer THEN
   timer( rst := TRUE);
   timer.rst := FALSE;
END_IF;

CASE state OF

1:   (* in signal starts oil pre heating *)
   IF in AND NOT flame THEN
      pre_heat := TRUE;
      state := 2;
      last_change := tx;
   END_IF;

2:   (* after pre_heating time start motor *)
   IF (tx- last_change >= vorheizzeit AND oil_temp) OR (oil_temp AND NOT oil_temp_last) THEN
      motor := TRUE;
      state := 3;
      last_change := tx;
   (* vorheizzeit ist abgelaufen und oil_temp ist nicht aktiv *)
   ELSIF tx - last_change >= vorheizzeit AND NOT oil_temp THEN
      state := 7;
      pre_heat := FALSE;
      fail := 1;
      last_change := tx;
   (* flame monitor cannot be active at this time *)
   ELSIF flame THEN
      state := 7;
      pre_heat := FALSE;
      fail := 2;
      last_change := tx;
   END_IF;

3:   (* abwarten bis zündung eingeschaltet werden kann *)
   IF tx - last_change >= vorbelueftungszeit - vorzuendzeit THEN
      zuendung := TRUE;
      state := 4;
      last_change := tx;
   (* flame monitor cannot be active at this time *)
   ELSIF flame THEN
      state := 7;
      pre_heat := FALSE;
      motor := FALSE;
      fail := 3;
      last_change := tx;
   END_IF;

4:   (* warten bis oelzufuhr geoeffnet werden darf *)
   IF tx - last_change >= vorzuendzeit THEN
      oel_ventil := TRUE;
      state := 5;
      last_change := tx;
   END_IF;

5:   (* warten auf flammwaechter und falls noetig abschalten *)
   IF tx - last_change >= sicherheitszeit OR flame THEN
      IF NOT flame THEN
         (* notabschaltung da flammwaechster nicht angesprochen hat *)
         state := 7;
         motor := FALSE;
         oel_ventil := FALSE;
         pre_heat := FALSE;
         zuendung := FALSE;
         fail := 4;
         last_change := tx;
      ELSE
         state := 6;
         last_change := tx;
      END_IF;
   END_IF;

6:   (* brenner läuft, flammueberwachung und nach ablauf der nachzuendungszeit zuendung abschalten *)
   IF NOT flame AND NOT mehrfachzuendung THEN
      (* notabschaltung da flammwaechster keine flamme meldet *)
      state := 7;
      motor := FALSE;
      oel_ventil := FALSE;
      pre_heat := FALSE;
      zuendung := FALSE;
      fail := 5;
      last_change := tx;
   ELSIF NOT flame AND mehrfachzuendung THEN
      zuendung := TRUE;
      state := 5;
      last_change := tx;
   ELSIF tx - last_change >= nachzuendzeit THEN
      (* nachzuendzeit abgelaufen, zuendung abschalten *)
      zuendung := FALSE;
   END_IF;

END_CASE;

(* abschaltung wenn kein eingangssignal *)
IF NOT in AND state > 1 THEN
   state := 1;
   motor := FALSE;
   oel_ventil := FALSE;
   zuendung := FALSE;
   pre_heat := FALSE;
   last_change := tx;
END_IF;

(* betriebsstundenzähler *)
timer(in := flame AND in AND motor AND oel_ventil);
betriebsstunden := timer.ontime;
KWH := betriebsstunden * KW;

(* zeit fuer naechsten aufruf merken *)
last := tx;


(*
31.12.2006   hm      rev 1.1
   added pre_heat timing and output
   flame monitor bofe ignition will generate failure output
   added output for KWh

31.12.2006   hm      rev 1.2
   added oil_temp_input

31.12.2006   hm      rev 1.3
   changed fail output to be byte instead of bool

*)

swmggs

Hallo Hugo,

ob das gut geht ?.

Wenn ich das richtig verstehe müsste ich ja das Steuergerät des Brenners abbauen und auf die SPS drauflegen.
Denke das würde noch gehen, aber wie verarbeitest du das Signal vom Flammwächter ?

mfg swmggs

hugo

ganz einfach ueber einen eingang an der sps
das modul hat eingaenge für in (steuerbefehl), flamme (flammwaechster), over_temp (temp_schutz des kessels)
sowie rst (reset puls nach fehler) und betriebsstunden rst fuer den betriebsstundenzaehler.

natuerlich macht das ganze nur dann sinn wenn du mit den funktionen deines vorhandenen steuergeraetes nicht zufrieden bist oder wenn wie in meinem fall erst gar keines vorhaden ist.

swmggs

welches SPS-Modul benützt du denn dafür, speziell der Eingang Flammwächter würde mich interessieren.
Es gibt ja doch verschiedene Flammwächterfabrikate, und welche für Gelbbrenner und Blaubrenner.

swmggs

swmggs

und ich glaube es fehlt vor Ablauf Motor an , Zündung usw. der Befehl Ölvorwärmer an, und erst nach Rückmeldung Ölvorwärmer Temperatur ok sollte das ablaufen.

und eine Hysterese eingeben, das zu Betriebsbeginn des Brenners nicht eine Abschaltung durch den Ölvorwärmer kommt

swmggs

swmggs

 ;D ;D

und noch ganz wichtig!!

Funktion Fehlbeleuchtung, also wenn die Flamme vor Öffnung Magnetventil kommt

hugo

ich habe das modul soeben geschrieben und simuliert, aber noch nicht im einsatz.
ich gehe davon aus das der flammwaechster ein simples ein / aus signal also kontakt liefert.
zum einsatz soll es erstamals kommen an einem buderus 85KW kessel mit wolf brenner.

hugo

danke fuer deine inputs, die machen sinn, habe es momentan nach vorgaben von wolf und hoval gemacht, die kennen keine vorwaermung, werde es aber einbauen.

werde das modul auch auf eine 2te brennerstufe erweitern

swmggs

Der Flammwächter bei einem Gelbbrenner ist eine Fotozelle, ich glaube die bringt Millivolt oder sowas (bin halt nur ein Heizi), Blaubrenner ist
Infrarot, weiss garnicht ob es so ne Klemme gibt, und es wird auch wohl ein Problem sein die Werte von-bis zu ermitteln wann die Flamme ok ist.

swmggs

 ;D ;D

zweite Brennerstufe:

musst du aufpassen das das 2. Magnetventil vor Öffnen der Luftklappe 2. Stufe aufmacht, sonst kanns in die Hose gehen (Flamme reisst ab)

swmggs

hugo

#10
hier der neue code aber noch ohne 2te stufe, denke ich mache einen weiteres modul fuer die 2 stufigen brenner, möchte aber erst das jetzige ausgetestet haben

das mit dem flammwaechster schaue ich mir anfang des neuen jahres an wenn ich den brenner vor mir habe, in jedem fall sollte das signal aber ausserhalb dieses moduls verarbeitet werden.
entweder schalteingang oder analogeingang mit analogverarbeitung in software.

wenn du mir testen helfen kannst waere das super.

viele gruesse und guten rutsch ins neue jahr



swmggs

gerne Helfe ich testen.

aber um ganz ehrlich zu sein finde das Ding ist eine heisse Kiste.

Was sagt der Hersteller, Garantie usw, was ist wenn das mal aus irgendwelchen Gründen die Sicherheitsfunktionen nicht klappen und der Kessel dicke Backen macht oä,

und meistens hat jeder Brennerhersteller seine eigene Strategie mit den Endschalter usw, da gäbe es auch noch viel zu beachten,

und wir armen Heizungsbauer ...Ersatzteile ? . Ein Steuergerät einfach kostet ca 50 Teuros, und Wartungen nur mit dem Schlepptop ?

aber wie gesagt nur meine Meinung, und helfen tue ich trotzdem gerne ;D ;D ;D

ebenfalls guten Rutsch

swmggs

swmggs

auf wie oft steht die Mehrfachzündung ?

Darf nur einmal sein !

swmggs

hugo

beliebig, es gilt nur fuer den fall das die flamme im betrieb abbricht, nicht für den start, dort gilt nur einmal,
wenn die flamme im betrieb abreisst wird einmal versucht wieder zu zuenden, geht dies nicht kommt sofort stoerung.

swmggs

Hallo Hugo,

als Anhang Beschreibung eines Steuergerätes Kleinbrenner, steht alles drin von wegen Fotozelle und Spannung usw.

Das Fabrikat ist ein ziemlich gebräuchliches Teil.

mfg swmggs