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.

Co to znaczy, żeby nie definiować licznika globalnie?

10 Lip 2019 18:31 228 9
  • Poziom 12  
    Cześć
    Jeżeli nie globalnie to lokalnie? :D Zawsze robiłem tak, że po prostu wrzucałem licznik do programu (LAD), tworzyła mi się automatycznie instancja DB i już. Czy to było definiowanie globalne? Chyba tak. Lokalne no to w interfejsie FC, FB czy OB1 poprzez temp i const, ale nie rozumiem jak w ten sposób zrobić licznik czy timer ;/
    Dacie radę mi to wyjaśnić tak na chłopski rozum?
  • Specjalista Automatyk
    Witam,

    Tak samo jak globalnie. W S7 1200/1500 wstawiasz blok licznika w
    static wstawiesz strukturę do obsługi licznika lub wybie.rasz
    multiinstance

    Pozdrawiam,
  • Poziom 12  
    Ale muszę dodawać instancję DB?
  • Specjalista Automatyk
    Witam

    No tak z tym że to będzie instancja np. icznika w FB w static. Potem
    wywłanie FB wraz z DB. Będziesz miał tak jakby DB w DB.

    Pozdrawiam,
  • Poziom 12  
    Nic z tego nie rozumiem. Przecież gdy dodaję CTU do jakiegoś FB to i tak tworzy mi się instancja DB w System blocks. Co mi to da, że zrobię zmienne w static skoro te zmienne są i tak będą w instancji?
  • Poziom 1  
    Jeśli przy wywołanie np f5 - > CDU - > klik w multiinstance to doda ci zmienna static CDU w DB bloku który tworzysz
  • Specjalista Automatyk
    Dzonzi napisał:
    Nic z tego nie rozumiem. Przecież gdy dodaję CTU do jakiegoś FB to i tak tworzy mi się instancja DB w System blocks. Co mi to da, że zrobię zmienne w static skoro te zmienne są i tak będą w instancji?


    Ale nie w system blocks.

    Pozdrawiam

  • Specjalista Automatyk
    Różnica jest taka, że przy wywołaniu z obszaru Static, będziesz miał obiekty "skondensowane" do jednego DB.
    Dodatkowo, chyba od V14 i nowych firmware, można w ten sposób zadeklarować tablicę obiektów, więc np.: 100 identycznych można obsłużyć w pętli.
    Z kolei dla niektórych wywołań, np.: bloku PID, wywołanie globalne ma tę zaletę, że można wykorzystać narzędzia do strojenia i konfiguracji.

    Wszystko zależy też od rodzaju i skomplikowania programu. Wyobraź sobie, że tworzysz FB, w którym masz 3 liczniki, a potem to FB chcesz wywołać dwa razy.
  • Poziom 12  
    A czy pierwszy FB wywoływany w Main musi mieć DB globalny? Jeżeli wywołuję FB w FB to jest opcja multiinstancji, ale jeżeli wywołuję pierwszy FB w Main no to tej opcji nie ma. W takim przypadku DB do tego FB musi być globalny i widziany z tego drzewko bloków w projekcie?

  • Specjalista Automatyk
    OB to taki swego rodzaju FC, więc nie posiada własnego obszaru danych statycznych. Pierwsze, nadrzędne wywołanie FB musi mieć dowiązaną bazę DB.