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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: kleines SCL Programm - finde Fehler nicht

  1. #11
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.403 Danke für 2.002 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    in dem Fall solltest du dem Vorschlag von Thomas folgen.
    Du legst die FB's in der Instanz des aufrufenden FB's wie Variablen im STAT-Bereich an - also etwa so :
    Code:
    VAR
       myFB : FB62 ;
    End_Var ;
     
    ... und im Programm rufst du dann "myFB" auf ...
    Entscheidend hierfür ist allerdings, dass deine "Unter"-FB's auch wirklich multi-Instanz-fähig sind und auch eigenständig funktionieren (mit ihren internen Variablen oder/und der Schnittstelle).

    Gruß
    Larry

  2. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    FrankTheTank (25.08.2011)

  3. #12
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Zitat Zitat von FrankTheTank Beitrag anzeigen
    Muss ich dazu FB62 und FB63 von FB61 aus aufrufen? Werden die benötigten Variablen von FB61 dann zu FB62/63 "durchgereicht"? Und kennt dann FB61 die Variablen seiner "Kinder"? Das würde nämlich mein Problem lösen.
    Klar geht das, dafür sind die Schnittstellen ja da. Die Instanz-FBs müssen natürlich dann bevor sie in einem anderen FB verwendet werden bekannt sein.
    Ich habe jetzt mal anhand deines Beispiels von oben die FB62 und FB63 mit einer Schnittstelle erweitert, ohne besondere Sinnhaftigkeit.

    So kannst du das Programm dann an einem Stück übersetzen:
    Code:
    (***********************************)
    FUNCTION_BLOCK FB62
    VAR_INPUT
       conf : int;
    END_VAR
    VAR_OUTPUT
       currentState : INT;
    END_VAR
    
    BEGIN
        currentState := 1;
    END_FUNCTION_BLOCK
    (***********************************)
    FUNCTION_BLOCK FB63
    VAR_INPUT
       conf : int;
    END_VAR
    VAR_OUTPUT
       currentState : INT;
    END_VAR
    
    BEGIN
        currentState := 1;
    END_FUNCTION_BLOCK
    (***********************************)
    FUNCTION_BLOCK FB61
    VAR
       parallel_executable : BOOL := TRUE;
       gen1 : FB62;
       gen2 : FB63;
    END_VAR
    
    BEGIN
        (* Bausteine aufrufen *)
        gen1(conf := 123);
        gen2(conf := 456);
    
        IF (gen1.currentState = 3) & (gen2.currentState = 1) THEN
           parallel_executable := TRUE;
        END_IF;
    END_FUNCTION_BLOCK
    (***********************************)
    ORGANIZATION_BLOCK OB1
    VAR_TEMP
        info : ARRAY[0..19] OF BYTE;
    END_VAR
    
    BEGIN
        (* FB61 aufrufen, mit Instanz-DB61 *)
        FB61.DB61();  
    END_ORGANIZATION_BLOCK

  4. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    FrankTheTank (25.08.2011)

  5. #13
    Registriert seit
    27.07.2011
    Beiträge
    41
    Danke
    17
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!

    Danke für die schnelle Antwort. Soweit ich das verstanden habe mach ich das dann so:

    Code:
    FUNCTION_BLOCK FB61
    VAR
       ParExecutable : BOOL;
       Gen1 : FB62;
       Gen2 : FB63;
    END_VAR
    
    Gen1;
    Gen2;
    
    END_FUNCTION_BLOCK;
    
    DATA_BLOCK DB61
    BEGIN
    FB61
    END_DATA_BLOCK;
    Muss ich dann FB62 und FB63 vor FB61 in der SCL Quelle stehen haben?
    Und wie funktioniert das dann mit deren Datenblöcken? Genauso anlegen wie bei FB61?

    Code:
    FUNCTION_BLOCK FB62
    VAR
       StateGen1 : INT := 1;
    END_VAR
    ...
    END_FUNCTION_BLOCK;
    [edit] Aaaah, genau so ein Beispiel hab ich gebraucht! Super [/edit]
    Geändert von FrankTheTank (25.08.2011 um 10:39 Uhr)

Ähnliche Themen

  1. Kleines Programm
    Von pulpago im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 07.09.2011, 12:07
  2. CPU geht auf STOP, ich finde den Fehler nicht :(
    Von nikilouder im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 05.09.2011, 23:23
  3. SCL: kleines Programm
    Von Uli_87 im Forum Programmierstrategien
    Antworten: 15
    Letzter Beitrag: 05.06.2009, 18:09
  4. ein kleines Programm in S5
    Von wowo im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 10.10.2007, 23:40
  5. Ein kleines Programm nur !!! Nur wie !??
    Von Anonymous im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 16.02.2004, 03:04

Lesezeichen

Berechtigungen

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