Priorität programmieren

alonely01

Level-1
Beiträge
55
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

in unserere Fa. haben wir eine Transportanlage, über die insgesamt 4 Kisten (wenn sie Voll sind) zu einer Entleerstation befördert werden.

Momentan ist´s so, daß die Erste, die voll wird, auch als erste geleert wird.

Nun soll der Ablauf aber wie folgt geändert werden:
Es soll nun an dem vorhandenen Panel der Anlage (WinCC programmiert) Prioritäten zugewiesen werden können.
z.B. Kiste1 (Prio "Niedrig") Kiste2 (Prio "Hoch") Kiste3 (Prio "Mittel) Kiste4 (Prio "Mittel)
Somit soll Kiste2 Vorrang vor allen anderen haben und Kiste3 und Kiste4 auf jeden Fall vor Kiste1 entleert werden.

Hat jemand von euch schon sowas programmiert oder kann mir einen Tipp geben, wie ich dies anfangen bzw. realisieren könnte?!? ;)
Vielleicht auch anhand eines bestehenden FB´s....

Gruß
Robert
 
Zuletzt bearbeitet:
fertige lösungen gibts von kai ... von mir nur den tipp: gib den kisten nen indes "priorität" z.b. als INT ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wie sollen denn die kisten gekennzeichnet werden, um welche priorität es sich handelt?
über das werkstück oder über den werkstückträger?
die lösung mit dem werkstückträger ist auf jeden fall die einfachere
 
wie sollen denn die kisten gekennzeichnet werden, um welche priorität es sich handelt?
über das werkstück oder über den werkstückträger?
die lösung mit dem werkstückträger ist auf jeden fall die einfachere

Die Kisten haben ihre festen Plätze und müssen deshalb nicht gekennzeichnet werden...
..... Kiste1 ist für Rinne1 zuständig usw. .....
 
Die Kisten haben ihre festen Plätze und müssen deshalb nicht gekennzeichnet werden...
..... Kiste1 ist für Rinne1 zuständig usw. .....

dann lag ich mit meinem index gar nicht soweit daneben ... 1 höchste priorität, vier niedrigste und dann als schrittkette alle hinter einander leeren ... haste zwei gleiche prioritäten, werden die beiden gleichzeitig ausgekippt ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
dann lag ich mit meinem index gar nicht soweit daneben ... 1 höchste priorität, vier niedrigste und dann als schrittkette alle hinter einander leeren ... haste zwei gleiche prioritäten, werden die beiden gleichzeitig ausgekippt ...

Wie meinst des mit "Index"... steh irgendwie auf dem Schlauch...
 
Mein Ablauf ist wie folgt:
z.B. Kiste1 ist noch unterwegs, Kiste2 und Kiste 3 sind voll und in Warteposition.
Losfahren können sie erst wenn Kiste1 wieder in Grundposition ist.
Dann soll aber Kiste2 wegen ihrer höheren Priorität vor der Kiste3 losfahren.

Das ist ja dann aber ned so einfach mit "Index" zu machen, oder?
Kannst mir mal a kurzes Prog.Beispiel geben, wie du das meinst???:confused:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier mal ein kurzes Programmbeispiel von mir.

Den Prioritäten für die einzelnen Kisten werden dabei folgende Dezimalwerte zugeordnet:

Priorität HOCH = 1

Priorität MITTEL = 2

Priorität NIEDRIG = 3

Code:
FUNCTION "FC_KISTEN" : VOID
TITLE =Kisten entleeren
//Priorität HOCH    = DEZ 1
//Priorität MITTEL  = DEZ 2
//Priorität NIEDRIG = DEZ 3
//  
AUTHOR : KAI
FAMILY : SPSFORUM
NAME : KISTEN
VERSION : 1.0
BEGIN
NETWORK
TITLE =Kiste 1
      U(    ; 
      L     "KISTE_1_PRIO"; 
      L     "KISTE_2_PRIO"; 
      <=I   ; 
      )     ; 
      U(    ; 
      L     "KISTE_1_PRIO"; 
      L     "KISTE_3_PRIO"; 
      <=I   ; 
      )     ; 
      U(    ; 
      L     "KISTE_1_PRIO"; 
      L     "KISTE_4_PRIO"; 
      <=I   ; 
      )     ; 
      U     "KISTE_1_VOLL"; 
      UN    "KISTE_2_FRG"; 
      UN    "KISTE_3_FRG"; 
      UN    "KISTE_4_FRG"; 
      S     "KISTE_1_FRG"; 
      U     "KISTE_1_LEER"; 
      R     "KISTE_1_FRG"; 
      U     "KISTE_1_FRG"; 
      =     "KISTE_1_ENTL"; 
NETWORK
TITLE =Kiste 2
      U(    ; 
      L     "KISTE_2_PRIO"; 
      L     "KISTE_1_PRIO"; 
      <=I   ; 
      )     ; 
      U(    ; 
      L     "KISTE_2_PRIO"; 
      L     "KISTE_3_PRIO"; 
      <=I   ; 
      )     ; 
      U(    ; 
      L     "KISTE_2_PRIO"; 
      L     "KISTE_4_PRIO"; 
      <=I   ; 
      )     ; 
      U     "KISTE_2_VOLL"; 
      UN    "KISTE_1_FRG"; 
      UN    "KISTE_3_FRG"; 
      UN    "KISTE_4_FRG"; 
      S     "KISTE_2_FRG"; 
      U     "KISTE_2_LEER"; 
      R     "KISTE_2_FRG"; 
      U     "KISTE_2_FRG"; 
      =     "KISTE_2_ENTL"; 
NETWORK
TITLE =Kiste 3
      U(    ; 
      L     "KISTE_3_PRIO"; 
      L     "KISTE_1_PRIO"; 
      <=I   ; 
      )     ; 
      U(    ; 
      L     "KISTE_3_PRIO"; 
      L     "KISTE_2_PRIO"; 
      <=I   ; 
      )     ; 
      U(    ; 
      L     "KISTE_3_PRIO"; 
      L     "KISTE_4_PRIO"; 
      <=I   ; 
      )     ; 
      U     "KISTE_3_VOLL"; 
      UN    "KISTE_1_FRG"; 
      UN    "KISTE_2_FRG"; 
      UN    "KISTE_4_FRG"; 
      S     "KISTE_3_FRG"; 
      U     "KISTE_3_LEER"; 
      R     "KISTE_3_FRG"; 
      U     "KISTE_3_FRG"; 
      =     "KISTE_3_ENTL"; 
NETWORK
TITLE =Kiste 3
      U(    ; 
      L     "KISTE_4_PRIO"; 
      L     "KISTE_1_PRIO"; 
      <=I   ; 
      )     ; 
      U(    ; 
      L     "KISTE_4_PRIO"; 
      L     "KISTE_2_PRIO"; 
      <=I   ; 
      )     ; 
      U(    ; 
      L     "KISTE_4_PRIO"; 
      L     "KISTE_3_PRIO"; 
      <=I   ; 
      )     ; 
      U     "KISTE_4_VOLL"; 
      UN    "KISTE_1_FRG"; 
      UN    "KISTE_2_FRG"; 
      UN    "KISTE_3_FRG"; 
      S     "KISTE_4_FRG"; 
      U     "KISTE_4_LEER"; 
      R     "KISTE_4_FRG"; 
      U     "KISTE_4_FRG"; 
      =     "KISTE_4_ENTL"; 
END_FUNCTION

Gruß Kai
 

Anhänge

  • FC100.pdf
    9,5 KB · Aufrufe: 41
Hier mal ein kurzes Programmbeispiel von mir.

Den Prioritäten für die einzelnen Kisten werden dabei folgende Dezimalwerte zugeordnet:

Priorität HOCH = 1

Priorität MITTEL = 2

Priorität NIEDRIG = 3

Code:
FUNCTION "FC_KISTEN" : VOID
TITLE =Kisten entleeren
//Priorität HOCH    = DEZ 1
//Priorität MITTEL  = DEZ 2
//Priorität NIEDRIG = DEZ 3
//  
AUTHOR : KAI
FAMILY : SPSFORUM
NAME : KISTEN
VERSION : 1.0
BEGIN
NETWORK
TITLE =Kiste 1
      U(    ; 
      L     "KISTE_1_PRIO"; 
      L     "KISTE_2_PRIO"; 
      <=I   ; 
      )     ; 
      U(    ; 
      L     "KISTE_1_PRIO"; 
      L     "KISTE_3_PRIO"; 
      <=I   ; 
      )     ; 
      U(    ; 
      L     "KISTE_1_PRIO"; 
      L     "KISTE_4_PRIO"; 
      <=I   ; 
      )     ; 
      U     "KISTE_1_VOLL"; 
      UN    "KISTE_2_FRG"; 
      UN    "KISTE_3_FRG"; 
      UN    "KISTE_4_FRG"; 
      S     "KISTE_1_FRG"; 
      U     "KISTE_1_LEER"; 
      R     "KISTE_1_FRG"; 
      U     "KISTE_1_FRG"; 
      =     "KISTE_1_ENTL"; 
.
.
.

Gruß Kai

Sobald aber z.B. die Kiste1 eine niedrige Prio hat (Wert 3) als die Kiste2 entleert er die Kiste1 ja gar nicht mehr, da der 1.Vergleicher nie erfüllt ist. :???:

Es müßte also immer diese Vollmeldung irgendwie mitverknüpft werden.
Sobald nur eine Voll ist ist es sowieso egal, es ist ja immer für den Fall, dass 2-4 Kisten gleichzeitig voll sind und auf die Freigabe warten.
 
Zurück
Oben