-Menü

Beiträge anzeigen

Dieser Abschnitt erlaubt es Ihnen, alle Beiträge anzusehen, die von diesem Mitglied geschrieben wurden. Beachten Sie, dass Sie nur Beiträge sehen können, die in Teilen des Forums geschrieben wurden, auf die Sie aktuell Zugriff haben.

Beiträge anzeigen-Menü

Beiträge - thommy01

#1
Ankündigungen / Announcements / Re:Referenzen
13. Januar 2011, 18:19:27
Hallo,

verwende die OSCAT in vielen Bereichen.

Im privaten Bereich (Heizungssteuerung)

Am Arbeitsplatz mit Wago 750871 für Temperierungen und Betriesbdaten und Störmeldungen.

Die OSCAT hat da schon viel geholfen Projekte schnell und effizient zu realisieren. Ohne sie wäre so mancher Zeitrahmen schon geplatzt. Duch die Verfügbarkeit des Quellcodes bekomme ich ein ganz anderes Verständniss was mit ST machbar ist und wie manche Problem angegangen werden können.

Super sache und vielen Dank an dieser Stelle
#2
Hallo Hugo,

danke für die Info. Nachdem ich nun mit den anderen Sachen fertig war habe ich mir den Heat_meter baustein aus der lib 3.04 heute nochmals genauer angesehen und wollte gerade meine Fehler Analyse eintrage als ich deine Antwort sah.
Kannst du auch noch die Sourcen zur Verfügung stellen damit ich sehen kann welche Änderungen du gemacht hast.

Aber hier noch meine Erkentnisse. Du kannst ja mal vergleichen ob du das selbe entdeckt hast.

Fall 1: Wärmemenge Berechnung für Zirkulationspumpe
Nachdem ich den Integrierer Baustein immer "gestoppt" habe wenn der Eingang "e" "false"  ist war der Effekt weg und die Aufsummierung wie erwartet.

Fall 2: Wärmemenge Berechnung für Solaranlage1
Die Angabe "Wärmekapazität" der zweiten Komponente  muß in Joule erfolgen und nicht in KJ wie in der Dokumentation beschrieben. Dann ist auch das Ergebniss wie erwartet


Durchgeführte Änderungen von mir in dem Baustein:

IF rst THEN
   int1(rst := TRUE);
   int1.rst := FALSE;
   C := Y := 0;
ELSIF e THEN
   X := (WATER_DENSITY(SEL(return_meter, TF, TR), FALSE) * (WATER_ENTHALPY(TF) - WATER_ENTHALPY(TR)) * (1-content) + CP * Density * content*(TF-TR));
   IF pulse_mode THEN
      IF NOT edge THEN Y := Y + X * LPH; END_IF;
   ELSE

(* -----  Eingefügt damit bei "nicht Pulsmode" der integrator gestartet wird.  T.H.
           orginal war "int1(in := X * LPH / 3600.0, out_min := 0, out_max := 3E38);"  ------*)

         int1(in := X * LPH / 3600.0, out_min := 0, out_max := 3E38, run := TRUE);
         Y := int1.Out;
   END_IF;
END_IF;

(* store the value of e *)
edge := e;

(* read system_time *)
tx := T_PLC_MS();

(* only init at startup necessary *)
IF NOT init THEN
   init := TRUE;
   last := tx;
END_IF;

(* -----  Eingefügt damit bei "nicht Pulsmode" der Integrator gestoppt wird T.H. ------*)

IF NOT pulse_mode AND NOT e THEN
         int1(run := FALSE);
         Y := int1.Out;
END_IF;

(* -----  Eingefügt ende ------*)


(* calculate the current consumption *)
IF (tx - last >= TIME_TO_DWORD(AVG_TIME)) AND (avg_time > T#0s) THEN
   last := tx;
   C := (Y - Y_last) * 3.6/DWORD_TO_REAL(TIME_TO_DWORD(AVG_TIME));
   Y_last := Y;
END_IF;



(* revision history
hm   16. nov. 2007   rev 1.0
   original version

hm   24. dec. 2007   rev 1.1
   added config variable return_meter
   added output C for current consumption

hm   6. mar. 2008   rev 1.2
   corrected an error in pulse mode

hm   16. mar. 2008   rev 1.3
   added type conversion to avoid warnings under codesys 3.0

hm   21. oct. 2008   rev 1.4
   improved code

hm   6. nov. 2008   rev 1.5
   changed to FT_INT2 to avoid overrun at hig values

hm   8. feb. 2009   rev 1.6
   changes Y to be I/O
*)
#3
SPS-Hardware / Re: Webvisu 750-841 will nicht
22. Februar 2009, 10:39:07
Hallo,

nach meiner Beobachtung überträgt Codesys die Webvisu nur wenn sich im Programm etwas geändert hat. Es prüft nicht ob die Visu Dateien eine Änderung haben.

Alledings kannst du die Visu Dateien auch einzeln im Online Modus, aus dem "Compile" Verzeichniss, auf die Steuerung übertragen. Dies geht auch mit FTP (ins Verzeichniss PLC).

Je nach Programm Größe würde ich die Visualisierung allerdings komprimiert auf der Steuerung ablegen (Option Komprimierung bei Webvisu" da sonst schnell der Platz auf der Steuerung erschöpft ist.

Ich hatte am Anfang etwas Probleme mit der Webvisu da im Browser immer wieder die Verbindung abgerissen ist. Nachdem ich die Taskkonfiguartion für die Programme auf der Klemme verwendet habe blieb ausreichend Rechenleistung für die Webvisu übrig und das Problem war weg.

#4
Hallo Alle zusammen,

habe für eine Heizungssteuerung mit Solaranlage den Baustein "Heat_meter" zweimal verwendet und in beiden Fällen stimmt meines Erachtens das berechnete Ergebniss bzw. Funktion nicht.

Fall 1: Wärmemenge Berechnung für Zirkulationspumpe

Heat_Meter Modus: Liter je Stunde ohne Durchflussgeber
TF= 45°C, TR = 25°C, LPH 120, E = Pumpenansteuerung, "CP, Density und Content" = 0, Pulse Mode = False, Return
Meter= False, AVG_time = t#10s
Ergebniss:
Die Pumpe läuft für 360sek, die Angezeigte AVG und Gesamtmenge an Y stimmt
Die Pumpe läuft nach einer Pause wieder an und hier springt nun der AVG Wert im ersten zyklus auf ein paar hundert kwh und Y springt um einen Wert sehr großen Wert nach oben.

Es sieht für mich so aus als würde der Baustein intern weiter rechnen und aufsummieren. Muss ich außer dem Pumpensignal nocht etwas anderes beschalten?


Fall 2:
Wärmemenge Berechnung für Solaranlage
Heat_Meter Modus: 10 Liter je Impuls mit Durchflussgeber im Rücklauf
TF= 61°C, TR = 51°C, LPH 10, E = Impulsgeber Kontakt, CP = 3.58, Density= 1.044, Content=0.453, Pulse Mode = True, Return Meter= true, AVG_time = t#60s
Ergebniss:
Der Baustein berechnet nicht wenn Zählimpulse an "E" ankommen. Nach ändern des Parameters "Return Meter" auf "False" rechnet der Baustein je Impuls 228364.3 Joule aus. Das Erbennis erscheint mir jedoch zu gering und sollten ca. 398097 Joule sein oder berechne ich dies falsch? ( nach meiner Rechnung sollte der Energieertrag für Wasser ca. 228788 J und für den Clykol Anteil ca. 169309 J betragen)

Hat hier jemand eine Idee wo mein Fehler liegt und wie ich ihn korrigieren kann?

Verwendete Komponenten:
Wago 750-841
Codesys 2.3.9.10
OSCAT 3.0.3

Grüße
Thommy
#5
Hallo Alle zusammen,

habe für eine Mischersteuerung den Baustein "Actuator_3P" verwendet und die Autodiag Funktion beschaltet. Um zu verhindern das die Temperaturen unkontroliert verlaufen, würde ich gerne die Umwälzpumpe abschalten solange die Autodiagnose oder Initialisierung aktiv ist.

Gibt es eine Statusvariable die ich abfragen kann um zu erkennen ob die Initialisierung oder Diagnose läuft ?

Grüße
Thommy
#6
Hallo Hugo,

danke für die Erklärung und die Hilfe. So einfach war also die Ursache!

Habe noch den Skalierungsfaktor gesetzt und bei einem "Faktor von 1" auch die Temperatur in °C bekommen.

Grüße
Thommy
#7
Hallo Hugo,

danke für die Antwort. An den Baustein habe ich die aktuelle Uhrzeit der Klemme angelegt daran kann es also nicht liegen.
Wenn ich im Online Modus in den Baustein schaue sehe ich auch die Werte. Habe zum Test den Eingang fest mit dem Integer Wert -10 beschaltet (= -1°C) aber leider immer noch Ausgangswert = 0

Sobald ich einen Positiv Wert anlege bekomme ich auch Mittelwerte.

Habe mal ein Screenshot beigelegt.

Grüße
Thommy


[gelöscht durch Administrator]
#8
Bestehende Module / Existing Modules / T_AVG24
16. Januar 2009, 17:15:31
Hallo,

in einer Heizungssteuerung habe ich für die Berechnung der Tagesmitteltemperatur den Baustein "T_AVG24" aus der lib 3.03 verwendet.

Nun habe ich folgendes verhalten :
Bei Beschaltung mit einem negativen Integer Wert berechnet der Bausteine keine durchschnitts Temperatur und zeigt immer 0 an.

Kann der Baustein keine minus Temperaturen berechnen oder gibt es hierzu eine Möglichkeit?

Grüße und Danke
Thommy
#9
Hallo Zusammen,

als Steuerung setze ich Wago 750-841 ein mit Codesys 2.3.8.5.

Hatte vorher bereits die Variable (Ausgänge) runtime und cycles als remanent deklariert leider ohne Erfolg. Nachdem ich nun den Baustein ACTUATOR_PUMP als remanent deklariert habe funktioniert es.

Danke für die Hilfe

Grüße
Thomas

P.S.
Anbei für alle zur Info die verwendeten Deklarationen.


VAR
   Betriebsstunden_Luefter_Arbeitszimmer: REAL;
   Schaltspiel_Luefter_Arbeitszimmer: REAL;
   manual_Luefter_Arbeitszimmer: BOOL;
   rst_Luefter_Arbeitszimmer: BOOL;
END_VAR

VAR RETAIN PERSISTENT
   Luefter_Arbeitszimmer: ACTUATOR_PUMP;
END_VAR
#10
Hallo alle,

habe in einer Heizungssteuerung den "ACTUATOR_PUMP" Baustein verwendet. Jedes mal wenn ich das Programm ändere und nachlade gehen mir die Zählwerte für Schaltspiel und Betriebsstunden verloren.

Kennt jemand eine Möglichkeit wie ich diese sichern kann bzw. wie ich den Baustein einsetzen muss damit die Werte nicht verloren gehen?

Grüße
Thomas