Hirdetés

Új hozzászólás Aktív témák

  • Szirty

    őstag

    válasz Tomika86 #7912 üzenetére

    Szia!

    Ne haragudj, elsiklottam a linked fölött. Pont olyan rajzot követeltem amit már megcsináltál! :)

    "FIFO, erről olvasgattam de úgy konkrétan nem értem hogy működik."

    Nem bonyolult és ilyen feladatra elég hatékony. Leírni sajnos kacifántosabb mint megcsinálni.
    Képzelj el egy olyan tárolót (puffert) amiben több üveg tulajdonságait tudod tárolni (amilyen tulajdonságokat a tárcsán is nyilvántartasz).
    A tárolónak van egy bemenete meg egy kimenete.
    A bemenetére beírod az üveg adatait amikor elhagyja a tárcsát (az ábrádon "jelenleg" szöveggel jelölt pozíció) mivel a tárcsán követed a pozíciók (üveg) állapotát, ez nyilván nem probléma.
    A bemenetre írt adat a tárolóban "leesik" az aljára (pl. másolással az utolsó szabad címre) A legutolsó cím az amit majd a kimenetre küldesz kiolvasáskor).
    Amikor a "kilökő dugattyú" pozíciójába üveg érkezik (egy szenzorral triggereled) akkor kiolvasod ebből a tárolóból annak legalján (utolsó címén) lévő termék adatot és törlöd az utolsó címen lévő adatot, minek következtében a benne lévő többi adatot is egyel lejjebb lépteted.
    A kiolvasott adat fogja megmondani a dugattyúhoz érkező üveg tulajdonságait, ki kell lökni vagy nem.
    Lényeges dolog, hogy a tároló (mérete) legalább annyi elemű legyen amennyi üveg maximum elfér a tárcsa és a kilökő között. lehet 1-2 elem ráhagyással számolni esetleg.

    A hibakezeléssel kapcsolatban 3 dolgot kell figyelembe venni. Ha a puffer megtelik és a tárcsa felől újabb trigger jön.
    vagy ha a tároló üres, de a kilökő felől mégis újabb trigger jön.
    Illetve érdemes egy tároló teljes ürítés funkciót végrehajtani ha a szállító szalag minimum annyi ideig üzemel amennyi idő kell az üvegnek a tárcsa és a kilökő közötti út megtételéhez és a szalag üzemel. Ezt az időt érdemes legalább kétszeres ráhagyással meghatározni.

    Természetesen az adatok pufferben történő másolgatása helyett alkalmazható a mutatók mozgatása is (hol a teteje és hol a vége). Kinek melyiket az egyszerűbb programozni.

    Én így oldanám meg...

Új hozzászólás Aktív témák