Keresés

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

  • Szirty

    őstag

    válasz skul0 #4131 üzenetére

    Helló skul0!

    Nagyon úgy néz ki ez, mint egy olyan gyakorló feladat, aminek a megoldásához FIFO buffert kellene építeni. Ezt abból gondolom, hogy előírta a MOV használatát.

    Én úgy csinálnám, hogy kijelölnék egy 3 elemű tártelütetet a buffer számára. Pl. D0-D2.
    D0 lenne a FIFO teteje (bemenete) és D2 az alja (kimenete).

    A FIFO úgy működne, hogy ha a D1 tartalma nulla, akkor beleírnám a D0 tartalmát és a D0-t törölném (0).
    Utána ha a D2 tartalma nulla, akkor beleírnám a D1-et és a D1-et törölném. EZzel kész is a 3 elemű buffer.

    Amikor egy tartály kiürül, a tartály számát bedobnám a FIFO tetejére (beírnám a D0-ba). Amennyiben a buffer üres, a fenti MOVE-ok (melyek minden PLC ciklusban lefutnak) a felül beírt érték leesne az aljára. Ha nem üres, akkor a benne lévő tetejére.
    Így már nincs más dolgunk, mint a FIFO aljáról kiolvasni az értéket. Ha ott 1 van, akkor az 1-es tartályt töltjük, ha 2 van akkor a 2-est, ha 3 van, akkor a 3-ast.
    Érdemes minden tartályhoz egy-egy RS tárolót (KEEP) használni, amit az adot ttartály leürülése bekapcsol, a megftelés pedig kikapcsol és a FIFO tetejére akkor bedobni a tartály számát, amikor ez az RS tároló bekapcsolt.

    Így elkerülhető, hogy a folyadék lötyögése esetén többször is beíródjon a FIFO-ba ugyanannak a tartálynak a száma.

    [ Szerkesztve ]

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