Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

"Hinten Anstellen"

Wild Willi
2006-03-03
2006-03-04
  • Wild Willi - 2006-03-03

    hab da ein Problem:

    zu einer Bestimmten Zeit wird ein Rezept bearbeitet da die Bearbeitungsdauer sehr unterschiedlich sein kann passiert es hin und wieder das schon 2 neue Aufträge Anstehen bei einem ist das kein Problem ( solange Rezept Aktiv kein neues Starten )

    Wie Vergebe ich da eine Reihenfolge ( Rezept 4 kamm als erstes dann Rezept 2 also muß 4 zuerst bearbeitet werden )

    Bitte um Lösungen

     
  • Oberchefe - 2006-03-04

    Das geht normalerweise mit einem FIFO, also beispielsweise ein Array, in das die einzelnen Requests der Reihe nach reingeschriben werden. Nach Bearbeitung eines Requests wird dieses aus dem FIFO rausgeschmissen. Der Code könnte für eine handvoll Rezepte so ähnlich aussehen(Achtung: nicht getestet):

    IF EinRezeptBearbeitet THEN
       FOR i:= 0 TO 8 BY 1 DO
       Fifo[i]:= Fifo[i+1];
       END_FOR
       EinRezeptBearbeitet:= FALSE;
       IF ersteFreieStelle > 1 THEN
       ersteFreieStelle:=ersteFreieStelle-1;
       END_IF
    END_IF
    IF NeuesRezept<>0 THEN
    Fifo[ersteFreieStelle]:=NeuesRezept;
    ersteFreieStelle:=ersteFreieStelle +1 ;
    NeuesRezept:=0;
    END_IF
    
     

Log in to post a comment.