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

Ergebnis 1 bis 6 von 6

Thema: Arrays im FB lesen

  1. #1
    Registriert seit
    07.07.2011
    Ort
    Schrobenhausen/Schiefling
    Beiträge
    228
    Danke
    36
    Erhielt 29 Danke für 22 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi all,
    mache erste Gehversuche mit arrays.
    Habe arrays für Zustandsmeldungen von Rollos global definiert.
    1. Meldungsnummern
    2. Meldetexte

    VAR_GLOBAL
    aiRolloMeldNr : ARRAY [1..imax_rollomeld] OF INT;
    iRolloMeldNrIndex : INT:=1;
    asRolloMeldTxt : ARRAY [1..imax_rollomeld] OF STRING;
    iRolloMeldTxtIndex : INT:=1;
    END_VAR
    VAR_GLOBAL CONSTANT
    imax_rollomeld: INT :=17; (*Obergrenze der Arrays*)
    END_VAR


    Gefüllt werden sie beim Systemstart.
    In einem PRG mache ich die Zuordnung.
    ScreenShot003.jpg
    Funktioniert bestens solange das als PRG läuft.
    Wenn ich nun das Selbe als FB mit var_in der Meldungsnummer und var_out des Meldungstextes machen will, funktioniert keine Index-Zuordnung.
    Was mache ich falsch/muss ich noch berücksichtigen?
    Zitieren Zitieren Arrays im FB lesen  

  2. #2
    Registriert seit
    24.02.2009
    Beiträge
    1.242
    Danke
    23
    Erhielt 276 Danke für 235 Beiträge

    Standard

    Darf man davon ausgehen, dass du eine Instanz des FBs erstellt hast und diese auch ordentlich Parametriert aufrufst?
    Zeig doch bitte mal wo und wie du die Instanz des FBs aufrufst.....

  3. #3
    tomrey ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.07.2011
    Ort
    Schrobenhausen/Schiefling
    Beiträge
    228
    Danke
    36
    Erhielt 29 Danke für 22 Beiträge

    Standard

    Hi Master,
    nein, davon kann man nicht ausgehen, vermutlich liegt da der Hund begraben aber wie gesagt: erste Gehversuche mit Arrays...
    Den FB rufe ich aus anderen FBs je Rollo (mit Oscat BlindControl usw.) auf und übergebe nur die jeweilige Meldenummer.
    Als Var_out erwarte ich den Meldungstext.
    Arrays und Indices sind global definiert (s. Post).
    Was muss ich noch parametrieren?
    Danke für die Unterstützung!
    Gruß

  4. #4
    Registriert seit
    24.02.2009
    Beiträge
    1.242
    Danke
    23
    Erhielt 276 Danke für 235 Beiträge

    Standard

    Ich glaube das Problem hier ist, dass du das Netzwerk nicht in einer Schleife abarbeitest....

    Dein Netzwerk wird nur einmal je FB-Aufruf durchlaufen, d.h. iRolloMeldNrIndex wird immer nur um 1 hochgezählt bis zum nächsten Aufruf.
    Der Nachfolgende FB-Aufruf fängt also nicht von vorne an dein Array zu durchlaufen, sondern da wo der vorrangegangene FB aufgehört hat.

    Was du machen musst, ist also alles in eine Schleife zu packen, die den iRolloMeldNrIndex von 0 bis zum Max Wert durchläuft. So stellst du sicher dass jede FB-Instanz immer das ganze Array abarbeitet und nicht nur ein Feld je Aufruf.
    Außerdem würd ich bei mehrfachen Instanzen immer ganz ganz Vorsichtig mit Globalen Variablen sein. Da kann schnell mal irgendwas undefiniertes bei rauskommen wenn 10mal pro Zyklus auf ein und die selbe Variable geschrieben wird.

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

    tomrey (13.08.2013)

  6. #5
    tomrey ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.07.2011
    Ort
    Schrobenhausen/Schiefling
    Beiträge
    228
    Danke
    36
    Erhielt 29 Danke für 22 Beiträge

    Standard

    Wow super, das ist wohl der Grund!
    Jetzt muss ich nur noch rausfinden, wie man so eine Schleife mit CFC programmiert - kannst Du das?
    Das Problem mit den globalen Variablen stellt sich mir (bisher) nicht, da diese von Programmen/FB's nur gelesen werden - schreiben tut nur die Visu.
    Gruß

  7. #6
    Registriert seit
    24.02.2009
    Beiträge
    1.242
    Danke
    23
    Erhielt 276 Danke für 235 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Mit CFC habe ich noch nie gearbeitet. Aber ich würde es mal mit Sprüngen versuchen.

Ähnliche Themen

  1. Arrays in S7 schreiben
    Von CrazyCat im Forum Simatic
    Antworten: 19
    Letzter Beitrag: 29.06.2012, 15:19
  2. Arrays in DB anlegen
    Von litlegerman im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 31.10.2011, 18:32
  3. Arrays in PC Worx
    Von Daywalker im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 13.08.2010, 15:01
  4. dynamische Arrays?
    Von merlin im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 30.05.2008, 16:06
  5. Pointer und Arrays
    Von SolSna im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 26.02.2008, 20:16

Lesezeichen

Berechtigungen

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