TIA Hochregallager mit Array , abfrage etc.

Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hatte freiesFach als Erkenner ob etwas gefunden wurde benutzt - dabei musst du natürlich etwas voreinstellen - in meinem Fall habe ich -1 als Defaultwert hinein geschrieben - steht der Wert nach der Schleife noch drin gab es kein freies Fach ...

Deinmen Code könnte man noch etwas optimieren :

Code:
#Lagerort := 0;
          #freiesFach := FALSE;

FOR #Zähler := 1 TO 54 DO
            IF not #Lager[#Zähler]  THEN
                #Lagerort := #Zähler;
                #freiesFach := TRUE;
                EXIT;  // beendet die Schleife
            END_IF;
      end_for ;

IF #freiesFach  THEN
                // weiterschalten ... oder so
            else
               // nichts gefunden
            END_IF;
 
Noch ein Hinweis:
In der Realität reicht der interaktive Prozess, das nächste, freie Fach zu finden nicht aus.
Da sind Themen zu berücksichtigen, wie:
- Regallast (Statik)
- Verfügbarkeit (bei doppelt- oder mehrfachtiefen Regalen)
- Geschwindigkeit
- ….
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Noch ein Hinweis:
In der Realität reicht der interaktive Prozess, das nächste, freie Fach zu finden nicht aus.
Da sind Themen zu berücksichtigen, wie:
- Regallast (Statik)
- Verfügbarkeit (bei doppelt- oder mehrfachtiefen Regalen)
- Geschwindigkeit
- ….
Guten Morgen,

ja dsa stimmt. Wie gesagt, hab mit sowas nicht am Hut, aber ich persönlich will mal sowas gemacht haben.
Eigentlich müsste ja jedes Regal noch ein Sensor theoretisch haben, zwecks Überprüfung ob, wirklich was daran liegt.

Funktioniert deine Fachsuche denn jetzt oder welches Problem hast du mit deinem abgeändertem Code noch?

Code:
        FOR #Zähler := 1 TO 54 DO
            IF #Lager[#Zähler] = FALSE THEN
                #Lagerort := #Zähler;
                #freiesFach := TRUE;
                EXIT;
            ELSE
                #Lagerort := -1; // evtl. auch noch diese Variable mit initialisieren?
                #freiesFach := FALSE;
            END_IF;
        END_FOR;
Sollte die gleiche Funktion darstellen, nur etwas schmäler.

Der Wert "-1" wird oft als Initialwert verwendet um sauber gegen etwaige Ersatz-/Rückgabewerte (z.B. "0") vergleichen zu können.
Soweit meine Erfahrung.
Ich hatte gestern abend noch das umprogrammiert aber noch nicht getestet.
Lass es gerade mal laufen, habe mal als startcode eingegeben, dass Fach 1, 4 , 11 und 24 belegt sind.
Also die Fächer sind jetzt auch frei.
Habe noch die "Targetpos" vom Stacker geändert auf Lagerort.

Danke für die Erklärung.

Ich hatte freiesFach als Erkenner ob etwas gefunden wurde benutzt - dabei musst du natürlich etwas voreinstellen - in meinem Fall habe ich -1 als Defaultwert hinein geschrieben - steht der Wert nach der Schleife noch drin gab es kein freies Fach ...

Deinmen Code könnte man noch etwas optimieren :

Code:
#Lagerort := 0;
          #freiesFach := FALSE;

FOR #Zähler := 1 TO 54 DO
            IF not #Lager[#Zähler]  THEN
                #Lagerort := #Zähler;
                #freiesFach := TRUE;
                EXIT;  // beendet die Schleife
            END_IF;
      end_for ;

IF #freiesFach  THEN
                // weiterschalten ... oder so
            else
               // nichts gefunden
            END_IF;
Vor der Schleife :
#Lagerort := 0;
#freiesFach := FALSE;
soll ich dazuschreiben ? Also definieren gleich ?


Regal entladen am besten ein neuen FB machen oder ? oder ein FC ?
 
Regal entladen am besten ein neuen FB machen oder ? oder ein FC ?
Ich habe mir irgendwann angewöhnt alles was Statische Variablen braucht in einem FB umzusetzen. Die globalen "Merker" und "DB's" verwende ich eigentlich nur wenn irgend etwas von einem Baustein zum anderen übergeben werden soll. Im Grunde so, dass alles was zu der Funktion eines Bausteins gehört auch in dem Baustein drin ist ...
 
Ich habe mir irgendwann angewöhnt alles was Statische Variablen braucht in einem FB umzusetzen. Die globalen "Merker" und "DB's" verwende ich eigentlich nur wenn irgend etwas von einem Baustein zum anderen übergeben werden soll. Im Grunde so, dass alles was zu der Funktion eines Bausteins gehört auch in dem Baustein drin ist ...
Ok.
Also neuen FB. Dann so ähnlich aufgebaut wie Regal laden ?
Sprich mit der Array schleife ? Da kann ich ja auf den DB zugreifen
Oder geht es einfacher `?
 
im neuen FB "Regal entladen"?
Dann muss ich ja den Array neu beschreiben, wenn ich den in Static "reinziehe" oder liege ich da Falsch ?

Das ist der Grund warum du dafür einen Globalen DB anlegen solltest. Damit du von anderen Bausteinen aus darauf zugreifen kannst, ohne diese Structur mit jedem Baustein neu anzulegen!
 
Zurück
Oben