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

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

Thema: Fb in SCL

  1. #1
    Registriert seit
    10.01.2012
    Beiträge
    48
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    Ich bin scl Neuling habe vorher mit CoDeSys gearbeitet. Ich wollte ein Fb mehrmals aufrufen wie ich es auch in codesys mache, dieses funktioniert aber leider nicht in scl. Ich hoffe ihr könnt mir sagen wo der Fehler liegen könnte. Hier mal mein Programm



    ORGANIZATION_BLOCK OB1
    VAR_TEMP
    // reserviert
    info : ARRAY[0..19] OF BYTE;
    // temporäre Variablen
    Flanken_merker : BOOL;
    END_VAR
    BEGIN
    Flanke := M100.1 AND NOT Flanken_merker;
    Flanken_merker := M100.1;

    //----1 Aufruf------

    FB1.DB3(AUF :=AUF // IN: BOOL
    ,AB :=AB // IN: BOOL
    );
    Fuellstand:= DB3.Fuellstand; // OUT: INT

    //----2 Aufruf------
    FB1.DB4(AUF :=AUF_1 // IN: BOOL
    ,AB :=AB_1 // IN: BOOL
    );
    Fuellstand_1:= DB4.Fuellstand; // OUT: INT

    ;
    END_ORGANIZATION_BLOCK

    ----------------------------------------------------------------
    FUNCTION_BLOCK FB1
    VAR_INPUT
    // temporäre Variablen

    AUF: BOOL;
    AB: BOOL;
    END_VAR
    VAR_OUTPUT
    // statische Variablen
    Fuellstand :INT;
    END_VAR
    begin
    CTUD.DB2(CU := AB AND Flanke // IN: BOOL
    ,CD :=AUF AND Flanke // IN: BOOL
    // ,R := // IN: BOOL
    // ,LOAD := // IN: BOOL
    // ,PV := // IN: INT
    );
    // := DBxxx.QU; // OUT: BOOL
    // := DBxxx.QD; // OUT: BOOL
    Fuellstand:= DB2.CV; // OUT: INT

    ;
    END_FUNCTION_BLOCK


    Nun habe ich folgendes Problem das Fuellstand1 und Fuellstand2 immer den gleichen Wert haben.
    Wäre für eine Antwort sehr dankbar!!!

    Danke
    Zitieren Zitieren Fb in SCL  

  2. #2
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Zitat Zitat von Werner1 Beitrag anzeigen
    ORGANIZATION_BLOCK OB1
    VAR_TEMP
    // reserviert
    info : ARRAY[0..19] OF BYTE;
    // temporäre Variablen
    Flanken_merker : BOOL;
    END_VAR
    [OT] Täglich grüßt das Murmeltier [/OT]

    Hallo Werner,
    dein Flanken_merker sollte eine Statische Variabel sein.

    PS: Das mit dem Murmeltier hat nichts mit dir zu tun.
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  3. #3
    Registriert seit
    10.01.2012
    Beiträge
    48
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Leider ist es nicht zulässig eine statische Variable in ein OB zu benutzen.

    Bei Aufruf eines FB´s funktioniert der Fuellstand tadellos. Nur beim Aufruf des zweiten FB´s ist der Fuellstand_1 immer gleich Fuellstand 1.
    Also kann das Programm die beiden FB´s nicht unterscheiden und gibt immer den selben Wert aus.

  4. #4
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Zitat Zitat von Werner1 Beitrag anzeigen
    Leider ist es nicht zulässig eine statische Variable in ein OB zu benutzen.
    Dann nimm mal für den "Flanken_merker mal schnell einen "richtigen" Merker.
    Wenn es dann immer noch nicht geht können wir ja weiter schauen.
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  5. #5
    Registriert seit
    10.01.2012
    Beiträge
    48
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hab jetzt mal ein normalen Merker genommen, leider auch ohne Erfolg.

  6. #6
    Registriert seit
    10.01.2012
    Beiträge
    48
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    An den Merker liegt es glaub ich auch nicht, weil ja bei ein Aufruf des FB's ja tadellos funktioniert. Ich gehe davon aus das etwas mit dem Aufruf des FB's nicht passt, eventuell DB falsch oder so. Habe aber auch schon einmal andere DB's dafür eingesetzt.

  7. #7
    Registriert seit
    10.01.2012
    Beiträge
    48
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Beitrag

    So hab mal mein Programm hochgeladen

    Farbmischanlage.zip

  8. #8
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Hallo Werner,

    so müsste es funktionieren:
    Du legst den Baustein CTUD in den statischen Bereich des FB1, somit wird dein FB1 zur Multiinstanz und die Daten liegen dann jeweils im DB3 und DB4:

    Du weißt was ich meine wie das geht mit dem Aufruf?
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  9. #9
    Registriert seit
    10.01.2012
    Beiträge
    48
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Wie sind denn die Deklaration von CTUD aus?

  10. #10
    Registriert seit
    10.01.2012
    Beiträge
    48
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Bei dieser Deklaration zeigt er immer ein Fehler an
    CTUD.DB2 : SFB2

Ähnliche Themen

  1. S7 scl
    Von sabrina007 im Forum Simatic
    Antworten: 19
    Letzter Beitrag: 24.06.2011, 06:03
  2. SCL: FB Aufruf unter SCL mit Variablen DB
    Von ThorstenK im Forum Programmierstrategien
    Antworten: 32
    Letzter Beitrag: 10.02.2011, 19:15
  3. Antworten: 4
    Letzter Beitrag: 07.10.2006, 00:34
  4. SCL - AWL Kommando "SRD" in SCL
    Von Floh im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 09.06.2006, 09:37
  5. Brauche Hilfe bei SCL.SFC Aufrufen in SCL
    Von Gerold im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 06.10.2005, 10:47

Lesezeichen

Berechtigungen

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