Poprzedni temat «» Następny temat
Mini kurs programowania przekaźników programowanylnych.

Czy interesował by cię mały kurs przekaźników programowalnych.
Tak
93%
 93%  [ 14 ]
Nie
6%
 6%  [ 1 ]
Głosowań: 15
Wszystkich Głosów: 15

Autor Wiadomość
kayron 
PLC FATEK, automatyka na życzenie



Wiek: 37
Dołączył: 21 Wrz 2008
Posty: 1857
Skąd: Poland
Wysłany: 2015-12-03, 17:29   

Jak objawia się te miganie, siada ci zasilanie sterownika czy co ?
Tak czy siak wracając do PWMa.
Przy LEDach dobrze sobie wybrać jakąś większą częstotliwość 200-300Hz da to dobrą jasność świecenia, a i spory margines w 1s na zmiany wypełnienia, jeżeli mają następować szybko.

Sterownie PWM przykład.
Po wgraniu do sterownika powinno to działać, ale trzeba by dodać podgląd zmiennych DW na ekranie i wywalić trochę nieszczęsny M0 (ENABLE). Trochę się zagalopowałem :lol: i zacząłem to projektować odruchowo jakby była to część większego programu z sterowaniem funkcjami, MENU i zabezpieczeniami. Przetestuję jutro bo mam APB pożyczone z pracy :) .
Działanie.
Mam dwa przyciski SET (ustaw) na wej. I0 i DIR (kierunek) na wej. I1.
Jest też znacznik M01 - ENABLE (Aktywój) który za pomocą bramki AND (B0005) pozwala włączyć/wyłączyć PWMa.
Bloczek B0000 to dwukierunkowy licznik ustawiony na liczenie do 100. Jak chcesz aby jego wartość była zapamiętywana po wyłączeniu zasilania, co było by wskazane to w jego opcjach trzeba odhaczyć ptaszkiem [√] opcję Retentivity (podtrzymywany).
I teraz zaczyna cała filozofia sterowania PWMem, a właściwie czymkolwiek bo PTO i każdym innym mechanizmem sterowanym wartością w sterowniku także.
Licznik B000 ustala i przechowuje nam wartość dla bloku PWM, ale my musimy tą wartość ustalić (móc zmieniać) i przepisać w odpowiednim momencie z licznika do PWMa. Jak to zrobić ?
Najprostszym sposobem jest skorzystanie z mechanizmu podobnego do DDR. Tak tego samego co jest w kościach RAM.
Otóż na zboczu narastającym sygnału SET zwiększamy/zmniejszamy w zależności od stanu przerzutnika DIR (bloczek B0006) wartość licznika B0000, a na zboczu opadającym sygnału SET które wykrywa bramka NAND zbocze opadające bloczek B0001 przesyłamy za pomocą funkcji MOVE (B0002) wartość licznika DW0 do rejestru wartości zadanej PWM DW1.
UWAGA !! Bloczek MOVE można użyć do zadeklarowania stałych w programie, ponieważ może one przesyłać wartość stałą.
Wyjaśnienia wymaga jeszcze magiczna bramka XOR (B0004).
Działa ona tutaj jako Inwertor sterowny impulsem z bramki NAND, co powoduje wygenerowanie krótkiego impulsu, który ładuje nową wartość do bloku PWM.
Sytuację w obu stanach wejścia SET obrazują oba screny poniżej. Na screnie APB_PWM1 widać wyraźnie że licznik ma już nową wartość czyli 4, ale w rejestrze DW1 nadal jest jeszcze poprzednia czyli 3. Dopiero puszczeni przycisku SET powoduje wpisanie nowej wartości do PWMa (scr. APB_PWM2).
Taki mechanizm ma dwie zalety.
1. Mamy pełną kontrolę kiedy i co wpisujemy do danego bloku.
2. Nie ma możliwości wpisania wartości przypadkowej z licznika, bo ta najpierw musi sie ustalić.

Czy da się to zrobić inaczej ? Oczywiście że da na potencjometrze, na Enkoderze z przyciskiem (fajny bajer, szczególnie jak przycisk jest jeszcze podświetlany). Trzeba tylko mieć dobry pomysł i wiedzieć jak ? :grin: I nie próbować za dużo zrobić jednym przyciskiem, bo potem samemu kopie się dołki pod sobą. Tak Jobs z APPLE się w pewnych kwestiach też się mylił :wink:

Kilka uwag co do twojego programu.

1. Strasznie chaotycznie narysowany schemat co utrudnia jego czytanie. Nikt poza toba z tego się nie rozczyta :roll:
2. Nie wiem czy czytałeś polski HELP do APB, ale użyłeś niemożliwie dużej ilości znaczników M.
I tu praktyczne wskazówki.
Znaczniki M0-M63 oraz rejestry DW0-DW12remamentne, czy pamiętane po zaniku zasilania. Warto o tym pamiętać pisząc program.
Szybkie bloki sterownika jak szybkie liczniki, PWM, PTO korzystają z pewnych wejść (I4 do I7) oraz wyjść (Q2,Q3) sprzętowych sterownika, więc warto sobie ich nie po blokować jakimiś błahymi funkcjami typu START/STOP, czy włącz żarówkę. Ogólnie na etapie tworzenia części sprzętowej trzeba już myśleć co chcemy w programie, i co do czego potrzebujemy.
Pisząc program też jest dobrze pisać go w odpowiedniej kolejności i dzielić sobie na logiczne bloki (funkcje), aby potem nie mieć pajęczyny.

APB_PWM2.jpg
Sytuacja po puszczeniu przycisku SET
Plik ściągnięto 7 raz(y) 93,13 KB

APB_PWM1.jpg
Sytuacja po naciśnięciu przycisku SET
Plik ściągnięto 6 raz(y) 91,29 KB

 
 
     
kysior
Nowy na forum


Dołączył: 10 Sty 2013
Posty: 17
Skąd: małopolska
Wysłany: 2015-12-03, 23:24   

kayron napisał/a:
Jak objawia się te miganie, siada ci zasilanie sterownika czy co ?


Nie, miganie wynika z tego, że ja podaję sygnał fali prostokątnej na PWM, 10ms wysoki, 10ms niski - i te 10ms niskiego jest ewidentnie widoczne. A nie da się ustawić mniej. Jak złożyłem Twój układ to jest to znacznie mniej widoczne - w zasadzie pomijalne.

kayron napisał/a:

Tak czy siak wracając do PWMa.
Przy LEDach dobrze sobie wybrać jakąś większą częstotliwość 200-300Hz da to dobrą jasność świecenia, a i spory margines w 1s na zmiany wypełnienia, jeżeli mają następować szybko.

Miałem ustawione 2000Hz - ma to jakiś ujemny skutek? Większe wydzielanie ciepła chyba.

kayron napisał/a:

Sterownie PWM przykład.[...]


Program jest super i - jeśli pozwolisz - pozwoli mi na napisanie (chyba lepiej będzie od nowa) programu opartego na takiej formie obsługi PWM. Jedyne, czego w nim nie rozumię, a co występuje tylko w działaniu rzeczywistym, na symulacji nie, to dlaczego po ściemnieniu do 0 sterownik rozświetla diody ponownie od razu na 100%. Ale dojdę do tego :)


kayron napisał/a:

Kilka uwag co do twojego programu.

1. Strasznie chaotycznie narysowany schemat co utrudnia jego czytanie. Nikt poza toba z tego się nie rozczyta :roll:

Zgadza się. Ale to pierwszy program, chociaż chaotyczny to bardzo dobre (i łaskawe) określenie. Już dochodząc do końca programu wiedziałem, że w następnym te same rzeczy zrobiłbym już inaczej, znacznie prościej.

kayron napisał/a:

2. Nie wiem czy czytałeś polski HELP do APB, ale użyłeś niemożliwie dużej ilości znaczników M.
I tu praktyczne wskazówki.
Znaczniki M0-M63 oraz rejestry DW0-DW12remamentne, czy pamiętane po zaniku zasilania. Warto o tym pamiętać pisząc program.
Szybkie bloki sterownika jak szybkie liczniki, PWM, PTO korzystają z pewnych wejść (I4 do I7) oraz wyjść (Q2,Q3) sprzętowych sterownika, więc warto sobie ich nie po blokować jakimiś błahymi funkcjami typu START/STOP, czy włącz żarówkę. Ogólnie na etapie tworzenia części sprzętowej trzeba już myśleć co chcemy w programie, i co do czego potrzebujemy.
Pisząc program też jest dobrze pisać go w odpowiedniej kolejności i dzielić sobie na logiczne bloki (funkcje), aby potem nie mieć pajęczyny.


Help czytałem, jednak nie bardzo wiedziałem, jak pamiętanie stanu znaczników odbije się na działaniu programu. Teraz już wiem, że trochę mi "bruździło". A użyłem ich tak dużo, bo trochę mi to ułatwiło podzielenie schematu na bloki. Dzięki temu było mi łatwiej (jest mi łatwiej) poruszać się po programie szukając odpowiednich zależności. Można powiedzieć, że to taki częściowy lek na chaotyczność :)

Co do pisania programu w odpowiedniej kolejności - masz całkowitą rację. tylko mi kolejne moduły rozbudowywały program, bo w ten sposób radziłem sobie z problemami pojawiającymi się po drodze. Jak pisałem wcześniej - kolejny program znacznie będzie się już różnił podejściem. Człowiek się całe życie uczy, ważne, żeby wnioski wyciągać :)

Nagrałem film jak ściemniają się diody za pomocą mojego programu (gdzie ewidentnie widać miganie), a jak za pomocą Twojego - za który raz jeszcze dziękuję. Filmiki nagrane telefonem, jutro wrzucę (jak mi się uda).

Raz jeszcze dziękuję za pomoc.
 
     
kayron 
PLC FATEK, automatyka na życzenie



Wiek: 37
Dołączył: 21 Wrz 2008
Posty: 1857
Skąd: Poland
Wysłany: 2015-12-05, 15:53   

Cytat:
Nie, miganie wynika z tego, że ja podaję sygnał fali prostokątnej na PWM, 10ms wysoki, 10ms niski - i te 10ms niskiego jest ewidentnie widoczne. A nie da się ustawić mniej. Jak złożyłem Twój układ to jest to znacznie mniej widoczne - w zasadzie pomijalne.

Zwiększ sobie te czasy do 50-100ms, lub częstotliwość do 500-600Hz i zobacz czy efekt będzie narastał czy się zmniejszał. Ogólnie chodzi o to że PWM na zatrzymanie, przeładowanie się i ruszenie potrzebuje też chwilę czasu. Jeżeli będziesz robił to zbyt często, to powstanie efekt migotania.
Takim dobrym czasem sądzę będzie 5sek, powstanie efekt łagodnego rozjaśniania i z ciemniania.
5sek = 5000ms / 90 kroków (niżej dla czego 90) = 55,5ms /2 (bo to generator taktuje licznik wartości PWM) = 28ms półokresu. Można tutaj poeksperymentować np. 5-10ms stan H i 45-50ms stan L w bloku blinker.

Cytat:
Program jest super i - jeśli pozwolisz - pozwoli mi na napisanie (chyba lepiej będzie od nowa) programu opartego na takiej formie obsługi PWM. Jedyne, czego w nim nie rozumię, a co występuje tylko w działaniu rzeczywistym, na symulacji nie, to dlaczego po ściemnieniu do 0 sterownik rozświetla diody ponownie od razu na 100%. Ale dojdę do tego :)

Nie zauważyłem od razu. Blok PWM ma zakres dla parametru Duty od10 do 100 (%). Wpisanie 0 do PWMa skutkuje więc tym samym co wpisanie 100. Bardzo częsta sytuacja w sterownikach PLC, gdzie liczba 0 jest traktowana jako wartość MAX lub ∞.
Stąd te 90 które podałem wyżej 100-10 = 90 :grin:
Tutaj pojawia się kolejny niuans, jak więc załadować licznik wartości zadanej dla PWMa wartością startową 10 skoro nie ma domyślnie takiej możliwości ? Jest rozwiązanie, ale na razie nie mam czasu nad siedzeniem przy tym. Postaram się zrobić przykład, ale nie wiem kiedy.
W dużych/rasowych PLC jak FATEk czy MITSHUBISHI FX, jest na to prosty sposób za pomocą MOVE i specjalnego znacznika systemowego M (wskaźnik pierwszego cyklu programu) Siemens LOGO też takowy ma. Tu trzeba niestety trochę pokombinować :???: .

FX_inicjacja_PTO.jpg
Inicjacja wartością 10 (MIN dopuszczalną) PTO w sterowniku MITSHUBISHI FX0S
Plik ściągnięto 7 raz(y) 132,76 KB

 
 
     
kysior
Nowy na forum


Dołączył: 10 Sty 2013
Posty: 17
Skąd: małopolska
Wysłany: 2015-12-05, 23:54   

Cały czas walczę z filmikami, bo mi monstrualne wyszły, ale wrzucę wkrótce. A tymczasem piszę program od nowa.
 
     
kysior
Nowy na forum


Dołączył: 10 Sty 2013
Posty: 17
Skąd: małopolska
Wysłany: 2015-12-09, 13:27   

Przesyłam filmiki z obu wersji. Jak widać w mojej wersji programu migały one bardzo mocno, w Twojej praktycznie pomijalnie.

Kończę nową wersję programu (pisaną od nowa), teraz mi nie miga.

Mam jeszcze pytanie. Przy minimalnym wypełnieniu PWM rzędu 10 procent (bo mniej nie przyjmuje) diody świecą już dość jasno - nie da się jeszcze w jakiś sposób obniżyć ich jasności bez wpływu na jasność przy maksymalnym wypełnieniu?

Filmiki.zip
Pobierz Plik ściągnięto 101 raz(y) 6,25 MB

 
     
kayron 
PLC FATEK, automatyka na życzenie



Wiek: 37
Dołączył: 21 Wrz 2008
Posty: 1857
Skąd: Poland
Wysłany: 2016-01-24, 15:06   

kysior napisał/a:

Mam jeszcze pytanie. Przy minimalnym wypełnieniu PWM rzędu 10 procent (bo mniej nie przyjmuje) diody świecą już dość jasno - nie da się jeszcze w jakiś sposób obniżyć ich jasności bez wpływu na jasność przy maksymalnym wypełnieniu?
.
Pokombinuj z częstotliwością tego PWMa. Sądzę że w granicy 30 do 200Hz powinieneś jakieś różnice zauważyć i dobrać zadowalający cię kompromis.
Jeżeli to nic nie da to trzeba by się zastanowić, nad jakimś kombinowanym rozwiązaniem, i zbudować programowo-sprzętowy PWM, lecz poświecisz wtedy kilka wyjść i wejść sterownika, i nie uzyskasz dużej częstotliwości, za to osiągniesz precyzję wypełnienia rzędu nawet 0,5-0,25%. Ale może być ciężko jak się ma wydajne diody.
 
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  


Powered by phpBB modified by Przemo © 2003 phpBB Group
Strona wygenerowana w 0,13 sekundy. Zapytań do SQL: 14