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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Struct: falscher Typ in Sicht und Variable

  1. #1
    Registriert seit
    20.02.2007
    Ort
    Dresden
    Beiträge
    109
    Danke
    17
    Erhielt 11 Danke für 10 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich möchte einige Eingänge abfragen und deren Bitwertigkeit dann in einem Statusbyte ausgeben.

    Kann mir jemand sagen, was an folgendem Struct-Schnipsel falsch ist?
    Der Compiler spuckt immer "Der Typ der Sicht ist nicht mit dem Typ der Variablen verträglich." aus.


    Code:
    VAR_INPUT
    //input variables
      CBO                 : BOOL    := false;       //component binary output to plc
      Diagnosis           : BOOL    := false;       //activates diagnosis mode
      DiagValue           : BOOL    := false;       //value for diagnosis
      Negate              : BOOL    := false;       //negates the input
      Lock                : BOOL    := false;       //output is locked
      SafePosition        : BOOL    := false;       //safe position when locked
     END_VAR
    
    VAR_OUTPUT
    //output variables
      BO                  : BOOL    := false;
      State               : BYTE    := 0;          //Status to Visu
        StateBits AT State  : STRUCT
            Diagnosis : BOOL;
            DiagValue : BOOL;
            Negate    : BOOL;
            res4      : BOOL;
            res5      : BOOL;
            res6      : BOOL;
            res7      : BOOL;
            res8      : BOOL; 
         END_STRUCT;  
      LockState           : BOOL    := false;       //lock active
    END_VAR
    Mein State ist ein Byte und mein Struct hat acht Bits. Leider bringt mich die Hilfe auch nicht weiter. Der Baustein ist ein FC.

    Wo liegt mein (Denk-)Fehler?

    Danke und Grüße
    Kniffo
    Zitieren Zitieren Struct: falscher Typ in Sicht und Variable  

  2. #2
    Registriert seit
    22.11.2005
    Ort
    kl.Odenwald
    Beiträge
    716
    Danke
    111
    Erhielt 85 Danke für 71 Beiträge

    Standard

    M.W. haben Struct mindestens 16-Bits, oder?
    "Das Leben ist viel zu kurz, um schlecht zu essen !"
    (Johann Lafer zur SWR3 Grillparty)

  3. #3
    Avatar von Kniffo
    Kniffo ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    20.02.2007
    Ort
    Dresden
    Beiträge
    109
    Danke
    17
    Erhielt 11 Danke für 10 Beiträge

    Standard

    In der Hilfe steht:
    Falls Sie eine Struktur definieren, die nicht an einer WORD-Grenze endet, füllt S7-SCL automatisch die fehlenden Bytes auf und passt somit die Größe der Struktur an.
    Somit müsst das Aufstocken eigentlich überflüssig sein. Auch das Aufstocken auf 16 Bits (oder Weglassen der res_x) bringt den gleich Fehler.

  4. #4
    Registriert seit
    22.11.2005
    Ort
    kl.Odenwald
    Beiträge
    716
    Danke
    111
    Erhielt 85 Danke für 71 Beiträge

    Standard

    Logisch, da du ja an der anderen Stelle ein Byte (=8Bits) hast.
    Also funktioniert das mit dem AT nur bei WORD's oder vielfachen Einheit.
    Alles klar ?
    "Das Leben ist viel zu kurz, um schlecht zu essen !"
    (Johann Lafer zur SWR3 Grillparty)

  5. #5
    Avatar von Kniffo
    Kniffo ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    20.02.2007
    Ort
    Dresden
    Beiträge
    109
    Danke
    17
    Erhielt 11 Danke für 10 Beiträge

    Standard

    Logisch, funktioniert aber mit
    Code:
      State                 : WORD    := 0;          //Status to Visu
        StateBits AT State  : STRUCT
            Diagnosis : BOOL;
            DiagValue : BOOL;
            Negate    : BOOL;
         END_STRUCT;
    immernoch nicht.

  6. #6
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    ...mit

    Code:
    State : ARRAY[0..15] OF BOOL := 0;          //Status to Visu

    gehts ;o)

    Aber brngt Dir wohl nicht ;o(
    If you open your Mind too much, your Brain will fall out.

  7. #7
    Avatar von Kniffo
    Kniffo ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    20.02.2007
    Ort
    Dresden
    Beiträge
    109
    Danke
    17
    Erhielt 11 Danke für 10 Beiträge

    Standard

    Ja das würde schon gehen, aber wie kann ich jetzt den Ausgang lesen? Merker gehen da gar nicht oder?

  8. #8
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Bringt das was(?):
    Code:
    FUNCTION FC77 : VOID
    VAR_INPUT
    //input variables
      CBO                 : BOOL    := false;       //component binary output to plc
      Diagnosis           : BOOL    := false;       //activates diagnosis mode
      DiagValue           : BOOL    := false;       //value for diagnosis
      Negate              : BOOL    := false;       //negates the input
      Lock                : BOOL    := false;       //output is locked
      SafePosition        : BOOL    := false;       //safe position when locked
     END_VAR
    
    VAR_OUTPUT
    //output variables
      BO                  : BOOL    := false;
    
      outState            : BYTE;  
      LockState           : BOOL    := false;       //lock active
    END_VAR
    
    VAR_TEMP
      // temporäre Variablen
      State           : WORD;          //Status to Visu
        StateBits AT State  : STRUCT
            Diagnosis : BOOL;
            DiagValue : BOOL;
            Negate    : BOOL;
            res4      : BOOL;
            res5      : BOOL;
            res6      : BOOL;
            res7      : BOOL;
            res8      : BOOL; 
         END_STRUCT;  
    
    END_VAR
    
      // Anweisungsteil
      outState := WORD_TO_BYTE(State);
    END_FUNCTION
    Das AT WORD geht wohl nur im TEMP bereich.
    If you open your Mind too much, your Brain will fall out.

  9. Folgender Benutzer sagt Danke zu zotos für den nützlichen Beitrag:

    Kniffo (31.08.2007)

  10. #9
    Avatar von Kniffo
    Kniffo ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    20.02.2007
    Ort
    Dresden
    Beiträge
    109
    Danke
    17
    Erhielt 11 Danke für 10 Beiträge

    Standard

    Ok daran lags. Vielen Dank!

    In der Hilfe zur Meldung 15:4481 steht zwar eine Tabelle, wann was genutzt werden darf, aber da ich dort herausgelesen habe dass Struct bei Out geht, hab ich die Anordnung wohl nicht verstanden.

  11. #10
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 183 Danke für 168 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von zotos Beitrag anzeigen
    Bringt das was(?):
    Das AT WORD geht wohl nur im TEMP bereich.
    Ja ist mir auch schon aufgefallen das es bei einem FC nur in dem Temp bereich geht.
    Bei einem FB ist es egal da funktioniert es überall.
    Ich glaube das kommt davon weil bei einen FB werden die Werte direkt an die INPUT/OUTPUT über den Instanzdatenbaustein übergeben und bei einem FC werden keine Werte sondern Adressen zu den jeweiligen speicherbereichen ausserhalb des FC übergeben.

    godi

Ähnliche Themen

  1. TIA Portal AT Sicht in SCL
    Von Didaddy im Forum Simatic
    Antworten: 22
    Letzter Beitrag: 13.07.2015, 11:59
  2. Antworten: 5
    Letzter Beitrag: 08.04.2011, 14:36
  3. SCL AT-Sicht
    Von Lupo im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 11.11.2009, 11:41
  4. DB-Struct in DB-Struct transferieren
    Von Marvin II im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 20.11.2007, 08:29
  5. Nachfolger für S7 in Sicht?
    Von automobil80 im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 21.01.2007, 09:51

Lesezeichen

Berechtigungen

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