-
Data: 2014-06-02 00:18:08
Temat: Re: stara pamięć nie rdzewieje
Od: Piotrne <p...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]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że ta drabinkowa koncepcja nadaje się do sterowania światłem
na korytarzu, ale pisanie takiego kodu jest bardzo męczące.
P.
Następne wpisy z tego wątku
- 02.06.14 00:47 Mario
- 02.06.14 00:55 AlexY
- 02.06.14 01:38 Mario
- 02.06.14 13:21 Piotrne
- 02.06.14 14:27 sundayman
- 02.06.14 19:49 Irokez
- 02.06.14 20:35 Mario
- 03.06.14 01:41 Piotrne
- 03.06.14 15:37 Mario
- 03.06.14 16:22 Tomasz Wójtowicz
Najnowsze wątki z tej grupy
- Czy cos fi przechodzi przez trafo separujące?
- śrubka masy
- Ciekawostka na dziś lock bity
- [OT] napisy w YT
- Było 83V
- Stare komputery
- Odbiornik ADS-B i wzmacniacze
- Thunderbird i dysk...
- opornosc falowa
- Bateria 9V 6F22, alkaliczna v cynkowa, samorozładowanie, bateria wysokiej trwałości do miernika
- Tani zakup z ali?
- w czasach LED komary mają ciężko
- walizka z kodami
- Rejestrator temperatur - termopara, siec
- Router LTE z możliwością zmian MTU
Najnowsze wątki
- 2025-08-06 Gdynia => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-08-06 Białystok => Inżynier oprogramowania .Net <=
- 2025-08-06 "[...] sejmowe wystąpienie posłanki Klaudii Jachiry, która zakończyła je słowami ,,Sława Ukrainie"."
- 2025-08-05 "Chiny przekraczają w wydobyciu 4 mld ton węgla, Indie i USA ponad 1 mld, a Rosja 500 mln ton [...]"
- 2025-08-05 Panuje się 181 159,42 zł./mies. na posła w 2026r.
- 2025-08-05 "Chiny przekraczają w wydobyciu 4 mld ton węgla, Indie i USA ponad 1 mld, a Rosja 500 mln ton [...]"
- 2025-08-05 Czy cos fi przechodzi przez trafo separujące?
- 2025-08-05 kajaki i promile
- 2025-08-05 Re: Tesla jest bezpieczna, wczoraj spaliła się doszczętnie na Ursynowie i nikomu się nic nie stało
- 2025-08-05 Gdynia => Przedstawiciel handlowy / KAM (branża TSL) <=
- 2025-08-05 Re: Atak na lekarza w Oławie. Policja zatrzymała sprawcę na lotnisku Polska Agencja Prasowa 4 sierpnia 2025, 12:16 FACEBOOK X E-MAIL KOPIUJ LINK W szpitalu w Oławie 37-letni pacjent zaatakował lekarza, po tym, jak ten odmówił mu wypisania długoterminowego
- 2025-08-05 B2B i książka przychodów i rozchodów
- 2025-08-04 Re: Atak na lekarza w Oławie. Policja zatrzymała sprawcę na lotnisku Polska Agencja Prasowa 4 sierpnia 2025, 12:16 FACEBOOK X E-MAIL KOPIUJ LINK W szpitalu w Oławie 37-letni pacjent zaatakował lekarza, po tym, jak ten odmówił mu wypisania długoterminowego
- 2025-08-04 Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- 2025-08-04 Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML