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

Ergebnis 1 bis 9 von 9

Thema: SCL Struct beschreiben

  1. #1
    Registriert seit
    18.11.2013
    Beiträge
    10
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo ich habe ein kleines SCL Programm geschrieben in einem FB, im DI liegen jetzt ein Struct mit Fehlermeldungen die im restlichen Programm weiter verarbeitet werden sollen.

    Jetzt habe ich das Problem dass ich im Programmablauf die Bits beschreibe diese aber nicht gelöscht werden, daher wollte ich am Anfang des Bausteins alle Bits in diesem Struct löschen.
    Gibt es eine Einfache Möglichkeit den ganzen Struct auf 0/false zu schreiben? Also das ich nicht jedes Bit auf 0 ziehen muss und ohne Absolute Adressierung, oder das im idb und damit im weiteren Programm die Symbolik verloren geht?

    Ist jetzt nur ein Programmauszug

    Code:
    VAR 
      sError : STRUCT
        Ana272              : BOOL ;  
        Ana274              : BOOL ;  
        Abweichung_Teach    : BOOL ;  
        Pos_Min             : BOOL ;  
        Pos_Max             : BOOL ;  
        Pos_Max_Takt        : BOOL ;  
        Abweichung_Auto     : BOOL ;  
      END_STRUCT;
    END_VAR
    
    
    IF  (sPos_gross - sPos_klein) > 50.0 THEN
        Abweichung_Teach:= TRUE;
    END_IF;
    Vielen Dank im Voraus für eure Hilfe/Anregungen
    Zitieren Zitieren SCL Struct beschreiben  

  2. #2
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.616
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Für logik muss ein IF THEN Anweisung oft mit ein ELSE Anweisung kombiniert werden.

    Code:
    IF  (sPos_gross - sPos_klein) > 50.0 THEN
        Abweichung_Teach:= TRUE;
    ELSE
        Abweichung_Teach:= FALSE;
    END_IF;
    Jesper M. Pedersen

  3. #3
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.618
    Danke
    775
    Erhielt 646 Danke für 492 Beiträge

    Standard

    Zitat Zitat von Hadante Beitrag anzeigen
    Jetzt habe ich das Problem dass ich im Programmablauf die Bits beschreibe diese aber nicht gelöscht werden, daher wollte ich am Anfang des Bausteins alle Bits in diesem Struct löschen.
    Das wär z.B. so möglich

    Code:
    VAR   sError : STRUCT
        Ana272              : BOOL ;  
        Ana274              : BOOL ;  
        Abweichung_Teach    : BOOL ;  
        Pos_Min             : BOOL ;  
        Pos_Max             : BOOL ;  
        Pos_Max_Takt        : BOOL ;  
        Abweichung_Auto     : BOOL ;  
      END_STRUCT;
      aError AT sError: word ;
      
    END_VAR
    
    
    
    
       BEGIN
    
    
    aError := 0;
    du setzt eine Sicht auf deine Strukur. eine Struktur wird ja immer an die Wortgrenze aufgemacht damit passt also immer ein Wort rein.
    Und das wort kannst du dann direkt mit 0 beschreiben somit sind alle Bool in der Struktur ebenfalls 0

    mfG René

  4. #4
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.616
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Eigentlich peinlich das ich ein ein IF THEN ELSE vorgeschlagen habe.
    Wenn es nur handelt um einfache Logik dann geht das so:
    Code:
    Abweichung_Teach := ((sPos_gross - sPos_klein) > 50.0) ;
    Jesper M. Pedersen

  5. Folgender Benutzer sagt Danke zu JesperMP für den nützlichen Beitrag:

    emalik (03.03.2017)

  6. #5
    Hadante ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.11.2013
    Beiträge
    10
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    @vollmi das war mein erster Versuch

    Code:
     BEGIN
    //=================================================== Variablen löschen
    sError:= 0;
    Da meckert er falscher Datentyp und wenn der Struct länger wird als ein Wort wird das glaube ich nicht funktionieren.


    @JesperMP
    Gut Else ist die einfachste Lösung, aber da es sich am Ende um einige Variablen Handeln wird brauche ich jedes mal dafür mindestens eine Zeile
    Oder die Problematik ist auch wenn es eventuell Variabeln sind die an mehreren Stellen beschrieben werden können, diese müsste man dann eh am Anfang zurück setzen.

    Daher war meine Frage eigentlich auf das ausgerichtet ob man Variabeln so deklarieren oder beschreiben kann das ein Symbolisch definierter Bereich komplett überschrieben werden kann im SCL.
    Die einzige möglichkeit was ich jetzt eigentlich kennen würde ist den Struct 2x anzulegen und den ganze Struct zu kopieren, damit würde ich aber jedes mal das Doppelte an Daten ben (versucht habe ich es noch nicht aber ich habe ein Programm da wo so etwas gemacht wird).

  7. #6
    Hadante ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.11.2013
    Beiträge
    10
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    @vollmi

    Sorry hatte mich jetzt verlesen.
    Hate schon mal etwas ähnliches mit AT versucht da hatte ich dann aber nur noch das Wort im DB.
    Das war irgendwie

    Code:
    Error AT sError : Struct ;
    Ana272 :BOOL;
    .
    .
    .
    vom Prinzip her das was ich suche, jetzt ist nur die Frage Funktioniert das auch wenn es länger als ein Wort wird?

  8. #7
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.618
    Danke
    775
    Erhielt 646 Danke für 492 Beiträge

    Standard

    Zitat Zitat von JesperMP Beitrag anzeigen
    Eigentlich peinlich das ich ein ein IF THEN ELSE vorgeschlagen habe.
    Wenn ich seine Frage richtig verstanden habe war das schon das was er wollte. Er setzt die Bool bedingt will aber mit einer unabhängigen Bedingungen alle Bool in der Struktur zurücksetzen zusammen in einem Schwung.

    mfG René

  9. #8
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.616
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Zitat Zitat von vollmi Beitrag anzeigen
    Er setzt die Bool bedingt will aber mit einer unabhängigen Bedingungen alle Bool in der Struktur zurücksetzen zusammen in einem Schwung.
    Das schreibt er aber nicht. Kann sein das es ist richtig, kann sein das es ist falsch.

    Es ist schön wenn alles klar und deutlich in 1. Eintrag beschrieben ist.
    Passiert aber selten ... !
    Jesper M. Pedersen

  10. #9
    Registriert seit
    06.10.2003
    Beiträge
    3.403
    Danke
    447
    Erhielt 502 Danke für 406 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Mit der SFC21 (FILL) sollte es auch möglich sein.
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

Ähnliche Themen

  1. Step 7 SCL DB beschreiben
    Von BlueDogi im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 21.10.2013, 13:40
  2. Array of Struct anlegen und beschreiben
    Von fk- princess im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 17.10.2012, 14:03
  3. SCL Struct in Struct
    Von Techniker_85 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 18.02.2011, 09:45
  4. SCL: Pointer auf Struct in DB
    Von DunderHEAD im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 13.08.2010, 10:05
  5. SCL - nur eine Zeile beschreiben
    Von testuser im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 17.03.2009, 10:49

Lesezeichen

Berechtigungen

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