eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikastara pamięć nie rdzewiejeRe: stara pamięć nie rdzewieje
  • Data: 2014-06-02 00:47:26
    Temat: Re: stara pamięć nie rdzewieje
    Od: Mario <m...@...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu 2014-06-02 00:18, Piotrne pisze:
    > W dniu 2014-05-31 16:00, Sebastian Biały pisze:
    >> najprostszy przykład to nie dawno koleś który w logice
    >> drabinkowej wydziargał w miesiąc układ (skomplikowany)
    >> który na oko w dowolnym imperatywnym języku programowania
    >> zajął by może z 2 godzinki z unit testami. Dlaczego więc
    >> dziargał? "Bo logika drabinowa jest najprostsza!".
    >
    > Pisałem w ubiegłym roku "drabinkowy" program na sterownik
    > Kinco K3. Zadanie było proste: wykonać w określonej kolejności
    > kilka ruchów silnikiem krokowym z ustalonymi parametrami
    > (prędkość, odległość). Parametry ustawiane na module HMI
    > z ekranem dotykowym. Sekwencja ruchów silnika bardzo prosta:
    > szukanie położenia końcowego (z czujnikiem krańcowym),
    > przejazd o wartość D1, pauza, N przejazdów o wartość D2, powrót.
    > Pisanie (poprzedzone studiowaniem języka drabinkowego)
    > zajęło trochę czasu, a powstały program w zasadzie był
    > emulatorem interpretera języka sekwencyjnego...
    >
    > Czyli zamiast napisać:
    >
    > 1) włącz silnik aż do znalezienia położenia krańcowego
    > 2) włącz D1 impulsów silnika
    > 3) for i:=1 to n { włącz D2 impulsów silnika }
    > 4) wróć do położenia krańcowego
    > 5) idź do 1
    >
    > napisałem (w uproszczeniu!) mniej więcej coś takiego:
    >
    > 1) jeśli (pierwszy_cykl == TRUE) to { nr_stanu = 1 }
    >
    > 2) jeśli (nr_stanu == 1 lub nr_stanu == 4) to włącz
    > szukanie położenia krańcowego
    >
    > 3) jeśli (nr_stanu == 1 oraz znaleziono_stan_krańcowy)
    > to { nr_stanu = 2 }
    >
    > 4) jeśli (nr_stanu == 4 oraz znaleziono_stan_krańcowy)
    > to { nr_stanu = 5 }
    >
    > 5) jeśli (nr_stanu == 2) to włącz D1 impulsów silnika
    >
    > 6) jeśli (nr_stanu == 2 ORAZ wykryto_koniec_ruchu_silnika)
    > to { nr_stanu = 3; licznik = n }
    >
    > 7) jeśli (nr_stanu == 3) to flaga1 = (licznik>0)
    >
    > 8) jeśli (nr_stanu == 3 ORAZ flaga1 == TRUE )
    > to włącz D2 impulsów silnika
    >
    > 9) jeśli (nr_stanu == 3 ORAZ flaga1 == FALSE )
    > to { nr_stanu = 4 }
    >
    > 10) jeśli (nr_stanu == 3 ORAZ wykryto_koniec_ruchu_silnika}
    > to { nr_stanu = 3a }
    >
    > 11) jeśli (nr_stanu == 3a) to { zmniejsz licznik o 1 }
    >
    > 12) jeśli (nr_stanu == 3a) to { nr_stanu = 3 }
    >
    > 13) jeśli (nr_stanu == 4 ORAZ znaleziono_stan_krańcowy)
    > to { nr_stanu = 1 }
    >
    > To oczywiście takie proste nie było, bo trzeba jeszcze czytać
    > parametry z HMI i przenosić do "modułu" obsługującego silnik.
    > A moduł mógł wystąpić tylko jeden raz w całym programie
    > drabinkowym. Czyli zależnie od numeru_stanu trzeba było
    > kopiować do niego różne parametry, a potem badać sumę logiczną
    > wszystkich warunków, przy których silnik powinien się włączyć
    > i takim sygnałem do aktywować.

    Możesz to ominąć stosując cewki -(S)- i -(R)-
    W dodatku nie rozumiem po co po kroku 4 wprowadzasz krok 5 będący
    przejściem na kroku 1 - szukania pozycji krańcowej skoro w kroku 4
    dojechał do pozycji krańcowej.

    > Może ta drabinkowa koncepcja nadaje się do sterowania światłem
    > na korytarzu, ale pisanie takiego kodu jest bardzo męczące.

    Męczące dla kogoś przyzwyczajonego do C czy Pascala.
    Duża część poważnej przemysłowej automatyki jest na drabince, co by
    znaczyło, że ci co to robią uważają LD za wygodne narzędzie.


    --
    pozdrawiam
    MD

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: