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

Ergebnis 1 bis 6 von 6

Thema: B&R Bibliothekserstellung

  1. #1
    Registriert seit
    30.04.2009
    Beiträge
    11
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    gerade tue ich mir ein bisschen schwer bei der Erstellung einer Bibliothek im / für das Automation Studio von B&R.

    Ist es tatsächlich wahr, dass man keine globalen Variablen in Bibliotheken anlegen und benutzen kann?
    Im Prinzip würde mir auch der Geltungsbereich der Bibliothek reichen, aber anscheinend gehen nur Konstanten.

    Zum Hintergrund: Ich habe vorher mit CoDeSys gearbeitet und da ist das kein Problem.

    Danke und verwirrte Grüße
    Jicin
    Zitieren Zitieren B&R Bibliothekserstellung  

  2. #2
    Registriert seit
    13.09.2010
    Beiträge
    113
    Danke
    0
    Erhielt 18 Danke für 18 Beiträge

    Standard

    Es werden keine globalen Variablen unterstützt, damit Deine Bibliothek auch in einem anderen Softwareprojekt funktioniert.
    Dort wirst Du die gleichen globalen Variablen vermutlich nicht vorfinden. Abgesehen davon folgt das B&R Konzept der Datenkapselung, dass sich in allen Programmiersprachen wiederfindet. Benötigst Du also Daten, die global vorhanden sind, muß Dein Interface entsprechende Parameter bereitstellen.

  3. Folgender Benutzer sagt Danke zu Bitmanipulator für den nützlichen Beitrag:

    Jicin1980 (13.09.2012)

  4. #3
    Jicin1980 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.04.2009
    Beiträge
    11
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Prinzipiell ist das ja ein guter Ansatz, aber ich bräuchte eine bibliotheksweit gültige Variable für baustein-interne Verwaltungsaufgaben.
    Das ist eigentlich nichts, was ich dem Benutzer zeigen und zumuten möchte.

    Ich wollte eigentlich, dass sich jede Baustein-Instanz eine eindeutige ID holen kann und das wäre mit einer globalen Variable eben am
    einfachsten gegangen. In andern Hochsprachen gibt es dazu wenigstens sowas wie "static", aber bei B&R hab ich echt keine Ahnung wie
    das zu realisieren ist.

  5. #4
    Registriert seit
    12.04.2010
    Beiträge
    300
    Danke
    22
    Erhielt 54 Danke für 52 Beiträge

    Standard

    Hallo,

    wenns nur um eine eindeutige ID geht (also nicht fortlaufend, nicht bei 1 beginnend usw.) könntest du mal überlegen ob du nicht die Adresse einer internen Variable verwenden könntest. Die müsste eigentlich bei jedem FUB und bei jeder Instanz unterschiedlich sein....

    bg
    bb

  6. #5
    Jicin1980 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.04.2009
    Beiträge
    11
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ja, das ist jetzt der Workaround den ich jetzt implementiere.. aber so richtig schön finde ich das eben nicht..
    ich hätte schon lieber eine fortlaufende nummer gehabt, aber nun...

  7. #6
    Registriert seit
    17.10.2007
    Beiträge
    263
    Danke
    5
    Erhielt 52 Danke für 48 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich verwende folgendes Konstrukt in Bibliothek-Funktionen:


    // ##################################################
    // Variablenreferenzen holen, Funktion initialisieren
    // ##################################################
    machineConfigRef ACCESS machineConfigAddr;
    usw, usw

    Wobei 'machineConfigRef' eine interne Variable ist, welche eine Referenz auf die durch 'machineConfigAddr' (eine VAR_IN) adressierte globale Variable darstellt.



    Des weiteren habe ich mir, um die jeweilige Funktionsschnittstelle schlank zu halten, eine Hilfsfunktion 'getVarAddr' gebaut, welche ich anstelle der VAR_IN-Adressvariablen verwende:

    status := PV_xgetadr(ADR(varName), ADR(tmpVarAddr), ADR(varLen));
    getVarAddr := tmpVarAddr;

    Obiger Funktionskopf sieht dann so aus:

    // ##################################################
    // Variablenreferenzen holen, Funktion initialisieren
    // ##################################################
    machineConfigRef ACCESS getVarAddr('machineConfig');
    usw, usw



    Dies zusammen erlaubt mir die Nutzung von Globalvariablen in Bibliotheks-Funktionen.


    Gruß, Fred
    Geändert von faust (01.10.2012 um 21:56 Uhr)

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 04.04.2012, 15:12
  2. IBH Link S7++ & CPU314 & TP177B mit Profibus
    Von CrazyMC im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 25.03.2012, 22:12
  3. Step 7 V11 & AWL & PLC-SIM
    Von derdas im Forum PC- und Netzwerktechnik
    Antworten: 1
    Letzter Beitrag: 06.03.2012, 11:22
  4. Siemens S7-200 & TSAP & LibnoDAve
    Von Dominique Van Huffel im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 19.09.2011, 17:57
  5. PPI && TD200 stört die Verbindung zum PC
    Von Anonymous im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 10.11.2004, 14:39

Stichworte

Lesezeichen

Berechtigungen

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