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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: ARRAY mit SCL durchsuchen oder evtl anders

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo liebe SPS Freunde,

    Praktische Aufgabenstellung: Programmierung eines Hochregallagers, mit Unterschiedlichen Teilen, 0-->kein Teil, 1-->Schwarz Plasik, 2-->weiß Plastik, 3-->Metall. Lagerplatz ohne Sensor, Lagerplätze sind in einem 2 Dimensionalen Array aufgenommen.
    Info: (Chaotische Lagerhaltung)

    Unser Problem: Wie durchsuche ich ein Array auf den nächsten freien Lagerplatz, und wie finde ich ein bestimmtes Bauteil beim Auslagern.

    Mit freundlichen Grüßen
    spsguru
    Zitieren Zitieren ARRAY mit SCL durchsuchen oder evtl anders  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    Na ...
    Dafür ist doch SCL wie gemacht ...
    Code:
    meineReihe := 0 ;
    meineSpalte := 0 ;
     
    for i := 1 to Anzahl_Reihen by 1 do
       for j := 1 to Anzahl_Spalten by 1 do
          if Speicher [i,j] = 0 then 
             meineReihe := i ;
             meineSpalte := j ;
             // und was du sonst noch so tun willst
             exit ; exit ;
          end_if ;
       end_for ;
    end_for ;
    Gruß
    Larry

  3. #3
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.626
    Danke
    377
    Erhielt 801 Danke für 642 Beiträge

    Standard

    Zitat Zitat von spsguru Beitrag anzeigen
    , und wie finde ich ein bestimmtes Bauteil beim Auslagern.
    Vorschlag: Pro Lagerposition muss zwei Speicher-Plätze reserviert werden, für Typ (Leer, Weiss Plastik, ...usw.) und Serienummer.
    Jesper M. Pedersen

  4. #4
    spsguru ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.04.2011
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,
    Danke für die Hilfe ich habe mich dannn für eine while Schleife entschieden.


    FUNCTION FC80 : BOOL
    VAR_INPUT
    nr_ges:INT;
    Lager:ARRAY[1..5,1..3]OF INT;
    END_VAR

    VAR_OUTPUT
    x_pos:INT;
    y_pos:INT;


    END_VAR



    VAR_TEMP
    // temporäre Variablen
    x:INT;
    y:INT;
    gefunden:BOOL;

    END_VAR



    BEGIN
    // Anweisungsteil

    x:=2;
    y:=1;
    gefunden:=false;

    WHILE NOT(gefunden)AND (x<6) DO

    y:=1;
    WHILE NOT(gefunden)AND (y<4) DO
    // Vergleich von nr_ges mit einem Element von Lager

    IF Lager[x,y] = nr_ges THEN
    // Element gefunden
    gefunden:= true;
    x_pos:= x;
    y_pos:= y;
    ELSE
    // Element nicht gefunden
    y:=y+1;
    END_IF;
    END_WHILE;
    x:=x+1;
    END_WHILE;
    FC80 := gefunden;
    END_FUNCTION

    VG spsguru
    Zitieren Zitieren Danke  

  5. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Larrys Lösung mit zwei for-Schleifen ist wesentlich eleganter und eigentlich auch üblicher!
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  6. #6
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Ich empfehle, beim Einlagern einen Zeitstempel zu setzen und beim Auslagern den Lagerplatz mit dem ältesten Teil der passenden Kriterien auszuwählen.

    So stellst du sicher, dass du nicht ein Teil über Jahre im Hochregal liegen hast.
    mfG Aventinus

  7. #7
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Na ...
    Dafür ist doch SCL wie gemacht ...
    Code:
    meineReihe := 0 ;
    meineSpalte := 0 ;
     
    for i := 1 to Anzahl_Reihen by 1 do
       for j := 1 to Anzahl_Spalten by 1 do
          if Speicher [i,j] = 0 then 
             meineReihe := i ;
             meineSpalte := j ;
             // und was du sonst noch so tun willst
             exit ; exit ;
          end_if ;
       end_for ;
    end_for ;
    Gruß
    Larry
    Und das mit den 2 exits nacheinander funktioniert in Scl? Woher weiss den der compiler das er nach dem ersten exit nicht schon gleich rausspringen soll? (das ganze hier ist eine Frage, nicht das jetzt jemand meint es wäre falsch!). Ist das in Pascal dann auch so möglich?
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  8. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.404 Danke für 2.002 Beiträge

    Standard

    @Jochen:
    Bei dem Code-Beispiel handelt es sich natürlich um einen "Quick'n'dirty"-Code - also nicht getestet.
    Ich muß dir gestehen, dass ich das mit den 2 Exit's hintereinander aus meinem Verständnis der Beschreibung des Befehls geschrieben habe. Ich kann das jetzt also leider nicht (so oder so) belegen. Das gleiche Problem gibt es aber mit den ineinander verschachtelten While's - wenn auch vom TE unberücksichtigt.

    Gruß
    Larry

  9. #9
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Zitat Zitat von Jochen Kühner Beitrag anzeigen
    Und das mit den 2 exits nacheinander funktioniert in Scl? Woher weiss den der compiler das er nach dem ersten exit nicht schon gleich rausspringen soll?
    Der Compiler lässt zwar die Eingabe zu, allerdings wird das zweite Exit, wie Du auch vermutet hast, ignoriert.
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  10. Folgender Benutzer sagt Danke zu Paule für den nützlichen Beitrag:

    Jochen Kühner (03.05.2011)

  11. #10
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Paule Beitrag anzeigen
    Der Compiler lässt zwar die Eingabe zu, allerdings wird das zweite Exit, wie Du auch vermutet hast, ignoriert.
    Ah... Hätte mich sonst auch gewundet...
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

Ä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
  •