Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 9 von 9

Thema: Regler in OB35 mit Wertübergabe

  1. #1
    Registriert seit
    05.02.2015
    Beiträge
    2
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,
    ich habe ein Probelm mit einer Heizungsregelung. Die Heizung soll mittels PWM geregelt werden. Ein von mir selbstgeschriebener FB1, welcher die Pulsweite berechnet, wird alle 10 Sekunden im OB35 aufgerufen. Im FB1 wird die Pulsweite als TIME und eine Bool-Variable Fertig als IN_OUT im DB1 abgelegt. Fertig wird immer am Ende der Berechnung auf High gesetzt.
    Nun meine erste Frage: Wie kann ich den berechnet Wert nun einem Timer übergeben?

    Mein Vorgehen war, die Pulsweite als TIME-Variable und die Bool-Variable Fertig aus dem DB1 einem FB2 zu übergeben. Dieser FB2 wird im OB1 aufgerufen.

    FB2
    CALL #TOF
    IN:=#Fertig
    PT:=#Pulsweite
    Q :=#Heizen
    ET:=

    U #Heizen
    R #Fertig

    Da der Timer als Startbedingung eine fallende Flanke benötigt, wird er direkt nachdem der Ausgang Heizen High ist zurückgesetzt. Dadurch erhalte ich eine PWM mit der Periode 10s und entsprechender Pulsweite.
    In der Simulation funktioniert das alles super, wenn ich das Ganze dann auf die SPS übertrage, wird der Puls nicht jede 10 Sekunden gestartet sondern setzt immer mal wieder sporadisch aus.
    Daher meine zweite Frage: Kann mir jemand sagen, warum das so ist? Oder ob es eine einfachere Lösung gibt, wie das realisiert werden kann? Schon allein daran, wie schwer es mir fällt das ganze einigermaßen verständlich rüber zu bringen denk ich mir, dass ich hier viel zu kompliziert denke...
    Vielen Dank vorab.
    Zitieren Zitieren Regler in OB35 mit Wertübergabe  

  2. #2
    Registriert seit
    03.02.2015
    Ort
    Hatten
    Beiträge
    183
    Danke
    16
    Erhielt 32 Danke für 29 Beiträge

    Standard

    Von der Theorie her sieht das gut aus.
    Ich weiß nur nicht, wie sich der TOF-Baustein (Du verwendest vermutlich den IEC-Timer SFB5) auf wechselnde Zeiten reagiert, wann er die übernimmt.
    Warum nimmst Du nicht den S_AVERZ?
    Bitte beobachte mal, ob die Zeiten immer korrekt übernommen werden. Am besten mal den Ausgang ET beobachten.
    Das wäre jetzt mein Tipp...
    Ansonsten kannst Du auch mal in der OSCAT-Bibliothek (http://www.oscat.de) gucken, da gibt es Bausteine speziell für PWM... Vielleicht funktionieren die besser.

  3. Folgender Benutzer sagt Danke zu JSEngineering für den nützlichen Beitrag:

    bosshaft (09.02.2015)

  4. #3
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Warum nimmst du einmal OB35 und dann OB1?
    Wenn etwas im OB35 machst, dann kann es zu Überschneidungen kommen zwischen Interruptgesteuert und zyklischem Programm kommen.

    Ich würde z.B. alles im OB1 machen und über einen Timer mir die Werte reinladen und verarbeiten.

    Also muss dir für deine Hausaufgabe eine andere Lösung einfallen lassen.


    bike
    "Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand."
    --Martin Fowler

  5. #4
    Registriert seit
    03.02.2015
    Ort
    Hatten
    Beiträge
    183
    Danke
    16
    Erhielt 32 Danke für 29 Beiträge

    Standard

    Da er ein #Fertig-Signal hat, sollte das Vorgehen prinzipiell in Ordnung sein. Meiner Meinung nach sollte es da zu keiner Überschneidung kommen. Denn selbst, wenn OB35 treffgenau die Ausführung vom TOF unterbrechen würde, würde dieser mit den Werten des letzten Zyklus rechnen und erst im nächsten Zyklus das #Fertig und die neue #Pulsweite übernehmen.

  6. #5
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Natürlich kann es so funktionieren.
    Betonung auf "kann".
    Bei dieser Art der Programmierung sehe ich die Instandhalter, die mit dem Programm leben müssen, beim Haare raufen.
    Also ich würde den FB zyklisch aufrufen, den Messwert würde ich in einem OB 3x einlesen.
    Das macht den Unterschied, dass man relativ leicht Fehlfunktionen des Programmes suchen und beheben kann.

    Bedingte Aufrufe von Bausteinen sehe ich kritisch.


    bike
    "Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand."
    --Martin Fowler

  7. Folgender Benutzer sagt Danke zu bike für den nützlichen Beitrag:

    bosshaft (09.02.2015)

  8. #6
    bosshaft ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.02.2015
    Beiträge
    2
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @JSEngineering: Den TOF verwende ich weil der Baustein mehrfach aufgerufen werden soll. Zu Testzwecken hatte ich die Pulsweite in ein Merkerwort geschrieben und das Fertig-Bit als Merker-Bit gesetzt. Dort funktionierte alles einwandfrei in der Anlage (kann aber eben nicht mehrfach aufgerufen werden da sonst das Merkerwort und das Merker-Bit mehrfach benutzt werden würde). Wenn ich die Pulsweite als Time-Variable übergebe, klappt auch noch alles, sobald ich aber nicht mehr das Merker-Bit sondern die IN_OUT Variable Fertig verwende, wird der Timer nicht immer aktiviert. Die Zeit fängt dann manchmal erst gar nicht an zu laufen bei ET. Ist der Merker eventuell schneller weil er nicht in den Datenbaustein geladen werden muss...?

    @bike: Ja die Befürchtung mit dem Haareraufen hab ich auch... Ich brauch bei der Regelung eben einen exakten Abtastzeitpunkt der Temperatur von 10 Sekunden...

  9. #7
    Registriert seit
    03.02.2015
    Ort
    Hatten
    Beiträge
    183
    Danke
    16
    Erhielt 32 Danke für 29 Beiträge

    Standard

    Zitat Zitat von bosshaft Beitrag anzeigen
    Wenn ich die Pulsweite als Time-Variable übergebe, klappt auch noch alles, sobald ich aber nicht mehr das Merker-Bit sondern die IN_OUT Variable Fertig verwende, wird der Timer nicht immer aktiviert.
    Das verstehe ich nicht so ganz... erst sprichst Du von der Pulsweite und dann vom Merker-Bit...

    Ansonsten:
    Spontan würde ich Dich fragen, ob Du aus Versehen das DB-Bit mehrfach verwendest und dadurch mehrfach zurücksetzt?
    Geh mal am Bausteineingang auf das Bit, rechte Maustaste, Verwendungsstelle, auch Überlappenden Zugriff anhaken.
    Denn daß Merker funktionieren soll und DB nicht, kann ich mir gerade nicht vorstellen.

  10. #8
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Zitat Zitat von bosshaft Beitrag anzeigen
    Ich brauch bei der Regelung eben einen exakten Abtastzeitpunkt der Temperatur von 10 Sekunden...
    Wie exakt muss das sein?
    Klar hilft dir ein OB3x für das Exakte erfassen.
    Aber erfassen und regeln sind doch nicht selbe.
    Ist deine Regelstrecke so schnell, dass bei einer Verzögerung von 3ms des Sollwertes alles zusammenfällt?


    bike
    "Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand."
    --Martin Fowler

  11. #9
    Registriert seit
    23.11.2012
    Ort
    Österreich
    Beiträge
    147
    Danke
    48
    Erhielt 19 Danke für 19 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hallo,

    ich habe letztens auch mit den IEC Timer experimentiert und hatte auch das Problem, dass der Timer manchmal nicht angelaufen ist.

    poste mal den gesamten PWM Baustein bzw. den Teil, der die #Fertig Variable auf High setzt.

    mfg
    Kapo

Ähnliche Themen

  1. Step 7 PID-Regler in OB35. Der Stellgröße pulsiert.
    Von SEW im Forum Simatic
    Antworten: 53
    Letzter Beitrag: 19.12.2014, 15:27
  2. Step 7 OB35 Regler CONT_C kein P-Anteil?
    Von Micha_RW im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 04.04.2014, 12:54
  3. PID-Regler in Codesys (Weckalarm OB35)
    Von Benno im Forum CODESYS und IEC61131
    Antworten: 10
    Letzter Beitrag: 28.11.2012, 21:31
  4. 2 PID Regler im OB35
    Von Andi_W im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 02.05.2008, 06:47
  5. 313C OB35 mit Regler FB funktioniert nicht
    Von Dragonfire im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 31.01.2006, 14:23

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •