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

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

Thema: Problem mit FB in SCL

  1. #1
    Registriert seit
    14.05.2007
    Beiträge
    29
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    In einem FB1 rufe ich einen FB2 mit Instanz-DB2 auf,
    jetzt meckert der Compiler bei den Übergabeparametern.

    FB1:
    Var

    Stack_empty:BOOL;
    Stack_full:BOOL;
    Adr_Ziel :INT;

    End_Var

    FB2:
    Var_Input
    Adr_in : INT;
    Adr_insert : BOOL;
    Adr_remove : BOOL;
    End_Var

    VAR_OUTPUT
    empty : BOOL;
    full : BOOL;
    END_VAR



    Aufruf im FB1:

    FB2.DB2(Adr_in:=Adr_Ziel,Adr_insert:=true,Adr_remove:=false,Stack_empty:=empty,S tack_full:=full);

    Bekomme den Fehler: Ungültige zuweisung. Woran liegt das?
    Die Ausgangsparameter des FB2(empty, full) möchte ich gerne im FB1 verwenden.

    Danke!!
    Zitieren Zitieren Problem mit FB in SCL  

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

    Standard

    Zitat Zitat von broesel Beitrag anzeigen
    In einem FB1 rufe ich einen FB2 mit Instanz-DB2 auf,
    jetzt meckert der Compiler bei den Übergabeparametern.

    FB1:
    Var

    Stack_empty:BOOL;
    Stack_full:BOOL;
    Adr_Ziel :INT;

    End_Var

    FB2:
    Var_Input
    Adr_in : INT;
    Adr_insert : BOOL;
    Adr_remove : BOOL;
    End_Var

    VAR_OUTPUT
    empty : BOOL;
    full : BOOL;
    END_VAR



    Aufruf im FB1:

    FB2.DB2(Adr_in:=Adr_Ziel,Adr_insert:=true,Adr_remove:=false,Stack_empty:=empty,S tack_full:=full);

    Bekomme den Fehler: Ungültige zuweisung. Woran liegt das?
    Die Ausgangsparameter des FB2(empty, full) möchte ich gerne im FB1 verwenden.

    Danke!!

    Also ohne jetzt alle Fehler gesehen haben zu wollen aber das ist schon mal einer.

    Es ist zwar so das die Zuweisung vom Rechts nach Links geht also a:=b; a bekommt den Wert von b zugewiesen aber bei einem FB Aufruf werden den Ausgängen Variablen zugeordnet müsste also so:

    FB2.DB2(Adr_in:=Adr_Ziel, Adr_insert:=true, Adr_remove:=false, empty:=Stack_empty, full:=Stack_full);

    lauten.

    --> also OutFB2:=VarFB1
    Geändert von zotos (06.06.2007 um 11:51 Uhr)
    If you open your Mind too much, your Brain will fall out.

  3. #3
    broesel ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.05.2007
    Beiträge
    29
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Entschuldige, ich habe es im Aufruf falsch eingetragen.
    So wie Du es sagst, sollte es sein.

    Trotzdem die Fehlermeldung: Ungültige Zuweisung


    Danke für Deine Antwort.

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Das hängt m.E. mit den beiden Output-Parametern vom FB2 zusammen. Kontrollier das doch bitte noch mal ...

  5. #5
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Bei mir funktionier folgender Aufruf:

    Code:
    FUNCTION_BLOCK FB1
    VAR_INPUT
    END_VAR
    VAR_OUTPUT
    END_VAR
    VAR
        Stack_empty : BOOL;
        Stack_full  : BOOL;
        Adr_Ziel    : INT;
    END_VAR
    BEGIN  
    FB2.DB2(Adr_in      := Adr_Ziel, // IN: INT
            Adr_insert  := TRUE,     // IN: BOOL
            Adr_remove  := FALSE     // IN: BOOL
            ); 
        Stack_empty  := DB2.empty;   // OUT: BOOL
        Stack_full   := DB2.full;    // OUT: BOOL
    END_FUNCTION_BLOCK
    Gruß Kai

  6. Folgender Benutzer sagt Danke zu Kai für den nützlichen Beitrag:

    broesel (06.06.2007)

  7. #6
    broesel ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.05.2007
    Beiträge
    29
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja danke Kai, so geht es bei mir auch.
    Ich hatte es vorher auch schon einmal so.

    Mich wundert es nur, das ich die Rückgabeparameter vom FB2
    nicht gleich mit in den Aufruf schreiben kann.

    Na ja Danke an alle nochmal!

    Gruß broesel

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

    Standard

    Wenn Du das aber in einer Zeile machen willst geh doch hin und mache aus dem
    Code:
    VAR_OUTPUT
      empty : BOOL;
      full : BOOL;                 
    END_VAR
    ein
    Code:
    VAR_IN_OUT
      empty : BOOL;
      full : BOOL;                 
    END_VAR
    und teste den Aufruf noch mal.
    If you open your Mind too much, your Brain will fall out.

  9. #8
    broesel ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.05.2007
    Beiträge
    29
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Nein, geht nicht.
    Danke aber für den Vorschlag!!

  10. #9
    Registriert seit
    10.05.2005
    Beiträge
    2.005
    Danke
    220
    Erhielt 234 Danke für 205 Beiträge

    Standard

    Hi


    Code:
    FB2.DB2(Adr_in:=Adr_Ziel,Adr_insert:=true,Adr_remo ve:=false,Stack_empty:=empty,Stack_full:=full);
    Hast du den DB2 nochmals von Hand gelöscht ?

    Er sollte bei geänderer Parameterzahl / neuer Ableitung "Neu Generiert" werden.
    Karl

  11. #10
    broesel ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.05.2007
    Beiträge
    29
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ist so auch übersichtlicher, wenn man gleich nach dem Aufruf des FB2
    die Rückgabewerte in eine Variable des FB1 schiebt.
    Meine ich jedenfalls.

Ähnliche Themen

  1. OPC Problem routen problem
    Von kpeter im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 25.08.2010, 19:54

Lesezeichen

Berechtigungen

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