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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 12 von 12

Thema: ARRAY mit SCL durchsuchen oder evtl anders

  1. #11
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.622
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Nur der erste Exit wird ausgeführt.
    Und danach wird der erste FOR loop weiterfahren, was wohl nicht gemeint ist.
    Ich wurde ein BOOL "gefunden" setzen, und damit auf beide FOR loops ausbrecken.
    Jesper M. Pedersen

  2. #12
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.622
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hier ist ein Beispiel mit zwei FCs.
    "Platz_finden" und "Teil_finden".

    Code:
    (*-----------------------------------------------------
      -----------------------------------------------------*)
    TYPE "UDT_Platz_Teil"
        STRUCT
            Platz_status : INT ; // 0-->kein Teil, 1-->Schwarz Plasik, 2-->weiß Plastik, 3-->Metall.
            Teil_serienummer : DINT ;
            Teil_Zeitstempel : TOD ;
        END_STRUCT
    END_TYPE
     
    (*-----------------------------------------------------
      -----------------------------------------------------*)
    DATA_BLOCK "Regal_Lager"
        STRUCT
            Reihe : ARRAY[0..10] OF STRUCT
                Regal: ARRAY[0..8] OF "UDT_Platz_Teil" ;
                END_STRUCT ;
        END_STRUCT ;
    BEGIN
    END_DATA_BLOCK
     
    (*-----------------------------------------------------
      -----------------------------------------------------*)
    FUNCTION "FC_Leer_Platz_finden" : VOID
    VAR_OUTPUT
        Platz_gefunden : BOOL ;
        Reihe : INT ;
        Regal : INT ;
    END_VAR 
    VAR_TEMP
        i , j : INT ;
    END_VAR
    Platz_gefunden := FALSE ;
    Reihe := 0 ; 
    Regal := 0 ;
    FOR i:=0 TO 10 BY 1 DO
        FOR j:=0 TO 8 BY 1 DO
            IF ("Regal_lager".Reihe[i].Regal[j].Platz_status=0) THEN
                Platz_gefunden:=TRUE ;
                Reihe:=i ;
                Regal:=j ;
            END_IF ;
            IF Platz_gefunden THEN
              EXIT ;
            END_IF ;
        END_FOR ;
        IF Platz_gefunden THEN
            EXIT ;
        END_IF ;
    END_FOR ;
    END_FUNCTION
     
    (*-----------------------------------------------------
      -----------------------------------------------------*)
    FUNCTION "FC_Teil_finden" : VOID
    VAR_INPUT
        SucheTeil : DINT ;
    END_VAR
    VAR_OUTPUT
        Teil_gefunden : BOOL ;
        Reihe : INT ;
        Regal : INT ;
    END_VAR 
    VAR_TEMP
        i , j : INT ;
    END_VAR
    Teil_gefunden := FALSE ;
    Reihe := 0 ; 
    Regal := 0 ;
    FOR i:=0 TO 10 BY 1 DO
        FOR j:=0 TO 8 BY 1 DO
            IF ("Regal_lager".Reihe[i].Regal[j].Teil_serienummer=SucheTeil) THEN
                Teil_gefunden:=TRUE ;
                Reihe:=i ;
                Regal:=j ;
            END_IF ;
            IF Teil_gefunden THEN
              EXIT ;
            END_IF ;
        END_FOR ;
        IF Teil_gefunden THEN
            EXIT ;
        END_IF ;
    END_FOR ;
    END_FUNCTION
    edit: Es gabe ein NOT zu viel
    Geändert von JesperMP (03.05.2011 um 13:04 Uhr)
    Jesper M. Pedersen

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 10.02.2011, 12:28
  2. Antworten: 3
    Letzter Beitrag: 06.12.2010, 18:18
  3. Array in Script durchsuchen
    Von Züttu im Forum HMI
    Antworten: 2
    Letzter Beitrag: 21.07.2010, 16:40
  4. Im Forum laufen die Uhren etwas anders !!
    Von MW im Forum Stammtisch
    Antworten: 2
    Letzter Beitrag: 25.03.2007, 17:36
  5. Antworten: 3
    Letzter Beitrag: 13.10.2005, 11:53

Lesezeichen

Berechtigungen

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