Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Grafcet realizacja funkcji logicznych and, or, not, nor i nand

17 Wrz 2014 22:38 3147 4
  • Poziom 10  
    Szukam informacji jak zrealizować funkcje logiczne nand, nor, not, or, nand w języku Grafcet/SFC. Nie używałem wcześniej tego języka.
    Czy można te funkcje zrealizować za pomocą czystego SFC czy trzeba użyć innego języka np. LD czy ST?

    Znalazłem jedynie informację, jak zrealizować and i or
    Grafcet realizacja funkcji logicznych and, or, not, nor i nand
    Niestety na najbardziej interesujące i przydatne publikacje: IEC 61131 i PN-EN 61131-3 muszę poczekać do następnego miesiąca.
  • Pomocny post
    Specjalista Automatyk
    Witam,

    O ile dobrze pamiętam za pomocą bramek AND oraz OR można
    opisać każda inną bramkę. Więc kombinacja tych dwóch bramek
    powinna wystarczyć do rozpisania pozostałych w SFC. Z SFC
    miałem mało odczynienia więc proszę traktować moją radę z dystansem ;)

    Pozdrawiam,
  • Poziom 10  
    Owszem, ale potrzebny do tego jest jeszcze not którego nie wiem jak wykonać.
  • Pomocny post
    Specjalista Automatyk
    Witam,

    Można warunek przejścia między stanami zrobić na FALSE.
    A dokładnie w programie zrobić coś takiego:
    I1 A
    ---|\|-----()

    gdzie A jest warunkiem przejścia. Raczej ciężko będzie zrobić NOT
    w czystym SFC. Łatwiej ST gdzie wystarczą proste polecenia if.
    Każdy jeżyk jest do innego zastosowania. jeden problem łatwiej
    rozwiązać w ST a inny w SFC. Wszystko zależy od problemu.

    Pozdrawiam,
  • Pomocny post
    Specjalista Automatyk
    Krótka odpowiedź na pytanie w temacie wątku: nie da się w normalny sposób.

    Diagram sekwencji opisuje sekwencję kroków przedzielonych tranzycjami, tranzycje reprezentują wartości logiczne (nazwy pojedynczych zmiennych albo funkcje pisane w jakimś innym języku, który ma operacje logiczne).

    Diagram sekwencji nie służy do realizacji funkcji logicznych. W diagramie sekwencji można zbudować np. instrukcję if-then-else, albo pętlę. Przy czym same warunki trzeba wyrazić w innym języku.

    To że ktoś napisał "OR divergences" czy "AND convergences" w jakimś dokumencie niewiele znaczy. Miał fantazję, to napisał.

    Kolejna sprawa, Grafcet to nie do końca to samo co SFC z normy IEC61131-3. A różne implementacje w różnych sterownikach wnoszą dodatkowe zamieszanie.

    W szczególności obrazek w lewym górnym rogu, wg normy, to:
    Cytat:

    Code:

    |
    +----+
    | S5 |
    +----+
    |
    +------*----+--...
    |      |
    + e    + f
    |      |
    +----+ +----+
    | S6 | | S8 |
    +----+ +----+
    |      |

    Divergence of sequence selection: A selection between several sequences is
    represented by as many transition symbols, under the horizontal line, as there are different possible evolutions. The asterisk denotes left-to-right priority of transition evaluations.


    Czyli jeśli a = prawda, b jest prawda lub fałsz, to SFC przejdzie z 1 do 2, jeśli a = fałsz i b = prawda, SFC przejdzie z 1 do 3, jeśli a = fałsz i b = fałsz, to pozostanie w kroku 1.
    Wg opisu na obrazku, gdy a = prawda i b = prawda, to język aktywuje obydwa kroki: 2 i 3. To nie jest SFC.

    Z drugiej strony, w informatyce da się wszystko, bo wszystko jest kwestią umowy.
    Jeśli się umówimy, że wyjściem "bramki w SFC" jest przejście do wskazanego stanu, to coś takiego
    Code:

    +----+
    | S5 |
    +----+
    |
    +------*----+--...
    |      |
    + e    + f
    |      |
    +------+----+--..
    |
    +----+
    | S6 |
    +----+
    |     

    można by nazwać "bramką OR" (S6 jest aktywowany gdy e = prawda OR f = prawda), a coś takiego

    Code:

    |
    +<-----------+
    |            |
    +----+       |
    | S5 |       |
    +----+       |
    |            |
    +------+     |
    |      |     |
    + e    +     |
    |      |     |
    +_____ | ____/
           |
     ______/
    /       
    +----+
    | S6 |
    +----+
    |     

    bramką NOT: jeśli e = prawda, to stan S5 jest ponownie aktywowany, jeśli e = fałsz, to druga gałąź (bez warunku na tranzycji) aktywuje S6.

    Tylko czy takie coś ma sens?