Próbuje rozwiązać przedstawione w nim problemy.
Lekcja 2 Basen
* CZUJ_GÓRA - czujnik u brzegu basenu
* CZUJ_DÓŁ - czujnik u dna basenu
* NAPEŁNIJ - przycisk "Napełnij"
* OPRÓŻNIJ - przycisk "Opróżnij"
* WYMIANA - przycisk "Wymiana"
* DOPŁYW - siłownik sterujący dopływem wody
* ODPŁYW - siłownik sterujący odpływem wody
Zadania do wykonania:
1. Napisz program obsługujący przycisk "Napełnij", tak aby po jego wciśnięciu zaczęła się lać woda. (Użyj cewki S)
2. Dopisz do poprzedniego programu zabezpieczenie reagujące na górny czujnik poziomu cieczy tak, aby woda się nie przelewała przez brzeg.
3. Uzupełnij poprzedni program o obsługę przycisku "Opróżnij". Spraw aby wylewana była woda z całego basenu.
4. Zmodyfikuj program tak, aby nie można było przerwać procesu napełniania i opróżniania basenu. Dopiero gdy poziom cieczy osiągnie jakiś czujnik, proces zostaje przerwany.
5. Dodaj obsługę przełącznika "Wymiana". Jeśli basen nie jest aktualnie napełniany lub opróżniany, a przycisk jest załączony, to niech zostaną otwarte oba zawory na raz (wymusza to ciągły obieg świeżej wody).
Tak to będzie działało ale na zwykłych cewkach a w treści napisali, aby wykorzystać cewkę S
twój program jest niepoprawny.
Wg. tego programu musisz cały czas trzymać przycisk ażeby napełnić basen.
po drugie jest możliwość przelania basenu. Trzymając przycisk "Napełnij" nie ma żadnego warunku wyłączenia zaworu.
Naturalnie lepiej jest poprzez SET i RESET ustawić zawory (tak jak jest zalecone).
Zawór DOPLYW:
SET = jeżeli przycisk "napełnnij" i (lub) czujnik np. CZUJ_DÓŁ --negacja (kiedy ma się otworzyć zawór ?)
RESET = CZUJ_GÓRA
W analogiczny sposób zaprogramuj zawór ODPŁYW
Potem rozszerz twój program o funkcje : OPRÓŻNIJ oraz WYMIANA.
Zwróć uwagę,że przy wymianie nie przelać (lub opróżnić) basenu - średnica rur odpływu i dopływu, opory przepływów
Jeżeli chodzi o napełnianie to wcale nie muszę trzymać przycisku. Jest pr5zecież zrobione podtrzymanie dopływu przez styk zwierny.
A woda się nie przeleje bo jest styk rozwierny CZUJ_GÓRA.
Układ chodzi lecz chciałbym zrobić go wykorzystując cewki S i R
Marked masz racje układ będzie chodził, ale nie będzie to "eleganckie" rozwiązanie i tym sposobem nie zrobiłeś wszystkich zadań do wykonania. Pobaw się cewkami SET i RESET: cewka SET ustawia zmienną na 1 a RESET zeruje ją. np po naciśnięciu przycisku NAPEŁNIJ (jest to przycisk astabilny) zastosuj cewke SET dla zmiennej DOPŁYW a po osiągnięciu CZUJ_GÓRA zmienną DOPŁYW zresetuj stosując cewkę RESET. Napewno do wykonania zadania trzeba to będzie bardziej rozbudować. Pobaw sie troche a na pewno zrozumiesz cała sprawę. Pozdrawiam
powtarzam, twój program jest niepoprawny . Pomimo, że basen będzie pełny to jest możliość otwarcia zaworu przyciskiem "napełnij".
Program powinien być tak napisany, ażeby w każdej sytuacji urządzenie działało poprawnie.
Patrz folder (9)-BASEN.e60 EASY 412 itd (pdf)
w twoim programie nie można niczym przerwać cyklu napełniania lub
opróżniania. Basen musi być 100% napełniony ażeby mógł być opróżniony (i odwrotnie). Oczywiście, nie jest to błąd - jeżeli takie byłyby założenia działania ale myślę, że lepiej przerywać proces np. napełniania przyciskiem "opróżniaie" lub "wymiana
Witam
Narysowałem ten programik według założeń zamieszczonych w pierwszym pości, tam jest wyraźnie napisane że, cyklu napełniania, lub opróżniania ma nic nie przerywać. A jeśli Kolega chce przerywać cykl, to lepiej zrobić dwa tryby działania, automatyczny i ręczny.
arek,masz rację. Przeoczyłem punkt 4 zadania.
Witam,
Co do 4 pierwszych punktów to mam gotowe, problem w Wymianie, może ktoś podpowie.
w zadaniu nie jest określone czy basen w trakcie budowy sterowania jest np. w połowie wypełniony wodą lub co się stanie po wyparowaniu wody trochę poniżej czujnika_góra -- w obu przypadkach twój program nie będzie działać.
na twoim miejscu w 1 i 4 linijce programu wstawiłbym zamiast "nie czuj_dół"-- "nie odpływ" a zamiast "czuj_góra-- "nie dopływ".
Efekt jest ten sam ale program będzie działać nawet jeżeli basen w momencie zainstalowania sterowania jest w połowie wypełniony wodą.
W przypadku przycisku "Wymiana" problem się komplikuje.
Należałoby zdefiniować 2 flagi: "dopływ_pomocnicza" i "odpływ_pomocnicza" i ustawiać je funkcjami "set i "reset" tak, jak obecnie otwierasz odnośne zawory.
A same zawory otwierać warunkami logicznymi
(dopływ_pomocnicza LUB Wymiana) = Dopływ
oraz
(odpływ_pomocnicza LUB Wymiana) = Odpływ
które trzebaby dopisać w następnych linijkach.
Możnaby uniknąć flagi pomocniczej, wracając do początku Twoich rozważań i ciągnąc dalej koncepcję zwykłej cewki z podtrzymaniem w miejsce funkcji set/reset.
Proponuje zrobic cos takiego:
tak, chodziło mi o linijkę 1 i 3.
@kenion, dodaj do 4 linijki "R Odpływ" (równolegle do R %M0000.
Zbliżamy się do finału. Jednakże takie rozwiązanie (lub podobne) powinien przedstawić założyciel tematu, który chce się uczyć poprawnego programowania. Dlatego też nie napisałem na początku gotowego rozwiązania zadania a starałem się naszego koleg
Też dopiero zaczynam. Mam pytanie: co ta są za zestyki M000*. Do czego się odnoszą?
andy1955 zgadza sie w 4 linijce brakuje cewki resetującej ODPLYW. Zmienne z oznaczeniem M sa to zmienne wewnetrzne (markery) sluza do pomocy w napisaniu programu. W tym programie zmienne te oznaczaja trwanie cyklu napelniania badz oprozniania zbiornika.
A czy w tym przypadku konieczne jest stosowanie tych markerów.
Kierując się waszymi sugestiami zrobiłem tak:
i można powiedzieć ze 4 punkty są spełnione, a jeżeli chodzi o WYMIANĘ to następuje tak jak napisano w 5 punkcie gdy basen nie jest ani opróżniany ani napełniany, tylko jest mały problem bo wyłączenie wymiany powoduje w zależności od poziomu basenu albo napełnianie albo opróżnianie.
Jak już zainicjujesz wymianę, to jej nigdy w życiu nie skończysz.
Chyba, że przepływy przez zawory będą różne i nastąpi w końcu w czasie wymiany taka sytuacja, że zbiornik się całkowicie napełni, albo całkowicie opróżni.
Uwaga ważna: nigdzie w zadaniu nie jest powiedziane, że masz używać WYŁĄCZNIE cewek S i R, a nie możesz użyć zwykłej cewki.
Ja zrobiłem to tak:
Ja ostatnio na pracownii poszedłem na łatwizne i zrobiłem taki programik. Układ działa z operacja wymiany.Dodałem od razu plik do odczytu dla programu możecie sobie sprawdzić działanie.
Program homercioo7 jest niepoprawny. Nie spełnia kryteriów zadania nr 4 - można przerwać proces napełniania i opróżniania basenu. Wymiana też nie jest dobrze zrobiona, gdyż po ponownym przełączeniu następuje napełnianie lub opróżnianie.
Program kamilpazdan tragedia... Nic nie działa jak powinno.
Program kenion działa jak powinien, po uwzględnieniu poprawki.
Moja wersja: