-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!.POSTED!not-for-mail
From: Piotrne <p...@p...onet.pl>
Newsgroups: pl.misc.elektronika
Subject: Re: stara pamięć nie rdzewieje
Date: Mon, 02 Jun 2014 00:18:08 +0200
Organization: ATMAN - ATM S.A.
Lines: 75
Message-ID: <lmg8r9$gml$1@node1.news.atman.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>
NNTP-Posting-Host: pc-nest01-138.sikornik.net
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Trace: node1.news.atman.pl 1401661097 17109 91.123.216.138 (1 Jun 2014 22:18:17
GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Sun, 1 Jun 2014 22:18:17 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 5.2; rv:24.0) Gecko/20100101 Thunderbird/24.4.0
In-Reply-To: <lmcnal$ope$1@node1.news.atman.pl>
Xref: news-archive.icm.edu.pl pl.misc.elektronika:665895
[ ukryj 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
- Pendrive zdycha, czy coś jeszcze innego? Problem z plikami.
- Odkurzacz Smapp Dynamic - dawny Zelmer
- Nagra IV i zewnętrzny pilot
- Fejk muzyczny czy nie fejk
- Raspberry Pi 3 Model B+
- Kuchenka elektryczna
- test
- Cewka elektrozaworu
- zapytanie o chip r5f21275nfp
- nie naprawiam więcej telewizorów
- Zrobił TV OLED z TV LCD
- Zasilacz USB na ścianę.
- Gniazdo + wtyk
- Aliexpress zaczął oszukiwać na bezczelnego.
- OpenPnP
Najnowsze wątki
- 2025-03-18 Tesla na złom
- 2025-03-18 Ziobrotura 3.0 będzie w prawie przesłuchać "świadka" Tuska bez adwokata w sprawach Sienkiewicza/Bodnara/...?
- 2025-03-18 Produkty ,,Made in Germany" wciąż na topie - art. na www.dw.com
- 2025-03-18 ulaskawienia
- 2025-03-18 Gdynia => Sales Executive / KAM <=
- 2025-03-18 42 MILIARDY ZŁOTYCH ZYSKU W ROK. DLACZEGO BANKI TYLE ZARABIAJĄ W POLSCE?
- 2025-03-17 Nie matura lecz chęć szczera ...
- 2025-03-17 Pendrive zdycha, czy coś jeszcze innego? Problem z plikami.
- 2025-03-17 Odkurzacz Smapp Dynamic - dawny Zelmer
- 2025-03-17 Nagra IV i zewnętrzny pilot
- 2025-03-17 Rzeszów => Spedytor Międzynarodowy <=
- 2025-03-17 Warszawa => Junior Account Manager <=
- 2025-03-17 Białystok => Gen AI Engineer <=
- 2025-03-17 Białystok => Generative AI Engineer <=
- 2025-03-17 Częstochowa => Backend Developer (Node + Java) <=