Heizungsregelung mit CTRL_PI und CTRL_PWM -> das PWM Signal bleibt auf "1"

Begonnen von HO, 26. Mai 2011, 18:14:34

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

HO

Hallo Zusammen,

ich habe eine S7 Programm für einen Ofen geschrieben. Die Heizungsregelung habe ich mit den Bausteinen CTRL_PI und CTRL_PWM realisiert. Diese Bausteine werden im OB35 alle 250 ms aufgerufen. Die Regelung funktioniert soweit.
Temperaturschwangungen +/- 0.8 Grad.

Der Ausgang von dem CTR_PI habe ich scaliert von 0.0 - 1.0 und verwende ihn als Vorgabe für den PWM Generator.

Mein Hauptproblem ist das ab und zu der PWM Generator nicht startet. Sein Ausgang bleibt auf High. Das heißt mein Ofen heizt was das Zeug hergibt.

Hat jemand eine Idee.

Vielen Dank

Fussel0804

Hi!

Sehe ich das richtig, dass du einen Holzofen mit Wasserführung einsetzt?

Heizungspumpe wird Drehzahlgeregelt um die Temperatur im Wärmetauscher des Ofens konstant hält.

Warum rufst du den CTRL_PI und den CTRL_PWM im OB35 auf?



Welche CPU setzt du ein?
Welche OSCAT Version nutzt du?
Rufst du den FB64, DB64 im OB1 auf?

Hier mal mein System, welches tadellos funktioniert:

Hardware:
CPU 315 2DP V3.0
Wago Buskoppler mit SSR Relais
Temperatur wird mit PT 100 eingelesen.
Format xx.x (INTEGER xxx)
Multiplizieren mit Faktor 10
Format xx.xx (INTEGER xxxx)
Diesen Wert schicke ich über einen FILTER_I mit t=1s
(zum beruhigen des Wertes und "flattern" zu vermeiden)
Ausgeben als REAL Formal xx.xx

CTRL_PI und CTRL_PWM im FB aufgerufen
CTRL_PI Ausgang von 0.3-1.0 Skaliert
bei Werten unter 0.3 läuft die Pumpe "nicht rund".
CTRL_PWM
- F: 10.0 Hz
- DC: 0.3-1.0

Gruß Stefan

HO

Hallo Stefan,

ich habe eine industriellen Ofen für Wärmebehandlung für eletronische Bausteile.
Ich setze eine VIPA SPS ein : 315AG12 (Speed 7)
Oscat Version Step7_311
Step Version 5.4 Sp4

Ich mache heute einen  Test und rufe die Bausteine zkylisch über den OB1 auf und nicht meht über den OB35.
Mal sehen was passiert.

Ich gebe dir info, wenn es funktioniert.

Gruß

HO

Fussel0804


HO

Hallo Stefan,

ich habe alle Bausteine im Programm. Ich habe festgestellt der Baustein für das PWM_CTR läuft nicht an.
Wenn ich alle Instanz DB's neu übertrage funktioniert er, solange bis ich die SPS wieder ausschalte und neu Starte.

Ich habe folgendes festgestellt das Progamm CLK_PRG wird beim Start der SPS nicht neu initialisert.

VAR_INPUT
  PT : TIME := t#10ms;
END_VAR
VAR_OUTPUT
  Q : BOOL := 0;
END_VAR
VAR
  init : BOOL;
  last : TIME;
  tx: TIME;
END_VAR

BEGIN

(* read system time *)
tx := DINT_TO_TIME(DWORD_TO_DINT(T_PLC_MS()));
 
(* initialize on startup *)
IF NOT init THEN
    init := TRUE;
    last := tx - pt;
END_IF;
 
(* generate output pulse when next_pulse is reached *)
Q := tx - last >= pt;
IF Q THEN last := tx; END_IF;
 
 
(* revision hiostory

hm 25 feb 2007  rev 1.1
    rewritten code for higher performance
    pt can now be changed during runtime

hm  17. sep 2007    rev 1.2
    replaced time() with t_plc_ms() for compatibility reasons

hm  25. oct. 2008   rev 1.3
    optimized code

*)
END_FUNCTION_BLOCK

Ich setze im OB100 (Neuanlauf) die Variable "Init" zurück -> dann läuft der Baustein !

Was hälst Du davon?
Ist das der richtige Weg?



Fussel0804

Vom Prinzip hast du recht.

Die initialisierung wird eingebaut.
Dann kannst du den schritt im OB100 weglassen.

Frage:

Bitte setzt im OB1 den Befehl:
Call FB64, DB64

dann müsste es auf jeden Fall laufen.



HO


Fussel0804


HO

Hallo Stefan,

ich habe noch eine weitere Frage.
Dieses Projekt ist das erste mit dem ich mit SCL in Kontakt komme. Seither habe ich mich fast nur ausschließlich mit S5/S7 AWL und den sonstigen Softwarepakete (ausser SCL) von Siemens beschäftigt.


SCL gefällt mir ziemlich gut. Wie komme ich an Literatur ran, um mich in SCL einzuarbeiten ?

Danke

HO

Fussel0804

Da bin ich im Moment überfragt.

Ich werde mich mal schlau machen.

Heute abed ca. 22:00 werde ich dir eine Datei mit der Aktualisierten Version hochladen.

Fussel0804

So, hier die versprochene Zip-File

Sie beinhaltet CTRL_PI und CTRL_PWM und alle benötigten untergeordneten Bausteinen.

Soweit ich das gesehen habe musst du nur den FB64 übertragen (Rel3.11=V1.3 / Rel3.32=V1.4)

wenn dieser FB Zyklisch im OB1 aufgerufen wird (Call FB64, DB64) dann passiert das problem mit dem "hängenden" Ausgang und den falschen Zeitrechnungen (überlauf des SPS Timers) nicht mehr.

Viel Erfolg damit.

HO

Danke.

Ich werde den Baustein gleich in meine Test SPS laden.

HO

Hallo Stefan,

dein Zip Datei enthält leider keine Daten.

Kannst die Datei noch einmal laden.

Danke

HO