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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 27

Thema: Soll ist Vergleich von Bedingungen

  1. #11
    Registriert seit
    16.07.2009
    Beiträge
    58
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Christmaspoo
    wenn es nach mir ginge würde ich es auch in Graph machen, aber der Kunde will die Schrittkette unbedingt in SCL.

    Bisher läuft das ganze so ab (allerdings ohne dass ich in den Code schauen kann)
    Es wird eine Funktion aufgerufen. Als Input bekommt die Funktion z.B. folgendes: xSensor_oben AND xSensor_links AND NOT xSensor_unten AND NOT xSensor_rechts
    In der Funktion läuft dann die Zeit (welche auch übergeben wird) Ist die Zeit abgelaufen dann kommt ein String raus der dann unter umständen so aussieht: "Fehlende Bedinungen: xSensor_oben AND NOT xSensor_unten"
    Bei den Fehlenden Bedinungen ist dann eben alles aufgelistet was nicht zu dem Zustand passt der aktuell eigentlich gefordert ist.

    @weißnix_
    es geht dann drum wirklich nur die Tags anzeigen zu lassen die noch falsch sind. (alle Anzeigen ist eventuell bissel zu viel)

    Grundsätzlich würde es mir auch reichen wenn ich wüsste wie man einen String soweit zerlegt dass wenn er auf ein AND trifft oder ein AND NOT dieses dann als Operator interpretiert und nicht mehr als String. Aber dazu hab ich auch noch nichts gefunden.

  2. #12
    Registriert seit
    21.11.2014
    Beiträge
    196
    Danke
    5
    Erhielt 28 Danke für 26 Beiträge

    Standard

    Wenns noch einigermaßen überschaubar bleiben soll, Baustein Programm_Alarm, könnte eine Lösung sein. Der kann bis zu 10 Begleitwerte bekommen. Aufwendig wirds aber in jedem Fall.

  3. #13
    Registriert seit
    17.09.2008
    Beiträge
    84
    Danke
    16
    Erhielt 3 Danke für 3 Beiträge

    Standard

    vieleicht kann die folgender Code helfen:
    Code:
    #xBedingung[1] := "Tag_1" AND "Tag_2";
    #xBedingung[2] := "Tag_1" AND NOT "Tag_2";
    #xBedingung[3] := NOT "Tag_1" AND "Tag_2";
    
    CASE #Schrittnummer OF
        0:
            IF #xBedingung[1] THEN
                #Schrittnummer := #Schrittnummer + 1;
            END_IF;
        1:
            IF #xBedingung[2] THEN
                #Schrittnummer := #Schrittnummer + 1;
            END_IF;
        2:
            IF #xBedingung[3] THEN
                #Schrittnummer := #Schrittnummer + 1;
            END_IF;
    END_CASE;
    
    #String:='nicht erfuellt:';
    
    FOR #i :=1 TO 3 DO
          IF NOT #xBedingung[#i]THEN
          #String:=CONCAT(IN1:=#String, IN2:=' '); 
          #String:=CONCAT(IN1:=#String, IN2:=DELETE(IN:=INT_TO_STRING(#i), L:=1, P:=1));
          END_IF;
    END_FOR;
    #String_2:=#String;
    Die Bedienungen müsten außerhalb der Case anweisung geprüft werden, damit Sie jeden Zyklus abgearbeitet werden.
    In String_2 erfolgt dann deine Auswertung:

  4. #14
    Registriert seit
    06.10.2003
    Beiträge
    3.195
    Danke
    409
    Erhielt 463 Danke für 372 Beiträge

    Standard

    Warum machst du das nicht einfach mit Meldungen? Das wäre doch das naheliegendste.
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  5. #15
    Registriert seit
    21.02.2014
    Ort
    Sachsen-Anhalt
    Beiträge
    1.096
    Danke
    156
    Erhielt 168 Danke für 155 Beiträge

    Standard

    @ Onkel Dagobert
    Da wollte ich schon weiter oben hin. Aber warum einfach?

  6. #16
    Registriert seit
    16.07.2009
    Beiträge
    58
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @Onkel Dagobert
    Es soll ja am Schluss eine Meldung rauskommen. Aber nicht in dem Stil: "Die Anlage hängt in Schritt 50" sondern: "Es fehlen zum weiterschalten folgende Bedingungen: xxxyyxx"
    Und bei den Bedingungen wird dann aufgelistet was aktuell fehlt und nicht alles. Mir ist nicht klar wie ich das in eine Meldung packen soll. Müsste ja tausende Meldungen machen. Gewünscht ist dass nur ein String an das HMI gegeben wird.

  7. #17
    Registriert seit
    25.01.2008
    Ort
    Hamburg
    Beiträge
    230
    Danke
    12
    Erhielt 64 Danke für 33 Beiträge

    Standard

    Dann benutze als Meldung den Program_Alarm da kannst Du zur Laufzeit die Meldetexte bestimmen.

  8. #18
    Registriert seit
    16.07.2009
    Beiträge
    58
    Danke
    11
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @miasma
    Hab mir den mal angeschaut. Leider bekomme ich da noch nicht heraus welche der Bedinungen fehlt. Ich kann da nur Texte hinzufügen. Das bringt mich leider aber noch nicht ans Ziel

    @El Cattivo
    aus deiner zweiten CONCAT Anweisung werde ich irgendwie nicht schlau. Du fügst die 1 an und löscht diese gleich wieder

  9. #19
    Registriert seit
    17.09.2008
    Beiträge
    84
    Danke
    16
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Die Funktion Int_to_String erzeugt mit einen String aus der Zahl aber mit Vorzeichen. Mit delete lösche ich das erste Zeichen des String also das Vorzeichen und nicht die Zahl.

    Gesendet von meinem PLK-L01 mit Tapatalk

  10. #20
    Registriert seit
    01.08.2013
    Ort
    63571
    Beiträge
    233
    Danke
    12
    Erhielt 35 Danke für 35 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe bei einer Schrittkette eigentlich immer einen Timer mitlaufen lassen. Wenn der abgelaufen ist setze ich ein Bit für eine weitere Verarbeitung. Mit diesem Bit kann man auch eine Meldung setzen.

    Zusätzlich dazu kannst du auch noch Schritt spezifisch einen weiteren Wert setzen der dann aus einer Textliste einen Variablen Ausdruck in die Meldung einfügt. Da der Wert der Schrittkette nur einmalig abgearbeitet wird, d.h. es wird immer Schritt 50 abgearbeitet müsstest du eigentlich mit einem einzigen Timer auskommen der nur in jeder Bedingung ein Startsignal bekommt und nach Ablauf mit einem Quittierungsbefehl zurückgesetzt wird. Ist der Schritt erfolgreich abgearbeitet setzt du den Timer in der gleichen Bedingung die dir den Schritt hochzählt wieder zurück.
    Nur dass man etwas schon immer so gemacht hat heißt nicht dass es richtig ist, man kann eine Sache auch ein Leben lang falsch machen.

Ähnliche Themen

  1. Step 5 S5 Vergleich von Integer Werten
    Von Holle-52499 im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 21.03.2016, 18:06
  2. Antworten: 23
    Letzter Beitrag: 17.10.2015, 22:49
  3. Vergleich von Real-Zahlen
    Von Tobi_90 im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 21.04.2012, 21:36
  4. Ist Word soll Double
    Von geduldiger im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 30.05.2007, 09:08
  5. vergleich von daten in einem DB
    Von Anonymous im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 20.07.2006, 08:12

Stichworte

Lesezeichen

Berechtigungen

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