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

Ergebnis 1 bis 5 von 5

Thema: Problem mit bedingten Sprüngen

  1. #1
    Registriert seit
    23.07.2013
    Beiträge
    8
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hello Community,

    Ich habe hier ein kleines Problem mit bedingten Sprüngen...und ich bin wahrscheinlich einfach nur blind für den Fehler.

    Folgende Problemstellung:
    Es sollen 3 Transformatoren über eine Sollwerteingabe entweder einzeln oder synchron gesteuert werden.
    Dafür gibt es auf dem verwendeten Touchpanel jeweils ein Bild für die Einzelsteuerungen und ein Bild für die Gesamtsteuerung, wo entsprechend jeweils die Einzel- bzw die Gesamtsollwerteingabe stattfindet.
    Nun soll, wenn das Bild "Gesamtsteuerung" auf dem Touchpanel aktiv ist, ein Merker gesetzt werden.
    Wenn dieser Merker aktiv ist, soll der eingegebene Gesamtsollwert die Einzelsollwert überschreiben und dann an den Slave weitergeben.
    (einfache if-Anweisung in C)
    Wenn der Merker nicht aktiv ist, sollen die Einzelsollwerte nicht überschrieben werden.
    Eigentlich eine relativ einfache Geschichte, die jedoch nicht so recht hinhauen will.
    Ich hatte mir das so vorgestellt: Wenn der Merker "Gesamtsteuerung" aktiv ist, wird ein bedingter Sprung ausgeführt, nach dem der Gesamtsollwert in die Einzelsollwert-Doppelwörter überschrieben wird, die für weitere Berechnungen verwendet werden.
    Wenn nicht, wird ein anderer Sprung ausgeführt, der dieses Überschreiben überspringt und die Einzelsollwerte werden in diese Berechnungs-Doppelwörter übertragen.

    Folgender Code in AWL ist bisher dabei herausgekommen:

    Gesamtsollwertweitergabe:
    U M 0.0 //Merker Gesamtsteuerung
    SPB then
    UN M 0.0
    SPB else
    then: L MD 100 //Gesamtsollwert
    T MD 62 //"Berechnungsdoppelwort" L1
    L MD 100
    T MD 66
    L MD 100
    T MD 70
    else: NOP 0
    ^- Hier wird anscheinend der "then"-Teil übersprungen, obwohl nach "U M 0.0" das VKE = 1 ist. Heißt der Sprung auf "then" findet nicht statt, der Sprung auf else allerdings schon.
    Der Merker M0.0 für die Gesamtsteuerung ist aber definitiv auf 1 gesetzt!

    Einzelsollwert L1:
    U M 0.0
    SPB thL1
    L MD 34 //Eingabe Einzelsollwert L1
    T MD 62 //Berechnungsdoppelwort L1
    thL1: L MD 62
    DTR
    L 8.428261e-001 //Normierungsfaktor für Sollwertausgabe (durch Messreihe ermittelt)
    *R
    RND
    T MD 50
    L MW 52 //Laden des Lowwords, da Doppelwörter lediglich für Gleitpunktoperationen gebraucht werden. Zahlenspektrum ~0-3000)
    T MW 10 //Transfer in das Merkerwort, das den Sollwert schlussendlich an den Slave weitergibt
    Nun ist die Situation folgende:
    Wenn ich im Bild Gesamtsteuerung bin und einen Sollwert für alle 3 Phasen eingebe, passiert schlichtweg nichts.
    Wenn ich nun Sollwerte für die einzelnen Phasen eingebe, überschreibt dieser Sollwert den Gesamtsollwert immer und die Trafos fahren so, dass sie die Einzelsollwerte erfüllen.
    Unpraktisch, wenn man für alle 3 Trafos meinetwegen 1,5 kA einstellen möchte und sie aber auf 0 fahren, weil in den Bildern für die Einzelsollwerte noch 0 steht.

    Ich bin in AWL noch nicht so bewandert, kann aber relativ gut in C / C++ programmieren...nur hilft mir das hier relativ wenig weiter^^

    Gruß

    Melvin
    Kann gelöscht werden. Ich habe eine andere Lösung gefunden.
    Es lag tatsächlich daran, dass dieses eine Bit nicht gesetzt wurde und das VKE doch 0 war.
    Sorry.
    Geändert von Ino91 (08.08.2013 um 11:23 Uhr)
    Zitieren Zitieren Problem mit bedingten Sprüngen  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    Hallo,
    mir fehlt da ein bißchen die Info, was es mit dem M0.0 auf sich hat. Anscheinend hat der in den beiden Code-Teilen eine ganz unterschiedlich Funktion.
    Dann ... welche Variablen werden durch die Eingabefelder der jeweiligen Visu-Seiten beschrieben ?

    Gruß
    Larry

  3. #3
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Zitat Zitat von Ino91 Beitrag anzeigen
    Kann gelöscht werden.
    Warum soll das gelöscht werden?

    Das Forum ist doch nicht nur für Deine Probleme zuständig.
    Vlt. kommt ja mal ein Anderer mit einem ähnlichen oder gar gleichen Problem und für den ist es doch dann super, dazu gleich eine Lösung zu finden.
    (Vorausgesetzt hier bemüht mal jemand die Suche )

  4. #4
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.572
    Danke
    63
    Erhielt 259 Danke für 219 Beiträge

    Standard

    Es gibt eine Suchfunktion???
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  5. #5
    Ino91 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    23.07.2013
    Beiträge
    8
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    M0.0 war eigentlich als Merkerbit dafür gedacht, dass das Touchpanel mir mitteilt, wenn das Bild "Gesamtsteuerung" aktiv ist.
    Das hat allerdings nicht so funktioniert, wie ich das dachte.
    Meine Lösung dafür war eine anlagenspezifische Lösung:
    Wenn ich den automatischen Regelbetrieb einschalte, bekomme ich dafür von der Anlage eine Rückmeldung.
    Die Gesamtsollwerteingabe ist nur relevant, wenn ich diesen Regelbetrieb für alle 3 Slaves aktiv habe.
    Daher habe ich, statt auf die Meldung des Touchpanels zu bauen, nun die Rückmeldung der Slaves genutzt.
    Heißt:
    Zunächst einmal ist der Gesamtsollwert der Wert, der in die Berechnungsgrößen eingetragen wird.
    L MD 100 //Gesamtsollwert
    T MD 62 //Berechnungswert L1
    T MD 66 //Berechnungswert L2
    T MD 70 //Berechnungswert L3
    Wenn ich von allen 3 Slaves die Rückmeldung bekomme, der Regelbetrieb nach Sollwerteingabe sei aktiviert, gilt der Gesamtsollwert als Führungsgröße.
    Wenn dies nicht der Fall ist, überschreiben die 3 Einzelsollwerte den Gesamtsollwert in der nachträglichen Berechnung. (Multiplikation mit einem Normierungsfaktor, der sich bei mir über eine Messreihe mit einem geeichten Messgerät ergeben hat)
    Das Ganze sieht dann so aus:
    U E 2.1 //Rückmeldung Regelbetrieb L1
    U E 6.1 //Rückmeldung Regelbetrieb L2
    U E 10.1 // Rückmeldung Regelbetrieb L3
    SPB thL1 //bedingter Sprung zu "then L1"
    L MD 34 //Einzelsollwerteingabe L1
    T MD 62 //Berechnungswert L1 <- wird nur durchgeführt, wenn die obige Bedingung nicht erfüllt ist!
    thL1: L MD 62 //Berechnungswert L1, entweder Gesamtsollwert oder bei Nichterfüllung der obigen Bedingung Einzelsollwerteingabe L1
    DTR
    L supergeheimer Normierungsfaktor
    *R
    RND
    T MD 50 //Zwischenspeichern des Ergebnisses
    L MW 52 //Laden des Lowwords - das verwendete Zahlenspektrum umfasst nur ~12 Bit, lediglich für die Normierung ist ein Doppelwort für Gleitpunktoperationen nötig
    T MW 10 //Transferwort, das nach einer weiteren kurzen Verarbeitung zum Slave L1 geschickt wird
    Soweit funktioniert alles einwandfrei

Ähnliche Themen

  1. Antworten: 11
    Letzter Beitrag: 24.01.2013, 13:28
  2. Antworten: 10
    Letzter Beitrag: 13.09.2012, 07:31
  3. Antworten: 1
    Letzter Beitrag: 25.01.2010, 15:57
  4. Antworten: 3
    Letzter Beitrag: 31.10.2008, 07:34
  5. 7 Segment mit Sprüngen
    Von maxi im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 14.12.2006, 10:52

Stichworte

Lesezeichen

Berechtigungen

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