Was versteht man unter einer Instanz

stowoda
2008-10-07
2008-10-08
  • stowoda - 2008-10-07

    Hallo,

    ist die Instanzbildung sowas wie eine Deklaration?

     
  • Erik Böhm - 2008-10-08

    Moin

    Durch die Deklaration eines FB's wird eine Instanz (in der Regel eher mehrere, sonst lohnt sich das ja nicht) gebildet.

    Also z.B.: myFbInstance: myFb_FB;

    oder auch

    myFbInstance: array[1..10] of myFb_FB;

    In der CoDeSys Hilfe zu finden unter: Instanzen von Funktionsblöcken

    Gruss

    Erik

     
  • Pitsch52 - 2008-10-08

    Hallo

    Am einfachsten ist das zu verstehen, wenn Du folgendes machst.

    Erstelle im Objekt-Explorer ein Objekt PLC_PRG. Als Sprache FUP wählen.

    Dann wieder Rechtsklick im Objekt-Explorer, und Objekt einfügen.

    Nun machst Du einen Funktionsblock (FB), mit Namen TEST_FB. Die Sprache wählst Du hier ST.

    Im Deklarationsteil:

    Definiere im TEST_FB eine Eingangsvariable IN:BOOL; und eine Ausgangsvariable OUT:BOOL;

    Im Programmteil:

    Schreibe folgenden Code:

    IF IN = TRUE THEN

    OUT := TRUE;

    ELSE

    OUT := FALSE;

    END_IF

    Jetzt ist der TEST_FB fertig.

    Jetz wechselst Du in den PLC_PRG, und klickst rechts auf die Markierung im ersten Netzwerk und wählst Baustein. Es wird ein AND Baustein als Standard erstellt. Markiere jetzt das Wort AND und ersetze es durch TEST_FB. Gib der Baustein, noch einen Namen (Fragezeichen über dem Symbol) der nach möglichkeit von TEST_FB abweicht (Z.B. TE_FB1). Wie Du siehst, hast Du jetzt eine Instanz deines selbst programmierten Funktionsbausteines TEST_FB erstellt. Er wird also einmal im Speicher abgebildet.

    Wenn Du jetzt im Kopf dieses Netzwerkes rechts klickst und <netzwerk danach=""> wählst, so kannst Du das ganze wiederholen. TEST_FB bleibt wieder gleich. Du musst jetzt nur einen anderen Instanznamen wählen(Z.B. TE_FB2). Jetzt hast Du 2 Instanzen deines Funktionsbausteines. Er wird also im Speicher 2x abgebildet und funktioniert unabhängig vom Ersten.</netzwerk>

    Das ganze kanst Du jetzt so oft wie Du willst wiederholen. Jedesmal, hast Du ein Abbild deines FB mehr im Speicher und alle funktionieren unabhängig von einander. Wenn Du Die Eingangsvariable bei einem FB auf TRUE setzst, hat das auf die anderen Instanzen keinen Einfluss. Nur der Ausgang der betreffenden Instanz, geht auf TRUE.

    Viel Spass beim studieren!

    Mit freundlichen Grüssen! Pitsch

     

Log in to post a comment.