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

Ergebnis 1 bis 3 von 3

Thema: B&R Bibliothek Var Input als Pointer

  1. #1
    Registriert seit
    26.01.2010
    Beiträge
    51
    Danke
    1
    Erhielt 13 Danke für 12 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe eine Bibliothek in meinem B&R Automation Studio erstellt. In Dieser Bibliothek befindet sich ein Funktionsblock, der mir ein zweidimensionales String-Array füllt. Damit ich nicht zu viel Speicher brauche, übergebe ich dem Funktionsblock das Array als Pointer. Soweit so gut.
    Also lege ich in der Bibliothek mit folgendem Eintrag in der *.fun Datei mit folgendem Eintrag das Stringarray an:
    VAR_INPUT
    ptStringArr : REFERENCE TO ARRAY[1..diColumnMax, 1..diRowMax] OF STRING[diStringLength];
    END_VAR
    In der *.var Datei definiere ich die Grenzen als Konstante:
    VAR CONSTANT
    diColumnMax : DINT := 5;
    diRowMax : DINT := 5;
    diStringLength : DINT := 256;
    END_VAR

    In meiner Hauptapplikation übergebe ich der Instanz des Funktionsblocks das globale String-Array
    Inst(ptStringArr := ADR(sStrArr));

    Im Funktionblock der Bibliothek fülle ich dann das Array mit zwei FOR- Schleifen mit Werten:
    ptStringArr [m,n]='Wert';
    In meiner Hauptapplikation ist dann jeweils nur der erste Index beschrieben: sStrArr[1,1].

    Wenn ich den Code ausserhalb der Bibliothek ausführe und das Stringarray global anlege funktioniert alles bestens.

    Hat mir jemand einen Tip? Bei CoDeSys greift man auf Indizes eines Pointers mit dem ^-Zeichen zu, etwa so: ptStringAr^[m,n]='Wert', bei B&R bekomme ich einen Fehler, dass es sich nicht um einen Pointer handelt. Was mache ich falsch?

    Herzlichen Dank für eure Hilfe.
    Zitieren Zitieren B&R Bibliothek Var Input als Pointer  

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

    Standard

    Hallo,
    ich hab ein kleines Problem mit deinem Problem da ich es nicht schaffe die Arrays so zu definieren wie du das angegeben hast (2-Dimensionales Stringarray)

    Daher habe ich folgenden Weg gewählt das zu machen

    Du kannst ja mal mit deinem Code vergleichen, wo die Unterschiede liegen....

    Setze ich im Hauptprogramm fillArr = 1 wird das Array über den Fub befüllt mit den Zahlen > 100
    Setze ich im Hauptprogramm fillArr = 2 wird das Array im Hauptprogramm befüllt mit Zahlen > 10

    lg

    ---
    Hauptprogramm
    ---

    if (fillArr = 1) then
    fillArr = 0
    fill2DimArray(adr(StringArr))
    else if (fillArr = 2) then

    ; "heraussen" befühllen
    fillArr = 0
    loop x = 0 to 5 do
    loop y = 0 to 5 do
    itoa(x * 10 + y, adr(StringArr[x].OneDimArr[y]))
    endloop
    endloop

    endif

    ---
    Datentyp
    ---
    MWSnap 2010-04-22, 22_02_15.jpg
    ---
    fub
    ---
    MWSnap 2010-04-22, 21_58_50.jpg

    MWSnap 2010-04-22, 22_00_46.jpg

  3. Folgender Benutzer sagt Danke zu bits'bytes für den nützlichen Beitrag:

    rudl (27.04.2010)

  4. #3
    Registriert seit
    26.01.2010
    Beiträge
    51
    Danke
    1
    Erhielt 13 Danke für 12 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Herzlichen Dank für die ausführliche Beschreibung. Deine Version hat funktioniert, meine grundsätzlich auch. Mehrfacharrays sind erst ab dem Automation Studio V3.0.80.25, das Ende letzten Jahres erschienen ist, möglich. Scheinbar ist in dieser Version noch ein Fehler, wenn Mehrfacharrays, deren Grenzen als Konstanten definiert sind, als Pointer übergeben werden. Dieser sollte in einem der nächsten Updates behoben sein. Ich habe das Array jetzt lokal in der Bibliothek als Outputvariable definiert. Somit kann ich mit Instanz.Variable[m,n] auf die einzelnen Indizes zugreifen. Jetzt funktionierts einwandfrei.

  5. Folgender Benutzer sagt Danke zu rudl für den nützlichen Beitrag:

    bits'bytes (27.04.2010)

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 18.03.2009, 16:12
  2. Analog Input
    Von Lex_78 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 28.11.2008, 13:17
  3. Philips 432 Input
    Von BBAUSW im Forum Sonstige Steuerungen
    Antworten: 3
    Letzter Beitrag: 17.10.2007, 22:41
  4. Auf Bit aus MD input im FB zugreifen
    Von hbck im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 06.07.2007, 20:54
  5. LOGO! CPU Analog Input / Digital Input
    Von Anonymous im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 24.11.2005, 05:55

Lesezeichen

Berechtigungen

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