Step 7 Quelle und Ziel vergleichen

klauserl

Level-2
Beiträge
246
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
Folgendes Problem. Habe 14 Quell Silos und 8 Ziel Silos. Jede Quelle kann jedes Ziel erreichen.
Um ein vermischen von Produkten zu vermeiden, muss der Produktname der Quelle und des Zieles übereinstimmen.
Das Vergleichen der Strings stellt kein Problem dar.
Wie stelle ich es an das der Baustein welcher die beiden Strings vergleicht mit den passenden Strings versorgt wird? Steh voll auf der Leitung. Ich will den Baustein welcher Quelle und Ziel vergleicht ja nicht 100 mal aufrufen.
Danke
 
Hallo,

evtl. so:

Array Quelle[1..14] type string
Array Ziel[1..8] type string

diese dann in einer verschachtelten Schleife abfragen
(Schleife Q von 1-14 mit Schleife Z von 1-8 )

wenn Quelle[Q] = Ziel[Z] dann ...
 
Zuletzt bearbeitet:
Code:
TransportAktiv := FALSE;
FOR z := 1 TO 8 DO // ZielSilos 1 .. 8 
    IF Z_Silo[z].Q_Silo > 0 THEN
        TransportAktiv := TRUE;
        EXIT;
    END_IF;    
END_FOR;
FOR z := 1 TO 8 DO // ZielSilos 1 .. 8 
    IF Z_Silo[z].Q_Silo > 0 THEN
        IF Q_Silo[Z_Silo[z].QuellSilo].AktMenge <= Q_Silo[Z_Silo[z].QuellSilo].MinMenge 
        OR Z_Silo[z].AktMenge > Z_Silo[z].MaxMenge THEN
            Z_Silo[z].Q_Silo := 0; 
            // Transport Z_Silo[z].Q_Silo ==> z stoppen
        END_IF;    
    ELSIF TransportAktiv THEN
        // keinen neuen Transport starten
    ELSIF ZielSilo[z].AktMenge <= ZielSilo[z].MinMenge THEN
        Z_Silo[z].Q_Silo := -1; 
        FOR q := 1 TO 14 DO // QuellSilos 1 .. 14
            IF Z_Silo[z].Q_Silo < 1
            AND Z_Silo[z].Werkstoff = Q_Silo[q].Werkstoff 
            AND Q_Silo[q].AktMenge > Q_Silo[q].MinMenge THEN
                Z_Silo[z].Q_Silo := q; 
                // Transport Z_Silo[z].Q_Silo ==> z starten
                EXIT;
            END_IF;
        END_FOR;
        IF Z_Silo[z].Q_Silo < 0 THEN
            // Transport nicht möglich
        END_IF;
    END_IF;
END_FOR;
 
Zurück
Oben