eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikastara pamięć nie rdzewiejeRe: stara pamięć nie rdzewieje
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
    .pl!news.nask.org.pl!news.internetia.pl!not-for-mail
    From: Mario <m...@...pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: stara pamięć nie rdzewieje
    Date: Mon, 02 Jun 2014 00:47:26 +0200
    Organization: Netia S.A.
    Lines: 87
    Message-ID: <lmgbht$h1c$1@mx1.internetia.pl>
    References: <5389d4ca$0$2224$65785112@news.neostrada.pl>
    <lmclhp$kft$1@node2.news.atman.pl> <lmcmas$nn1$1@node1.news.atman.pl>
    <5389deb2$0$2231$65785112@news.neostrada.pl>
    <lmcnal$ope$1@node1.news.atman.pl> <lmg8r9$gml$1@node1.news.atman.pl>
    NNTP-Posting-Host: 77-254-96-19.adsl.inetia.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: mx1.internetia.pl 1401663869 17452 77.254.96.19 (1 Jun 2014 23:04:29 GMT)
    X-Complaints-To: a...@i...pl
    NNTP-Posting-Date: Sun, 1 Jun 2014 23:04:29 +0000 (UTC)
    In-Reply-To: <lmg8r9$gml$1@node1.news.atman.pl>
    X-Tech-Contact: u...@i...pl
    User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007
    X-Server-Info: http://www.internetia.pl/
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:665898
    [ ukryj 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: