logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

S7-1200 - Różnice między FC a FB w Step7, brak widocznego data blocka FB

kornik280 03 Lip 2013 13:11 4725 4
  • #1 12482405
    kornik280
    Poziom 18  
    Posty: 466
    Pomógł: 36
    Ocena: 14
    Czym różni się FC od FB?
    Wyczytałem że FB jest jak FC tylko, że FB ma data block.
    Stworzyłem sobie w step7 FC oraz FB i nie widze nigdzie tego data block powiązanego z FB.
    Widze zakładke interface ale ona jest taka sam dla FC i FB
  • #2 12482572
    kishon
    Poziom 14  
    Posty: 114
    Pomógł: 8
    Ocena: 4
    według podręcznika Simatic S7-1200
    ''...FC nie jest skojarzony z żadnym blokiem danych insatce (DB). Dla danych tymczasowych występujących podczas przeprowadzania obliczeń, FC wykorzystuje lokalny blok danych. Dane tymczasowe nie są zapamiętywane. W celu zapamiętania danych należy przypisać wartości wyjściowej miejsce w pamięci, np w pamięci M lub w globalnym DB."

    czyli co za tym idzie: w innej części programu w przypadku FB możesz się odwołać do zmiennej: nazwa_bloku_FB.nazwa_zmiennej, natomiast przy bloku FC musisz tą zmienną zdefiniować jako OUT bądź IN_OUT i podpiąć pod to jakąś zmienną
  • #3 12482628
    jestam
    Specjalista Automatyk
    Posty: 1799
    Pomógł: 210
    Ocena: 145
    Funkcja (u Siemensa FC) działa tylko na podstawie swoich argumentów wejściowych i wylicza argumenty wyjściowe. Nie przechowuje informacji (tzw. "stanu") pomiędzy wywołaniami w kolejnych cyklach. Ta sama funkcja może być użyta w wielu miejscach w programie jeśli jest taka potrzeba. Przykład: "Policz średnią z trzech liczb".

    Blok funkcyjny (u Siemensa FB) przechowuje "stan" między kolejnymi cyklami sterownika. Można użyć tego samego bloku funkcyjnego w wielu miejscach w programie, ale każde musi mieć własne, osobne przypisanie miejsca do przechowywania stanu (u Siemensa to blok DB skojarzony z danym wystąpieniem - instancją - bloku funkcyjnego). Przykład: "jeśli arg. 1 jest 1 a w poprzednim cyklu był 0 (wykrycie zbocza) to dodaj 5 do argumentu 2 i zwróć wynik, w przeciwnym wypadku zwróć wartość arg. 2."

    Niektóre sterowniki nie obsługują bloków funkcyjnych, wtedy można się ratować robiąc jak pisze kolega wyżej: dodać do funkcji parametry, do których w każdym jej wywołaniu będą przypisane inne zmienne/rejestry/flagi, które pozwolą na przechowywanie informacji między cyklami. Nie polecam.
  • #4 12485517
    kornik280
    Poziom 18  
    Posty: 466
    Pomógł: 36
    Ocena: 14
    1.Czy poprawne jest używanie funkcji i niezależnego bloku danych do którego zapisuje wyniki operacji ,odczyty z czujników itp.?
    2. Czym takie rozwiązanie się różni od bloku FB?
  • #5 12486108
    Rariusz
    Specjalista Automatyk
    Posty: 1775
    Pomógł: 268
    Ocena: 128
    Witam,

    kornik280 napisał:
    1.Czy poprawne jest używanie funkcji i niezależnego bloku danych do którego zapisuje wyniki operacji ,odczyty z czujników itp.?


    Poprawne choć mało eleganckie rozwiązanie. Jeżeli należy zapisywać wyniki operacji
    itp. lepiej skorzystać z FB. Nie ma sensu kombinować.

    kornik280 napisał:
    2. Czym takie rozwiązanie się różni od bloku FB?

    Tym że dojdą dodatkowe instrukcje i dodatkowe zmienne pomocnicze.
    Blok danych nie będzie ściśle powiązany z danym blokiem ( funkcją).

    Podsumowując, jeżeli zależy nam na przechowywaniu danych po wykonaniu operacji należy skorzystać z FB, tak jak to zostało już powiedziane.

    jestam napisał:
    Blok funkcyjny (u Siemensa FB) przechowuje "stan" między kolejnymi cyklami sterownika.


    Pozdrawiam,
REKLAMA