DB nach Array durchsuchen

gPunkt

Level-1
Beiträge
7
Reaktionspunkte
0
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
 
Da bietet sich eine Schleife mit i=1..350 an, welche solange Typ.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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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 :oops:.
 
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
 
Zurück
Oben