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

Siemens S7-1200 - HSC i enkoder

elektronikq 13 Lis 2018 18:56 5217 37
  • #31
    elektronikq
    Poziom 24  
    W skrócie np.: I0.0 pokazuje stan wejścia, które zostało zapisane w tzw. process image, czyli odświeżane jest tylko przed wywołaniem OB1. Natomiast I0.0 : P, powoduje odczyt bezpośrednio ze sprzętu i pokazuje stan wejścia w momencie jego odczytania (niezależnie od OB1).
    Można sobie wyobrazić sytuację, w której przed rozpoczęciem OB1, wejście I0.0 ma "zapamiętaną" w tablicy procesu wartość 1, a w połowie OB1, pobrane ze sprzętu I0.0 : P ma wartość 0, przy czym pod koniec OB1 I0.0 ma ciągle wartość 1.


    Mamy program 10 linijek, gdzie 1 linijka i 9 linijka mamy użyte I0.0. Przykład na 2 cyklach. W 1 kończącym się cyklu OB1 I0.0 jest "1". Zaczyna się 2 cykl OB1 i I0.0 już przez cały cykl jest "1" chociażby nawet w 2 linijce kodu I0.0 zmienił się na "0" to przez cały 2 cykl I0.0 to "1" i 9 linijka jest potraktowana jako "1". Natomiast jakbyśmy w 9 linijce użyli I0.0 :P i sygnał zmieni się na "0" np. w 5 linijce to chociaż w I0.0 na początku mieliśmy "1" to w 9 linijce wejście I0.0: P zostanie potraktowane jako "0".

    I najważniejsze dla mnie. Program jest wykonywany od 1 linijki kodu do n linijek kodu? Czyli użycie wejść jeśli mamy I0.0: P w 1 i 9 linijce kodu to:
    jeśli podczas odczytu 1 linijki I0.0: P miało "1" a w 2 linijce kodu się sygnał zmieni na "0" i 9 linijka już I0.0: P będzie miało "0" ale to "0" nie ma wpływu już na I0.0: P w 1 linijce. Tam było wcześniej "1" i program był już odczytany przed zmianą na "0".

    Reasumując dzięki tej funkcji można zmienić stan wejścia 0->1, 1->0 kilka razy w ciągu cyklu?

    Przerwania mają tę zaletę, że wykonują się zdefiniowanym cyklu, natomiast OB1 trwa tyle, ile potrzeba na wykonanie zawartego w nim kodu.
    To też, już podkreślałem, jeśli czas OB1 jest krótszy niż częstotliwość wywołania przerwania, to dostęp I0.0 będzie miał bardzo zbliżony wynik do I0.0 : P.
    Przy pomiarze w OB1, dobrze jest uwzględnić czas między kolejnymi wystąpieniami badanego sygnału (np. policzyć różnicę czasów pobranych z zegara systemowego). Wpływa to korzystnie na dokładność obliczeń.

    Pomiar OB1? Czyli cyklu to tia portal pokazuje na takim diagramie. Czy trzeba to dokładniej używać. Komenda runtime?
    Czyli jak OB1 jest bardzo mały program to można sobie odpuścić przerwania?
    Np. jeśli OB1 wykonuje się ok 1ms i przerwanie jest co 1ms?
    Natomiast dzisiaj miałem przypadek że cykl trwał 10ms a przerwanie było kilka instrukcji logicznych czas był w mikrosekundach.
  • SterControlSterControl
  • #32
    marko30
    Poziom 12  
    Witam ,
    od tygodnia walczę z pomiarem prędkości w m/min . z dokładnością do 0.02 m/min. Pomiar dokonuje enkoderem inkrementalnym 2000 imp. na obrót wyposażonym w kółko pomiarowe o obw. 200 mm. Enkoder podłączony jest do sterownika siemens s7-1215c. Pomiar jest poprzez HSC który jest ustawiony na pomiar częstotliwości okresem próbkowania co 10 ms. impulsy z enkodera odczytuje w w przerwaniach co 15 ms i przeliczam impulsy na m/min.Niestety nie mogę uzyskać zadowalającej dokładności .Pomiar zmienia się nawet o około 0.4 m/s.
    w programie zastosowałem filtr programowy FIR następnie zapisuje 10 wyników i sortuje z 3 środkowych liczę średnią . Niestety wyniki nadal pływają... Układa działa w środowisku przemysłowym. Oczywiście przewód z enkodera ekranowany a ekran podłączony do PE.
    Za wszelkie sugestie i informację będę wdzięczny.

    Edit :
    Do układu pomiarowego podłączyłem zamiast enkodera generator impulsów. Wskazania są stabilne z rozdzielczością do 1Hz.
    Wygląda ze problem jest z układem napędowym. Napęd to zasilane przez falownik silnik 3 fazowy który napędza poprzez przekładnie i łańcuch napędza walec odbiorczy którego prędkość badam.
  • SterControlSterControl
  • #33
    elektronikq
    Poziom 24  
    Ok ale co obraca ten enkoder?
  • #34
    marko30
    Poziom 12  
    Enkoder w raz z kółkiem pomiarowym obracany jest przez Walec którego prędkość badam .
  • #35
    elektronikq
    Poziom 24  
    Obróć enkoderem sam ręką 1 dokładny obrót i zobacz czy układ zliczył Ci 2000impulsów.
    Używasz HSC?
  • #37
    elektronikq
    Poziom 24  
    A jak obrócisz ręką walec o jeden obrót to masz 2000 impulsów?
  • #38
    Rariusz
    Specjalista Automatyk
    Witam,

    Cytat:
    Pomiar jest poprzez HSC który jest ustawiony na pomiar częstotliwości okresem próbkowania co 10 ms. impulsy z enkodera odczytuje w w przerwaniach co 15 ms i przeliczam impulsy na m/min


    HSC próbkuje sygnał co 10ms a Ty co 15 ms zliczas impulsy. Jak masz
    pomiar częstotliwości to czemu robisz jeszcze zliczanie ? Czemu nie zamienisz
    HZ na rpm?

    Miałem podobny problem ale u mnie to był transporter około 40m. Robiłem
    uśrednianie sygnału. Spróbuj, powinno pomóc. Tzn. średnią ruchomą ale
    z większej ilosci niż 3 próbki.

    Pozdrawiam