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

Ergebnis 1 bis 4 von 4

Thema: DB nach Array durchsuchen

  1. #1
    Registriert seit
    23.09.2007
    Beiträge
    7
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!

    Bin nach längerem wieder in die S7 Programmierung eingestiegen und stehe momentan vor einem kleinen Problem.

    Ich habe einen DB gefüllt mit Arrays.

    Code:
    type TTypData
      struct 
        ID : DINT;
        Drehzahl : INT;
        Vorschub : INT;
        Spanndruck : INT;
        Stationsnummer : INT;
        Klartext : STRING[25];
      end_struct
    end_type 
    data_block DB_Typdaten
      struct
        Typ : array [1..350] of TTypData;
      end_struct
    begin
      Typ[1].Typ := L#100029;
      Typ[1].Drehzahl := 2000;
      Typ[1].Vorschub := 800;
      Typ[1].Spanndruck := 3;
      Typ[1].Stationsnummer := 1;
      Typ[1].Klartext := 'PK-NG Abzweig 200/110/45';
    end_data_block
    Momentan enthält nur Typ 1 Daten.

    Brauche nun eine Funktion, die den DB nach dem nächsten lehren Array durchsucht und mir die ID zurück gibt (also in meinem Fall sollte jetzt 2 zurück kommen=.

    Danke für eure Hilfe.

    MFG

    Gerry
    Zitieren Zitieren DB nach Array durchsuchen  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.197
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Da bietet sich eine Schleife mit i=1..350 an, welche solange Typ[i].ID vergleicht bis eine Leer-Kennung (0?) gefunden wird oder das ganze Array ergebnislos durchsucht wurde. i ist dann die von Dir gesuchte Rückgabe.

    In AWL oder einfacher in SCL machbar.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    gPunkt (05.02.2014)

  4. #3
    gPunkt ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    23.09.2007
    Beiträge
    7
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Wie würde das ganze in AWL bzw. SCL aussehen?
    Hab da noch nicht so wirklich viel Erfahrung.
    Hab bis jetzt immer nur einfache Anwendungen mit KOP und FUP gemacht .

  5. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.197
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    In SCL
    Code:
        LeerDatensatz_Index := 0;
        FOR i := 1 TO 350 DO
          IF DB_Typdaten.Typ[i].ID = 0 THEN
            LeerDatensatz_Index := i;
            EXIT;
          END_IF;
        END_FOR;
    
    // LeerDatensatz_Index enthält den Index (1..350) des ersten leeren Datensatzes
    // oder 0 wenn kein Datensatz im Array mehr leer ist
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    gPunkt (05.02.2014)

Ähnliche Themen

  1. Step 7 DB nach Array durchsuchen
    Von TimeOUT im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 31.07.2013, 14:14
  2. Gernzwert bestimen SCL / Array durchsuchen
    Von zloyduh im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 29.08.2012, 18:03
  3. ARRAY mit SCL durchsuchen oder evtl anders
    Von spsguru im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 03.05.2011, 13:00
  4. Array in Script durchsuchen
    Von Züttu im Forum HMI
    Antworten: 2
    Letzter Beitrag: 21.07.2010, 16:40
  5. DB's nach Strings durchsuchen
    Von Flying Maulwurf im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 10.05.2010, 14:42

Stichworte

Lesezeichen

Berechtigungen

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