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

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

Thema: Instanz DB in SCL automatisch erzeugen

  1. #1
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, wo oder wie kann ich denn einstellen, dass bei einem SCL FB der dazugehörige DB direkt neu mit erzeugt wird?
    Zitieren Zitieren Instanz DB in SCL automatisch erzeugen  

  2. #2
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

    Standard

    Der DB wird erst erzeugt, wenn du den FB aufrufst.

  3. #3
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Ja schon klar, es gibt wohl aber auch einen Befehl, bzw. eine Einstellung, dass der DB direkt beim Übersetzen des FB´s erzeugt wird.
    Zitieren Zitieren das ist klar  

  4. #4
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

  5. #5
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Danke dir. Genau sowas habe ich gesucht
    Zitieren Zitieren Super  

  6. #6
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Also die Vorgehensweise in den Siemens-Link finde ich ja mehr als seltsam.
    Ich habe üblicherweise eine Quellcodedatei für einen Baustein, laut Siemens soll ich in diesen Quellcode die Instanz-DBs mit erzeugen? Bei FBs weiß ich nicht im voraus wie viele Instanzen ich benötigen werde. Die dort geschilderte Vorgehensweise ist wohl eher was für Bausteine an denen ich in der Inbetriebnahmephase oder zum Testen viel ändere.

    Aber zum Erzeugen der Datenbausteine:
    Wenn du einen FB mit einem eigenen Instanz-DB aufrufst, wird der DB automatisch erzeugt.
    Code:
    TestFB.DB234(IN1 := false, IN2 := true);
    Wenn der DB234 nicht existiert wird er automatisch erzeugt.

    Wenn du vorher in der Symboltabelle ein Symbol für den DB234 (z.B. "IDB_TestFB" mit Datentyp FB xy) anlegst, kannst du den Baustein auch über das Symbol erzeugen:

    Code:
    TestFB.IDB_TestFB(IN1 := false, IN2 := true);

    Vielleicht hat in den Zusammenhang nochmal jemand einen Tip für mich:
    Und zwar kann ich über die Compileroptionen einstellen dass die Bausteinnummern automatisch vergeben werden. Leider funktioniert das mit der Nummer des Instanz-DB wie oben zu einem FB nicht automatisch. Also muss ich auch wenn ich das ganze Programm in SCL geschrieben habe immer noch für die Instanz-DB manuell in der Symboltabelle arbeiten. Und wenn ich mit der automatischen Nummernvergabe arbeite, weiß ich vorab nicht einmal welche Nummer der FB später bekommen wird.
    Vielleicht gibts da noch einen Trick wie man in SCL auf die manuelle Nummernvergabe komplett verzichten könnte.

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

    Standard

    Automatisches Blocknummerzuweisung sollte funktionieren.
    Hast du die Rehenfolge richtig ?:

    Erst FB
    Dann IDB
    Dann aufruf von FB.IDB

    Dies klappt bei mir mit Automatisches Blocknummern:

    Code:
    FUNCTION_BLOCK "my_FB"
    
    VAR_input
        iInp1 : INT ;
        iInp2 : INT ;
    END_VAR
    
    VAR_output
        iOutp1 : INT ;
    END_VAR
    
    VAR
        iStat1 : INT ;
        iStat2 : INT ;
    END_VAR
    
    iStat2 := iStat1 ;
    iOutP1 := iStat1 + iInp1 - iInp2 ;
    iStat1 := iOutp1 ;
    
    END_FUNCTION_BLOCK
    
    
    DATA_BLOCK "my_IDB"  "my_FB"
    BEGIN
    END_DATA_BLOCK
    
    
    ORGANIZATION_BLOCK OB1
    VAR_TEMP
        info : ARRAY[0..19] OF BYTE;
    END_VAR
    
    "my_FB"."my_IDB"( iInp1:=10 , iInp2:=12 ); 
    MW12 := INT_TO_WORD("my_IDB".iOutp1) ;
    
    END_ORGANIZATION_BLOCK
    Jesper M. Pedersen

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

    Thomas_v2.1 (12.01.2011)

  9. #8
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Zitat Zitat von JesperMP Beitrag anzeigen
    Automatisches Blocknummerzuweisung sollte funktionieren.
    Hast du die Rehenfolge richtig ?:

    Erst FB
    Dann IDB
    Dann aufruf von FB.IDB

    Dies klappt bei mir mit Automatisches Blocknummern:

    Code:
    DATA_BLOCK "my_IDB"  "my_FB"
    BEGIN
    END_DATA_BLOCK
    Ah, so geht es.
    Ich hatte zwar gehofft dass es auch ohne separate Deklaration mit DATA_BLOCK ... funktioniert , aber zumindest funktioniert es überhaupt.

  10. #9
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

    Standard

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Ah, so geht es.
    Ich hatte zwar gehofft dass es auch ohne separate Deklaration mit DATA_BLOCK ... funktioniert , aber zumindest funktioniert es überhaupt.
    So stehts doch auch in der "seltsamen" Anleitung von Siemens
    in Bild 2

  11. #10
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von marlob Beitrag anzeigen
    So stehts doch auch in der "seltsamen" Anleitung von Siemens
    in Bild 2
    Ja, schon. Bezogen auf das Beispiel von Jesper würde ich persönlich die Data-Block Definition zusammen mit dem OB1 in die gleiche Quelldatei packen, und nicht in die des "my_FB" wie im Siemens Beispiel.

    Mehrere Bausteine in einer Quelldatei verbieten sich ja, weil sich die Bausteine dann im Onlinestatus nicht mehr beobachten lassen.

Ähnliche Themen

  1. WinCC und Step7 Software automatisch erzeugen
    Von WinCC_Novize im Forum HMI
    Antworten: 4
    Letzter Beitrag: 05.11.2010, 00:00
  2. Instanz-DB
    Von SPS_NEU im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 18.03.2009, 14:08
  3. SCL : Instanz in Instanz
    Von Larry Laffer im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 16.02.2009, 11:01
  4. Rezepturdatensatz automatisch in Runtime erzeugen
    Von ChristianPaier im Forum HMI
    Antworten: 0
    Letzter Beitrag: 29.10.2008, 11:52
  5. Antworten: 13
    Letzter Beitrag: 18.01.2008, 12:47

Lesezeichen

Berechtigungen

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