Przeszukaj forum
Pokazywanie wyników dla tagów 'automatyka'.
Znaleziono 7 wyników
-
Cześć! Jesteśmy świeżo powstałym kołem naukowym działającym na Politechnice Poznańskiej, założonym w celu zrzeszania miłośników mechaniki, elektroniki, robotyki i każdego, kogo interesują roboty w każdym tego słowa znaczeniu. Naszymi obecnymi projektami są rozwiązania, w których staramy się łączyć wszystkie te dziedziny w praktyce. Aktualnie na warsztacie mamy dwa główne przedsięwzięcia: 1. Wielozadaniowa Platforma Modułowa. To nasz projekt flagowy. Tworzymy od zera autorskiego robota opartego na koncepcji łatwo wymiennych modułów. Dzięki jednolitemu systemowi złączy możemy błyskawicznie zmieniać konfigurację sprzętu w zależności od potrzeb. 2. Mechatroniczna Tiara Przydziału. Zbudowaliśmy interaktywne urządzenie, które pomaga niezdecydowanym kandydatom podjąć tę trudną decyzję i (po odpowiedniej "analizie") automatycznie przydziela ich na jeden z 4 kierunków na naszym Wydziale Inżynierii Mechanicznej (WIM). Jako że dopiero się rozkręcamy, postanowiliśmy założyć konto na Forbocie, żeby czerpać inspirację od bardziej doświadczonych twórców i od czasu do czasu pochwalić się naszymi postępami. Jesteśmy bardzo ciekawi Waszych opinii – zwłaszcza na temat koncepcji naszej platformy modułowej! Będziemy wdzięczni za wszelkie rady, konstruktywną krytykę i wymianę doświadczeń. Pozdrawiamy, Ekipa Robo Forge Tutaj znajdziecie więcej informacji o nas: https://roboforgepp.my.canva.site/
-
- Koło Naukowe
- mechatronika
- (i 2 więcej)
-
Koło Naukowe Systemów Pomiarowych i Automatyki & Badawczych Lotniczych Systemów Pomiarowych i Sterowania (KN SPA i BLSPS) działa przy Uniwersytecie Warszawskim oraz Politechnice Warszawskiej. Zrzeszamy studentów zainteresowanych nowymi technologiami, w szczególności bezzałogowymi systemami powietrznymi, czyli dronami, oraz ich zastosowaniami w różnych obszarach gospodarki i nauki. Naszym celem jest rozwijanie wiedzy i umiejętności związanych z nowoczesnymi technologiami oraz tworzenie przestrzeni do realizacji projektów studenckich i wymiany doświadczeń. Członkowie naszego koła biorą udział w wydarzeniach branżowych i konferencjach technologicznych. Uczestniczyliśmy m.in. w konferencji Arctic Frontiers 2026 w Tromsø w Norwegii oraz w targach technologicznych Drone World Expo 2026, gdzie mieliśmy okazję zapoznać się z najnowszymi rozwiązaniami w branży oraz nawiązać kontakty z przedstawicielami środowiska technologicznego. Działalność w kole naukowym daje studentom możliwość zdobywania doświadczenia w pracy projektowej, rozwijania zainteresowań technologicznych oraz poznawania praktycznych zastosowań nowych technologii. Członkowie koła mogą brać udział w projektach, warsztatach oraz wydarzeniach branżowych, a także rozwijać kompetencje związane z pracą zespołową i realizacją inicjatyw studenckich. Do koła mogą dołączyć studenci zainteresowani nowymi technologiami, dronami, projektami interdyscyplinarnymi oraz działalnością organizacyjną. Więcej informacji o działalności koła można znaleźć na naszych profilach w mediach społecznościowych oraz na stronie internetowej: https://knspaiblsps.pl
-
- drone
- automatyka
-
(i 1 więcej)
Tagi:
-
Pneumatyka odgrywa kluczową rolę w dzisiejszym przemyśle, będąc podstawą wielu systemów automatyzacji, robotyki oraz procesów produkcyjnych. Zrozumienie zasad działania układów pneumatycznych nie tylko pomaga w projektowaniu wydajnych i niezawodnych systemów, ale również otwiera drzwi do innowacyjnych rozwiązań technicznych. Pneumatyka znajduje zastosowanie w branżach, gdzie kluczowe znaczenie ma szybkie i niezawodne działanie systemów, a także tam, gdzie użycie energii elektrycznej lub hydraulicznej jest mniej efektywne, lub niebezpieczne. Jednym z narzędzi, które mogą Ci przybliżyć pneumatykę oraz jej zastosowanie jest program FluidSIM pozwalający na symulację schematów i systemów pneumatyki, hydrauliki i elektryki. W tym artykule przedstawię Ci: Do czego służy pneumatyka? Czym jest FluidSIM? Funkcjonalności FluidSIM. Komponenty dostępne w FluidSIM. Przykład symulacji. Pneumatyka to ciekawa i względnie łatwa dziedzina, która może urozmaicić wiele twoich projektów! Źródło zdjęcia. Do czego służy pneumatyka? Pneumatyka to dziedzina inżynierii, która zajmuje się wykorzystaniem sprężonego powietrza do wykonania pracy mechanicznej. Stosuje się ją w różnych branżach do napędzania, sterowania i automatyzacji procesów. Na liniach produkcyjnych znajdziemy maszyny przemysłowe, którymi mogą być prasy pneumatyczne korzystające z powietrza do generowania siły przy docisku. Roboty przemysłowe korzystają z pneumatycznych przyssawek, którymi podnoszą i transportują elementy produkcyjne. Technologia sprężonego powietrza znajduje zastosowanie w wielu branżach. Poniżej przedstawiam ciekawe i praktyczne zastosowanie pneumatyki: 1) Pneumatyczne mięśnie, które poruszają się kołami. Miękka robotyka to dział robotyki, który zajmuje się tworzeniem robotów przy użyciu rozciągliwych materiałów. W tej dziedzinie bardzo użyteczna jest pneumatyka, dzięki której można poruszać kończynami robotów. Grupa badawcza Mazzeo stworzyła miękkiego robota mobilnego wykorzystującego powietrze do napędzania kół w robocie. Robot jest w całości elastyczny, co sprawia, że nie ma żadnych sztywnych części, dzięki czemu może bezpiecznie upadać z wysokości. Mobilny robot pneumatyczny. Źródło zdjęcia. 2) Miękki robot wydrukowany w 3D. Podobnym zastosowaniem robotyki miękkiej jest wykorzystanie jej przy stworzeniu czworonożnego robota kroczącego. Zespół z Uniwersytetu Kalifornijskiego w San Diego zastosował pneumatykę w zginaniu kończyn robota, który potrafi poruszać się po nierównym terenie. Pneumatyczny robot kroczący. Źródło zdjęcia. 3) Roboty przemysłowe z pneumatycznymi przyssawkami. Pneumatykę chętnie stosuje się w robotyce przemysłowej. Roboty wyposażone w przyssawki pneumatyczne precyzyjnie podnoszą i przenoszą elementy, dzięki zastosowaniu sprężonego powietrza. Robot może efektywnie manipulować ładunkami o różnych kształtach. Robot przemysłowy wyposażony w przyssawki pneumatyczne. Źródło zdjęcia. 4) Siłowniki pneumatyczne Jednym z najpopularniejszych zastosowań pneumatyki jest zastosowanie sprężonego powietrza w siłownikach pneumatycznych. Poprzez doprowadzenie lub odprowadzenie powietrza do odpowiedniej komory w konstrukcji tego urządzenia, siłownik wykonuje liniowy ruch mechaniczny, co można wykorzystać do manipulacji obiektami lub generacją siły nacisku. Siłowniki to bardzo ważne elementy wykorzystywane w rozwiązaniach pneumatycznych. Źródło zdjęcia. Pneumatyka umożliwia konstrukcji takich jak elastyczne roboty kroczące czy mobilne. W przemyśle pozwala na precyzyjne manipulowanie obiektami za pomocą przyssawek pneumatycznych. Istotnym elementem pracy z takimi urządzeniami jest także symulacja tych systemów. Jednym z narzędzi, które służy do symulacji układów pneumatycznych jest FluidSIM. Czym jest FluidSIM? Jest to oprogramowanie od Festo, które służy do symulacji układów pneumatycznych, hydraulicznych i elektrycznych. Dzięki niemu możemy zaprojektować i zasymulować układ pneumatyczny ze sterowaniem elektrycznym. Oprogramowanie jest bardzo proste i intuicyjne. Jednym z głównych atutów programu jest jego przejrzysty interfejs i metoda projektowania oparta na symbolach, które można łatwo łączyć, tworząc funkcjonalne układy. To sprawia, że FluidSIM jest idealnym narzędziem zarówno dla początkujących, którzy dopiero uczą się zasad działania systemów pneumatycznych i elektrycznych, jak i dla bardziej zaawansowanych użytkowników, chcących szybko prototypować swoje rozwiązania. Program FluidSIM dysponuje szeregiem elementów, których zachowanie można symulować. Źródło logo Festo: FluidSIM Pneumatics V 4.0. Ponadto elementy dostępne w oprogramowaniu posiadają zmienne parametry. Pozwala to na symulację rzeczywistych parametrów urządzeń. Funkcjonalności FluidSIM W artykule opisano funkcjonalności związane z wersją czwartą oprogramowania. FluidSIM oferuje nie tylko możliwość rysowania schematów, ale także ich symulację, co pozwala na pełne testowanie zaprojektowanych układów. Symulację można zatrzymywać i wykonywać krok po kroku. W parametrach symulacji dostępna jest zmiana kolorystyki niektórych elementów (kolor linii ze sprężonym powietrzem/bez, kolor wskazań elementów pod napięciem, kolor próżni). Oprócz tego można modyfikować szybkość symulacji i kompatybilność z Siemens LOGO!Soft. Parametry symulacji. Przykład prostej symulacji. Zgodnie z kolorystyką możemy założyć, że linie, które symbolizują przewody pneumatyczne, są pod ciśnieniem. Po załączeniu zaworu rozdzielającego powietrze znalazło się w komorze siłownika, skutkując wysunięciem tłoczyska. Podczas symulacji istnieje możliwość zapisywania stanów urządzeń w poszczególnych chwilach. Umożliwia to State Diagram. Wygenerowany podczas symulacji diagram funkcyjny. Diagramy funkcyjne można rysować ręcznie za pomocą Functional diagram. Przykład narysowanego diagramu funkcyjnego. Możliwa jest konfiguracja i zmiana parametrów elementów i urządzeń. Oprócz tego w oknie konfiguracyjnym dostosujemy zewnętrzne obciążenia oraz profile siły. Konfiguracja siłownika. W prawym dolnym rogu okna jest widoczny podgląd elementu po zmianie. Parametry siłownika. Znajdziemy tutaj między innymi średnicę tłoka, kąt montażu lub pozycję początkową tłoka. Ustawienie parametrów jest ważne pod kątem testu układu, gdy chcemy zaimplementować rozwiązanie z określonymi urządzeniami. To oczywiście nie są wszystkie dostępne funkcjonalności programu. Oprogramowanie oferuje również materiały edukacyjne na temat pneumatyki oraz wiele więcej, w tym bogatą bibliotekę komponentów. Komponenty FluidSIM FluidSIM oferuje bogaty zestaw urządzeń i komponentów, które umożliwiają tworzenie oraz testowanie zaawansowanych układów. Poniżej znajdziesz listę elementów, które mogą okazać się przydatne podczas projektowania. 1. Źródła oraz elementy związane z doprowadzaniem powietrza. Źródła oraz elementy zasilające w FluidSIM zapewniają dostęp do sprężonego powietrza oraz jego odpowiednie przygotowanie. Dzięki temu możliwe jest tworzenie kompletnych układów, które można następnie odwzorować w rzeczywistych warunkach. Źródło sprężonego powietrza. Zespół przygotowania powietrza. Zespół przygotowania powietrza. Filtr. Chłodnica. Dostępne elementy źródła zasilania pneumatycznego i elementy pokrewne. 2. Urządzenia wykonawcze Pneumatyczne urządzenia wykonawcze to elementy układów pneumatycznych, które przekształcają energię sprężonego powietrza na ruch mechaniczny. Odpowiadają za realizację określonych czynności, takich jak przesuwanie, podnoszenie, dociskanie czy obracanie elementów. Siłownik pneumatyczny jednostronnego działania ze sprężyną. Siłownik pneumatyczny dwustronnego działania. Silnik pneumatyczny o dwóch kierunkach przepływu. Dostępne elementy wykonawcze. Należy pamiętać, że można zmieniać parametry urządzeń i elementów. Na przykład siłownik jednostronnego działania ze sprężyną można przekształcić na dwustronnego działania bez sprężyny i na odwrót. 3. Zawory Istnieje wiele zaworów pneumatycznych, które mają zastosowanie w pneumatyce. Jedne z najpopularniejszych to rozdzielające, dławiąco zwrotne i logiczne. FluidSIM je implementuje i umożliwia za ich pomocą sterowanie pośrednie układami. Zawór rozdzielający 3/2. Zawór dławiąco zwrotny. Zawór podwójnego sygnału (logiczne AND). Część dostępnych zaworów. Dostępnych jest o wiele więcej. Podobnie jak elementy wykonawcze zawory są w pełni konfigurowalne. Konfiguracja zaworu rozdzielającego. 4. Układy elektryczne FluidSIM oferuje symulację elektrycznych układów sterowania. Biblioteka symboli zawarta w programie zawiera bogatą kolekcję elementów, takich jak: przyciski, sensory, przekaźniki, styki, a nawet sterownik PLC oraz regulator PID. Zasilanie elektryczne. Generator funkcyjny. Przycisk. Cewka elektryczna. Moduł logiczny (coś w rodzaju PLC). Regulator PID. Jak widzisz, istnieje wiele elementów i modułów, z których możesz skorzystać. Każdy z nich pełni określoną rolę i może zostać użyty do budowy złożonych symulacji. Kluczem jest ich odpowiednie połączenie i wykorzystanie, aby stworzyć coś funkcjonalnego i interesującego. Zastanówmy się, jak połączyć te moduły w spójną całość i stwórzmy symulację pewnego układu. Przykład symulacji Stwórzmy uproszczoną symulację obrabiarki detali. Urządzenia ma działać z następującym algorytmem: Urządzenie po włączeniu nie wykonuje żadnych ruchów. Po wciśnięciu przycisku START rozpoczyna się proces obrabiania. Jeżeli w którymkolwiek momencie działania algorytmu zostanie wciśnięty przycisk STOP, to wszystkie urządzenia się wyłączają. Siłownik dociska detal do stołu. Po dociśnięciu detalu włącza się silnik elektryczny i zaczyna obrabiać detal. 3 sekundy po załączeniu silnika rozpoczyna się proces wyłączania. W tym momencie wyłącza się silnik. Po 2 sekundach od wyłączenia silnika siłownik wraca na swoją początkową pozycję. Jeżeli masz dostęp do FluidSIM, to spróbuj wykonać taki układ i przeprowadzić kilka symulacji. Jedno z rozwiązań problemu. Powyżej znajduje się jedno z możliwych rozwiązań tego zadania. Po wciśnięciu przycisku START załączy się stycznik K1 podtrzymujący cały proces oraz cewkę K2, która załącza siłownik pneumatyczny. Siłownik ma dwie pozycje. Pozycja ‘A’ to pozycja początkowa, a ‘B’ to pozycja końcowa. Dojazd tłoczyska do pozycji ‘B’ powoduje załączenie się styku ‘B’, który jest stykiem wyłącznika drogowego, co powoduje dołączenie zasilania na silnik. Silnik zaczyna się obracać i obrabiać materiał. W tym momencie załącza się czasówka K3, która po 3 sekundach rozwiera styk NC K3. W rezultacie silnik się zatrzyma. W tym samym czasie zwiera się styk NO K3, który załącza przekaźnik czasowy K4. Ten odlicza 2 sekundy i po tym czasie tłok wraca do swojej pierwotnej pozycji przez rozwarcie styku NC K4 w układzie po lewej stronie. Jeżeli wciśniemy przycisk STOP podczas działania układu, to cały proces zakończy się przed jego ukończeniem. Przykład działania rozwiązania. Podsumowanie Pneumatyka jest kluczową dziedziną inżynierii, mającą szerokie zastosowanie w automatyce przemysłowej, robotyce oraz wielu innych branżach. Współczesne narzędzia, takie jak FluidSIM, umożliwiają modelowanie i testowanie układów pneumatycznych, hydraulicznych i elektrycznych bez potrzeby fizycznej budowy prototypów. Dzięki temu można nie tylko sprawdzać poprawność działania projektów, ale także optymalizować je pod kątem wydajności i oszczędności energii. Warto pamiętać, że nauka symulacji i projektowania w FluidSIM to nie tylko sposób na lepsze zrozumienie pneumatyki, ale także doskonała okazja do rozwijania umiejętności inżynierskich.
-
- 1
-
-
- automatyka
- Robotyka
-
(i 2 więcej)
Tagi:
-
Matlab Co to Simulink? Podstawy, zastosowanie, pierwsze kroki
mcsw_02 opublikował temat w Artykuły użytkowników
W jaki sposób stworzyć symulację lotu drona, systemu ogrzewania pomieszczenia lub silnika prądu stałego? Jest na to jedno, bardzo uniwersalne i dobre narzędzie - Simulink. Jest to narzędzie, które wchodzi w skład środowiska programistycznego Matlab. Jeżeli jeszcze nie wiesz, czym jest ten program to odsyłam do mojego artykułu omawiającego czym jest Matlab. Simulink is a block diagram environment used to design systems with multidomain models, simulate before moving to hardware, and deploy without writing code. - definicja Simulinka według MathWorks. Możemy więc spodziewać się, że jest to środowisko, które służy do modelowania, symulacji i implementacji systemów dynamicznych bez potrzeby ręcznego kodowania. W tym artykule przedstawię Ci: Czym jest Simulink? Zastosowania Simulinka. Podstawy Simulinka. Praktyczne modele i projekty w Simulinku. Simulink to potężne narzędzie pozwalające na modelowanie różnorodnych systemów. Źródło zdjęcia. Czym jest Simulink? Zgodnie z opisem producenta, jest to środowisko służące do symulacji multi-domenowych modeli. Oznacza to, że będziemy w stanie modelować systemy charakteryzujące się posiadaniem komponentów należących do różnych dziedzin inżynierii - elektryki, mechaniki, pneumatyki itp. Te układy buduje się za pomocą schematów blokowych. To wszystko umożliwia symulację skomplikowanego systemu przed przeniesieniem rozwiązania na rzeczywisty sprzęt. Całe środowisko opiera się na modelach, czyli wyidealizowanej reprezentacji jakiegoś zjawiska/urządzenia/systemu. Modelami sterujemy za pomocą przepływu sygnałów przez połączone między sobą bloki. Sygnały możemy modyfikować i analizować. Zastosowania Simulinka Simulinka stosuje się głównie do symulacji procesów i algorytmów przed przeniesieniem ich na sprzęt. W samym środowisku jest możliwość jednocześnie zbudowania całego systemu oraz jego algorytmu sterowania za pomocą, np. maszyny stanów (Stateflow). Stosuje się go w różnorodnych branżach wykorzystujących skomplikowane systemy. Przykładami takich branż mogą być: Automotive - sterowanie autonomicznymi pojazdami. Lotnictwo i kosmonautyka - skomplikowane sterowanie nieliniowe. Automatyka przemysłowa - sterowanie procesami regulacji. Sektor medyczny - przetwarzanie sygnałów, np. EKG. Więcej o zastosowaniach możecie przeczytać na stronie producenta. Dodatkowe biblioteki do Simulinka rozszerzają jego możliwości. Źródło zdjęcia. Podstawy Simulinka. 1. Włączenie Simulinka Można to zrobić na dwa sposoby: wpisując komendę simulink w Command Window Matlaba lub klikając logo Simulinka w zakładce. Opcje uruchomienia Simulinka. Po uruchomieniu środowiska wyświetli się poniższe okno. Możemy w nim utworzyć nowy pusty projekt lub wybrać wcześniej stworzony wzór. Strona startowa. Wybierzmy Blank Model i rozpocznijmy modelowanie! Stworzenie pustego projektu będzie skutkowało pojawieniem się głównego okna z naszym projektem. Okno Simulinka. 2. Podstawy modelowania W Simulinku modeluje się za pomocą bloków. Do bloków można dostać się za pomocą zakładki Library Browser lub klikając dwukrotnie lewym przyciskiem myszy i wpisując pożądany blok. Załóżmy, że mamy za zadanie zamodelować poniższe równanie: y = ax + b, gdzie: a, b - dowolne stałe, x - czas rzeczywisty. Na pierwszy rzut oka widać, że potrzeba kilka bloków: Mnożenia - Product. Dodawania - Sum. Stałych - Constant. Aktualnego czasu - Clock. Dodajmy je poprzez Library Browser. Pierwsze 3 znajdziesz w zakładkach Simulink > Commonly Used Blocks. Blok Clock znajduje się w Simulink > Sources. Po znalezieniu ich wystarczy przeciągnąć je na okno robocze. Dodanie odpowiednich bloków na obszar roboczy. Bloki łączy się za pomocą linii przeciągając lewym przyciskiem myszy z wyjścia bloku do wejścia kolejnego. Połączenia między blokami. Czerwona strzałka oznacza niedokończone połączenie. Upewnij się, że wszystko jest połączone. Wyświetlmy wynik. Zrobimy to korzystając z bloku Scope, który pokaże nam przebieg monitorowanego sygnału w czasie. Tym razem dodajmy go klikając dwukrotnie na okno robocze i wpisując w wyszukiwarkę Scope. Dodanie bloku Scope. Gotowy schemat powinien wyglądać tak jak poniżej: Gotowy model. Istnieje możliwość dodania opisów, zaznaczając odpowiedni blok i zmieniając jego nazwę. Nazwę linii sygnałowej zmienia się poprzez dwukrotne naciśnięcie jej. Program wraz z etykietami. Zmieńmy wartość współczynnika b, tak aby wynosiła 0. Otrzymamy wtedy równanie: y = ax, W naszym przypadku a = 1, więc równanie będzie wynosiło: y = x, czyli otrzymamy wartości y równe aktualnemu czasowi. Dwukrotne kliknięcie bloku wywoła okno zmiany parametrów tego bloku. Niektóre bloki pokazują aktualne wartości parametrów bloku. Blok ‘b’ zmienił wyświetlaną wartość z 1 na 0 po zmianie jego parametru. Włączmy symulację za pomocą przycisku Run. Przy okazji zmieńmy czas symulacji na 20 sekund. Opcje włączenia symulacji. Czas wykonywania symulacji zmienia się w oknie Stop Time. Otwórzmy Scope. Klikając na niego dwukrotnie zobaczmy przebieg sygnału wyjściowego. Wynik symulacji. Zmieńmy wartości a i b, i sprawdźmy, jak zachowa się przebieg. Symulację można włączyć klikając zielony przycisk startu bezpośrednio w Scope. Zmienione współczynniki równania. Współczynnik kierunkowy zmieniłem na ujemny, przez co nie widać dobrze przebiegu symulacji. Spowodowane jest to zachowaniem przez Scope poprzednich ustawień z poprzedniej symulacji. Za pomocą zaznaczonego przycisku można automatycznie wyskalować osie. Wygenerowany przebieg z wyskalowanymi osiami. To równanie było tylko prostym przykładem. Pamiętajmy, że to środowisko oferuje znacznie więcej, o czym będzie napisane później. 3. Równania różniczkowe w Simulinku Przejdźmy do cięższego przykładu - równań różniczkowych. Nie bój się, nie musisz wiedzieć, jak je rozwiązywać. Simulink zrobi to za nas! Przeanalizujemy problem krok po kroku. Załóżmy, że chcemy zamodelować zachowanie masy na sprężynie w wodzie. Wychylamy ją na pewną odległość i obserwujemy, co się dzieje. Logicznym jest, że sprężyna na początku będzie oscylować. Jednocześnie będzie tłumiona przez wodę, aż do jej całkowitego zatrzymania. Wizualizacja problemu. Nazywa się to oscylator harmoniczny tłumiony. Istnieje równanie, które opisuje powyższy problem: Równanie oscylatora harmonicznego tłumionego. Źródło zdjęcia. Współczynniki w równaniu: m - masa obciążenia. b - współczynnik tłumienia. k - stała sprężyny. Równanie zawiera pochodne. Pochodna to zmiana pewnej wielkości w czasie. Pochodna położenia to prędkość, bo jest to zmiana położenia w czasie - jak szybko obiekt się porusza. Analogicznie przyspieszenie to pochodna prędkości - jak szybko zmienia się prędkość w czasie. W przypadku równania oscylatora zapisane są pochodne położenia. Oznaczone są zapisem: gdzie: n - rząd pochodnej. Tak więc, gdy: n = 1 - prędkość. n = 2 - przyspieszenie. Gdy n = 0, to mamy do czynienia ze zwykłą funkcją. W tym przypadku z położeniem. Podsumowując, będziemy badali: x(t) - położenie. dx(t)/dt lub v(t) - prędkość. d2x(t)/dt2 lub a(t) - przyspieszenie. Najprostszym sposobem na modelowanie takiego równania jest przeniesienie wszystkich pochodnych i stałych na prawą stronę oraz pozostawienie po lewej najwyższej pochodnej. Jeżeli tak zrobimy, to powyższe równanie zyska postać: Postać równania z przeniesieniem niższych pochodnych i stałych na prawą stronę. Przeanalizujmy powyższe równanie. Najwyższą pochodną, możemy obliczyć na podstawie niższych pochodnych. Aby je uzyskać, musimy scałkować wyższą pochodną. Wtedy otrzymamy pochodne niższego rzędu. Dodatkowo całe wyrażenie należy podzielić przez ‘m’. Odpowiednie pochodne musimy wzmocnić przez pewne współczynniki. Nawias po prawej stronie ma postać sumy ujemnych wartości. Na cały układ musimy zadziałać wymuszeniem, czyli sygnałem, który wprawi w ruch cały układ. Można je wyobrazić sobie, jako odchylenie sprężyny w jednym kierunku, a następnie puszczenie jej, tym samym wprawienie jej w ruch. Uwaga: w równaniu nie jest uwzględnione wymuszenie. Jeżeli chcielibyśmy je uwzględnić, musielibyśmy dopisać po prawej stronie +u(t). Zatem będziemy potrzebowali bloków: Step - generowanie sygnału o stałej wartości przez pewien czas. Wymuszenie/początkowe odchylenie sprężyny. Sum - odejmowanie tłumienia i stałej sprężyny. Gain - pomnożenie sygnału przez pewną wartość. Wzmocnienie odpowiednich pochodnych. Integrator - całka sygnału. Potrzebujemy dwóch integratorów, żeby z najwyższej pochodnej, równej 2, przejść do pochodnej 0-rzędu - położenia. Scope - analiza przebiegów w czasie. Wszystkie potrzebne bloki znajdziemy w Library Browser. Po dwukrotnym naciśnięciu na blok Sum można dostosować jego wejścia. Zmieńmy go na rectangular i zmodyfikujmy jego znaki poprzez wpisanie w poniższym polu żądanych symboli: plus (sygnał wymuszający) i dwa minusy (ujemne współczynniki). Parametry bloku Sum. Przygotowane bloki z błędami. Tym razem w blokach wpiszemy zmienne, które należy zadeklarować. Dodaje się je w workspace projektu i przypisuje się im odpowiednią wartość. W tym celu najeżdżamy na blok i klikamy symbol error oraz wybieramy dodanie zmiennej. Stworzenie nowej zmiennej. Okno, które wyskoczy po wciśnięciu Fix. Wartość zmiennej wpisujemy w <expression>. Ja wykorzystam wartości: m = 10. k = 3. b = 2. Jeżeli pomylisz się przy wpisywaniu wartości, to musisz przejść do workspace Simulinka. Przejście do Model Explorer i Workspace modelu. Do tego miejsca przechodzi się w następujący sposób: Zakładka Modelling > Model Explorer > Model Workspace. Po stworzeniu odpowiednich zmiennych czerwone podświetlenie powinno zniknąć. Teraz połączmy wszystkie bloki zgodnie ze wzorem. Połączony schemat. Zauważ, że możliwe są rozgałęzienia oznaczone kropką (tak jak w schematach elektronicznych). Wyjaśnienie połączeń: wzór opisuje, ile wynosi przyspieszenie. Więc musimy je obliczyć na podstawie odpowiednich wartości prędkości i położenia, które są wzmocnione o współczynniki przy nich stojących. Dzięki temu utworzy nam się równanie po prawej stronie. Dodatkowo całą sumę musimy pomnożyć przez 1/m, dlatego na wyjściu sumatora jest Gain. Wyjaśnienie graficzne równania. Poszczególne kolory odpowiadają kolejnym częściom równania. Zostało jeszcze zmodyfikowanie bloku Step. Chcemy, aby wymuszenie pojawiło się od startu symulacji i zniknęło po pewnym czasie. Klikamy dwukrotnie na blok i modyfikujemy parametry. Zmodyfikowane parametry bloku Step. Step time - czas po jakim blok zadziała. Chcemy, aby wymuszenie zniknęło po sekundzie, więc wpisujemy 1. Initial value - wartość początkowa. Ustawiamy na 1, bo zadziałamy jednostkową siłą rozciągając sprężynę. Final value - wartość, która pojawi się po Step time. Chcemy zatrzymać wymuszenie, więc wpisujemy 0. Reszty nie zmieniamy. Do bloku Scope przyłączmy sygnały wymuszenia, przyspieszenia i prędkości, aby zobaczyć jak zachowują się te wielkości. Aby połączyć pożądany sygnał do Scope należy przytrzymać prawym przyciskiem na linię tego sygnału i przeciągnąć kursor w inne miejsce. Pojawi się strzałka, którą należy najechać bezpośrednio na Scope. Połączenie kilku sygnałów do Scope. Przed uruchomieniem zmień czas na minimum 40 sekund. Sprawdźmy jak wygląda wyjście! Wyjście modelu. Wykres nie jest zbyt czytelny. Poprawmy to. Rozbijmy poszczególne wykresy na pojedyncze okna - Layout. Włączmy legendę - Legend. Dostosujmy skalę. Włączenie opcji Layoutu. Podział Scope na poszczególne sygnały. Włączenie legendy. Automatyczne skalowanie wszystkich przebiegów. Wygenerowany wykres. Nasz wykres jest kanciasty. To wina solvera, który oblicza stany modelu podczas symulacji. Nie wdając się w szczegóły naprawmy to klikając napis w prawym dolnym rogu informujący nas o aktualnym solverze. Po kliknięciu wybierzmy koło zębate i przejdźmy do ustawień. Włączenie opcji solvera. Zmiana typu i kroku solvera. Krok solvera ustaw, np. na 0.01. Sprawdźmy, jak teraz wygląda wykres. Finalnie wygenerowany wykres. Teraz możemy dokładnie przeanalizować wygenerowany przebiegi przez nasz model. Przez sekundę działa wymuszenie, które zanika. Następnie model (ciężarek na sprężynie) wykonuje ruch oscylacyjny wokół punktu 0. Tłumienie (woda) w końcu go zatrzymuje. Przy okazji widać, jak zachowuje się prędkość i przyspieszenie. Praktyczne modele i projekty w Simulinku Simulink nie służy tylko i wyłącznie do rozwiązywania skomplikowanych równań różniczkowych. Znajduje on zastosowanie w wielu branżach. Poniżej przedstawiam modele i przykłady rzeczywistych obiektów. 1. Winda (Elevator) Dzięki bibliotece Simscape możliwe jest symulowanie części mechanicznych. Za pomocą kilku bloków można zbudować windę, która porusza się z zadaną prędkością. Model można przerobić na sterowanie położeniem/przyspieszeniem. Przykład windy zbudowanej w Simulinku. Wygenerowane przebiegi przez windę. 2. Sterowanie silnikiem (Control DC Motor with PWM Voltage Source and H-Bridge Driver) Simscape oferuje również pakiet Simscape Electrical, za pomocą której można symulować układy elektroniczne. W połączeniu z częściami mechanicznymi możemy zasymulować jednocześnie część elektryczną i mechaniczną systemu - model multi-domenowy. Przykładem może być sterowanie silnikiem prądu stałego mostkiem typu H przy jednoczesnym monitorowaniu obrotów wału silnika. Sterowanie silnika mostkiem typu H. Pokazane przebiegi prądu i RPM. 3. Sterowanie Arduino za pomocą Simulinka (Get Started with Arduino Hardware) Za pomocą Simulinka możesz tworzyć aplikacje komunikujące się z Arduino. Simulink umożliwia tworzenie aplikacji, sterowania i wizualizacji programów tworzonych na Arduino. Jeżeli chcesz zobaczyć rzeczywiste użycie tego programu, to zajrzyj do tego artykułu. Robot mobilny wykorzystujący Arduino Due. Źródło zdjęcia. W internecie można znaleźć modele/implementacje innych typów robotów, które zostały zaprojektowane w Simulinku: linefollower, typu roomba lub manipulatory przemysłowe Podsumowanie Simulink to świetne narzędzie do modelowania, symulowania i tworzenia aplikacji dla rzeczywistych systemów i obiektów. Sprawdzi się zarówno do rozwiązywania skomplikowanych problemów matematycznych, jak i dla sterowania rzeczywistymi obiektami, takimi jak np. roboty mobilne. Jeżeli chcesz przetestować swoje rozwiązanie sterowania, nastawy PID lub układ elektroniczny, to Simulink będzie dobrym wyborem.- 1 odpowiedź
-
- 5
-
-
- automatyka
- Programownie
- (i 2 więcej)
-
Ciężko sobie wyobrazić świat bez fabryk. Praktycznie wszystko, co nas otacza zostało stworzone z części wyprodukowanych na liniach produkcyjnych, które są coraz bardziej zautomatyzowane. Pozwala to na coraz większą produkcję w coraz krótszym czasie. Jednym z głównych urządzeń współczesnej automatyzacji i automatyki jest sterownik PLC. Szafy sterownicze mogą zawierać sterowniki PLC, które sterują często całymi systemami produkcyjnymi. Źródło zdjęcia. PLC oznacza Programmable Logic Controller co po polsku tłumaczy się jako Sterownik swobodnie programowalny. Jak sama nazwa wskazuje to urządzenie służy do sterowania różnymi procesami. Można go swobodnie programować za pomocą kilku standaryzowanych języków. Kiedyś dominowały układy stycznikowo-przekaźnikowe. One i połączenia między nimi zostały zastąpione jednym, względnie małym urządzeniem - sterownikiem PLC. Jest to rozwiązanie mniej skomplikowane, a w przypadku naprawdę złożonych systemów tańsze. Źródło zdjęcia. Zasada działania sterownika PLC Pętla programowa sterownika to kluczowe pojęcie podczas projektowania algorytmów na sterowniki PLC. Nie wolno go pominąć, bo ta wiedza jest niezbędna do pisania poprawnie działających algorytmów sterowania. Pętlę programową najprościej przedstawić w schemacie blokowym: Cykl programowy PLC. Trzeba go znać! Po Starcie wykonywana jest diagnostyka sterownika. Sprawdzane jest, czy wszystkie elementy sterownika działają poprawnie. Jeżeli na tym etapie coś nie zadziała, to jest to sygnalizowane odpowiednim komunikatem. Aktualizacja wejść następuje na podstawie analizy obwodów wejściowych z obiektu. Na tym etapie sterownik sprawdza, czy np. przycisk jest wciśnięty. Wykonywanie programu użytkownika to proces wykonywania instrukcji, które programista zaprojektował i wgrał do sterownika PLC. Aktualizacja wyjść, czyli inaczej wysterowanie odpowiednich wyjść na podstawie programu i nowych stanów wejść. Sterownik działa na obwody wyjść, które działają na obiekt, np. załączany jest stycznik, który steruje silnikiem. Komunikacja polega na rozmowie PLC z innymi urządzeniami, np. z pulpitami operatorskimi (HMI). Pętla się zamyka. Dlaczego zapamiętanie pętli programowej jest ważne? Wiele funkcji w sterowniku PLC korzysta z tego aspektu, więc żeby zrozumieć jak one działają trzeba najpierw poznać cykl pracy sterownika. Sztandarowym przykładem jest wykrycie zbocza narastającego lub opadającego. Cały cykl pracy sterownika PLC praktycznie trwa 5 - 20 ms. Ten czas może się różnić w zależności od sterownika PLC. Jak zbudowany jest sterownik PLC? Najważniejsze elementy, z których zbudowany jest praktycznie każdy sterownik to: Procesor - mózg urządzenia. Wejścia i wyjścia cyfrowe - działają w logice binarnej. Wyjścia mogą być tranzystorowe i przekaźnikowe. Wejścia i wyjścia analogowe - jeżeli trzeba odczytać wartość wyjściową z potencjometru i przekazać ją dalej, to ten element jest niezbędny do tych operacji. Elementy komunikacyjne - np. Port Ethernet. Służą do przesyłania informacji pomiędzy PLC a innymi urządzeniami. Sterowniki są często modułowe. Rozszerzenia portów I/O (input/output), modułów komunikacyjnych itp. możemy dokładać jak klocki. Sterowniki firmy SIEMENS cieszą się ogromną popularnością. Źródło zdjęcia. Sterowniki PLC muszą spełniać standardy i normy, które zapewnią niezawodność i bezpieczeństwo całego systemu. Jest to rozbudowane urządzenie, które posiada wiele funkcji i jest (często) proste w programowaniu i debugowaniu. Warto nadmienić, że istnieje kolosalna różnica między mikrokontrolerem a sterownikiem PLC. Mikrokontroler może być użyty w PLC. Jest on wtedy mózgiem całego urządzenia. Sterownik PLC może oferować o wiele więcej od pojedynczego mikrokontrolera. Zresztą użycie sterownika PLC spełniającego wiele norm będzie o wiele wygodniejsze od tworzenia sterownika od podstaw korzystając z uC. Taki zabieg zapewnia integralność wszystkich systemów przykładowo na hali produkcyjnej. Korzystając ze sterownika PLC mamy pewność, że inni automatycy także będą umieli naprawiać i konserwować maszynę lub system, który zaprojektowaliśmy. Zastosowanie sterowników PLC PLC możemy spotkać wszędzie tam, gdzie trzeba w jakiś sposób sterować jakimś obiektem. Sterownik swobodnie programowalny może służyć do sterowania: światłami sygnalizacyjnymi na skrzyżowaniu, ruchomymi schodami lub drzwiami obrotowymi w galerii handlowej, maszyną przemysłową, np. prasą hydrauliczną, całą fabryką! Ostatni podpunkt nie jest przesadzony. Bez sterowników PLC dzisiejsze fabryki nie byłyby tak efektywne, jakie są. Jeżeli marzysz o zbudowaniu fabryki nie ruszając się z domu, to powinieneś zainteresować się programem Factory I/O. Nie jest to darmowy program, niemniej daje ogromne możliwości. Na podstawie posiadanego sterownika PLC można zasymulować działanie ogromnych linii produkcyjnych, a nawet manipulatorów przemysłowych. Przykład PLC SIEMENS SIMATIC Na wyróżnienie zasługuje seria SIMATIC firmy SIEMENS, a w szczególność generacja S7. Sterownik SIEMENS SIMATIC S7-1200 jest szeroko rozpowszechnionym sterownikiem, który jest wykorzystywany w wielu branżach. Budowa i wygląd S7-1200. Źródło zdjęcia. W wersji CPU 1214C możemy liczyć na 14 wejść, 10 wyjść i 2 wejścia analogowe. Sterownik można programować w programie TIA Portal (Totally Integrated Automation Portal), w językach typu LD, FBD, ST, o których będzie mowa później. EATON EASYE4 Ciekawym sterownikiem jest EasyE4 Eaton. Posiada on 8 wejść cyfrowych i 4 wyjścia przekaźnikowe. Dodatkowo posiada wyświetlacz, na który możemy również wyświetlać informacje. EATON EASY E4 to tak naprawdę przekaźnik programowalny z cechami PLC! Nazywam go PLC jako uogólnienie i dlatego, że spełnia wiele cech pełnoprawnych sterowników. Warto go przytoczyć jako ciekawostkę i coś wartego uwagi w kontekście tanich i prostych rozwiązań. Mały sterownik PLC. Wyróżnia go prostota. Źródło zdjęcia. Warto o nim wspomnieć, ponieważ jest to idealne rozwiązanie dla prostych i mniej skomplikowanych aplikacji, jak i dla początkujących. Był to PLC, na którym uczyłem się programować i wspominam go bardzo dobrze za prostą obsługę, możliwość wybrania podstawowych języków programowania, jak i za możliwość rozbudowy o wiele modułów rozszerzeń. Sterownik jest względnie tani, a oprogramowanie easySoft oferuje 4 języki: LD, FBD, ST i EDP. Obsługa, programowanie i konfiguracja tego urządzenia jest bardzo prosta i to największy atut tego sterownika. Jak programować sterowniki PLC? Tak jak w przypadku zwykłych języków programowania, korzysta się z IDE. W świecie sterowników najczęściej każdy sterownik ma specjalny program, za pomocą którego można zaprojektować oprogramowanie. Oprócz dwóch wcześniej przeze mnie przytoczonych można również wymienić program GX Developer za pomocą którego można programować sterowniki firmy Mitsubishi. Wiele programów odznacza się ciekawymi i unikatowymi funkcjami. W GX Developer można skorzystać z języka SFC - graficznego języka, który charakteryzuje się przejrzystością napisanego programu. Dodatkowo software daje możliwość zaprogramowania specjalnej funkcji bezpieczeństwa EMERGENCY_OFF, która powoduje powrót do samego początku programu. Wszystkie sterowniki mają jeden wspólną cechę - języki programowania. Języki to nieodłączny element oprogramowania. Źródło zdjęcia. Języki programowania sterowników PLC Języki programowania w automatyce przemysłowej definiuje norma IEC 61131-3, która wyróżnia pięć oficjalnych języków, za pomocą których powinny być programowane sterowniki. Opracowana została przez Międzynarodową Elektrotechniczną Komisję Normalizacyjną (IEC). Jest powszechnie stosowana w globalnym przemyśle. Standard gwarantuje współdziałanie różnych systemów automatyki poprzez wprowadzenie jednolitych zasad programowania. Wyróżnia się 5 języków: 1. Ladder logic (LD lub LAD. Po polsku Język Drabinkowy/Logika Drabinkowa) - najpopularniejszy, graficzny język programowania sterowników PLC. Jego nazwa wzięła się od charakterystycznego wyglądu. Symbole określające wejścia, wyjścia i bloki funkcyjne są ustawione na szeregu poziomych szczebli między dwoma pionowymi szynami, co przypomina drabinę. Program wykonywany jest równolegle od lewej do prawej zgodnie z pętlą programową. Język drabinkowy. Najpopularniejszy język programowania PLC. Źródło zdjęcia. 2. Function block diagram (FBD) - graficzny język, w którym używa się bloków, które odpowiadają za poszczególne instrukcje. Działa na podobnych zasadach co schematy budowane za pomocą bramek logicznych. Język FBD. Jest wygodny w użyciu przy względnie małych programach. Źródło zdjęcia. 3. Sequential function chart (SFC) - ostatni język graficzny wymieniony w normie. Składa się z kroków, do których przypisana jest jakaś akcja. Jeżeli w tym kroku zostanie spełniony ustalony warunek (tzw. tranzycja), to przechodzi się do kolejnego kroku. Oprócz tego każdy program napisany w tym języku musi mieć warunek początkowy, od którego rozpoczyna się cały algorytm. Istnieje możliwość pisania programów, w których kilka kroków może przebiegać równolegle. Do akcji w krokach można wykorzystać język LAD. Język SFC. Bardzo przejrzysty i czytelny język, który można mieszać z językiem LAD. Źródło zdjęcia. 4. Structured text (ST lub STX) - wysokopoziomowy, tekstowy język programowania bazujący na Pascalu. Język posiada pętle, instrukcje warunkowe i funkcje typu pierwiastek kwadratowy i sinus. Język ST. Pozwala implementować skomplikowane algorytmy w zwięzłej formie. Źródło zdjęcia. 5. Instruction list (IL) - niskopoziomowy, tekstowy język oparty na assemblerze. Język IL. Źródło zdjęcia. Jeżeli nauczysz się któregoś z powyższych języków, to programowanie większości sterowników nie powinno Ci sprawić problemów. Wtedy pozostaje tylko kwestia nauczenia się środowiska programistycznego dla konkretnego sterownika. Dodatkowo mogą wystąpić inne symbole reprezentujące zmienne lub dodatkowe funkcje nieoferowane w innych środowiskach. Jak nauczyć się programowania PLC? Oczywistym krokiem jest wybranie się na studia na kierunku automatyka i robotyka/mechatronika. Tam najprawdopodobniej podczas laboratoriów będziesz miał okazję zaprogramować sterownik niejednego producenta. Samoucy mają ciężej. Branża automatyki, a w szczególności sterowników PLC jest dość zamknięta na początkujących. Środowiska do programowania PLC mogą kosztować bardzo dużo, a same sterowniki, sprzęt i narzędzia jeszcze więcej. Bardzo dobrze o tym mówi niemiecki youtuber Jakob Sagatowski w jego filmie o szalonym koszcie programowania PLC. Jest wiele różnych opcji i dróg, które można wybrać. Istnieje wiele kursów i książek na temat programowania PLC. Jeżeli ktoś chciałby spróbować swoich sił w symulacjach programowania PLC, to istnieją takie strony jak plcsimulator. Nie jest to najwyższych lotów symulator, ale sprawdza się w testowaniu na szybko różnych pomysłów. Innym rozwiązaniem jest pobranie TIA PORTAL jako TRIAL lub kupienie taniego sterownika z oprogramowaniem. Z tanich rozwiązań warto wziąć pod uwagę EasyE4 lub Arduino OPTA. Nauka PLC może być trudna, ale też bardzo wynagradzająca. Sterowniki używa się wszędzie i one rządzą dzisiejszymi fabrykami i maszynami. Źródło zdjęcia. Arduino OPTA Zakończę ciekawostką, że Arduino przy współpracy z firmą Finder wydało sterownik PLC. Arduino OPTA występuje w trzech wersjach: Arduino Opta Lite Arduino Opta RS485 - wyposażony w dodatkowy interfejs półdupleksowej łączności RS485 Arduino Opta WiFi - wyposażony w układ komunikacji WiFi / Bluetooth Low Energy (BLE) Na tym sterowniku równolegle mogą pracować skrypt z Arduino IDE i głównego programu PLC, np. w języku ST. Arduino OPTA. Źródło zdjęcia. Podsumowanie Przedstawiłem Ci wiedzę na temat sterowników PLC w pigułce. Pamiętaj, że to dopiero początek. W trakcie nauki natrafisz na takie wątki jak teoria sterowania, regulacja/regulatory, modelowanie procesów i nawet Przemysł 4.0 lub IoT. Bez sterowników PLC nasz świat nie wyglądałby tak jak teraz a poznanie ich na pewno przyda się w niejednej branży.
- 8 odpowiedzi
-
- 4
-
-
- plc
- automatyka
-
(i 1 więcej)
Tagi:
-
Cześć, za jakiś czas będę podchodzić do tematu sterowników PLC. Polecicie jakieś książki, kursy lub też inne źródła wiedzy na ten temat? Dodam, że pracować będę na sterowniku Mitshubishi z serii melsecQ i programie GX Works2, także najlepiej jeśli materiały będą powiązane z tym sprzętem.
-
Artykuł pokazuje jedną z prostszych i skuteczniejszych metod optymalizowania programu pod względem czasu w jakim procesor wykona dane działania, uzyskiwania „dodatkowych wolnych cykli” względem niezoptymalizowanego programu. Zacznijmy od: Na wstępie musimy zadać sobie pytanie czy piszemy prostu program typu „Blink” czy coś bardziej skomplikowanego. Jeżeli już uświadomimy sobie że to bardziej skomplikowany projekt z zależnościami czasowymi musimy zapomnieć o używaniu delay(); na rzecz millis(); Oczywiście możemy użyć jednej z wielu bibliotek robiących „magie” za nas i zastępujących delay() ALE to rozwiązuje tylko problem zatrzymywania się wykonywania programu na określony czas a nie rozwiązuje kwestii optymalizacji jego działania. Ten artykuł bierze udział w naszym konkursie! Na zwycięzców czekają karty podarunkowe Allegro, m.in.: 2000 zł, 1000 zł i 500 zł. Potrafisz napisać podobny poradnik? Opublikuj go na forum i zgłoś się do konkursu! Czekamy na ciekawe teksty związane z elektroniką i programowaniem. Sprawdź szczegóły » Kiedy i gdzie? Z pozoru mogło by się wydawać że tylko tam gdzie bardzo zależy nam żeby program chociaż w pewnym stopniu wykonywał się w czasie rzeczywistym albo do nauki nowych funkcji. Jak pokazuje w bardzo uproszczonej i mającej pokazać obrazowo wersji powinno się tak naprawdę stosować wszędzie i zawsze gdzie tylko jest to możliwe. Jest to podyktowane dobrym nawykiem ale też co wydaję się ważniejsze koniecznością przy pisaniu coraz to bardziej skomplikowanych programów. Szczególnie często będziemy potrzebować tego przy własnych systemów inteligentnego domu gdzie programy będą musiały obsługiwać bardzo dużo zdarzeń i komunikować się między sobą. Dlaczego? Jest to znacznie skuteczniejsza metoda od zwiększania częstotliwości taktowania procesora, przy pracy na baterii możemy wtedy nawet zmniejszyć taktowanie i przez to przedłużyć prace wtedy też możemy skorzystać z usypiania procesora co jeszcze bardziej wydłuży czas pracy. Może dać nam przy dobrym wykorzystaniu efekty lepsze o 100 czy nawet 1000 razy lepsze niż zwiększenie częstotliwości pracy procesora. Potrzebne do doświadczeń dowolna płytka ARDUINO (w moim przypadku Mega 2560) rezystor 1K fotorezystor (opcjonalnie potencjometr) komputer ok 30 min wolnego czasu kilka kabelków płytka stykowa Opcjonalnie: kilka rezystorów i led jednak są opcjonalne ze względu na brak wpływu na czasy Eksperyment ułatwiający zrozumienie problemu Zacznijmy od założenia że co jakiś czas w miarę szybko musimy odczytywać wartość z fotorezystora i według niej sterować diodami pokazującymi wartość oświetlenia w pokoju. Mamy prosty program mający pobierać dane z fotorezystora (pin A0). Stosując ten prosty program spełnimy założenie ale utrudnimy sobie implementacje funkcji mających wykonywać bardzo dużo obliczeń w określonym czasie. Dla przejrzystości nie ma tam innych obliczeń na zmiennych. Dla ułatwienia zamiast fotorezystora użyłem potencjometru Innymi słowy funkcja „sterowanieLed()” będzie zużywała ogromną ilość czasu procesora czyli zasoby #define iloscLed 50 unsigned long obliczanieCzasu[3]; long doWydajnosci[5]; int zmiennaPomocnicza; int wartoscSwiatla; void setup() { Serial.begin(9600); pinMode(A0,INPUT); for(int i=0;i<=iloscLed;i++){//inicjalizacja pinow pod ledy majace sluzyc jako przyklad ich montaz jest opcjonalny pinMode(4+i,OUTPUT); } zmiennaPomocnicza=1024/iloscLed;//automtyczne skalowanie do ilosc led } void loop() { wartoscSwiatla=analogRead(A0); int zmiennaPomocnicza2=0; for(int i=0;i<=iloscLed;i++){ digitalWrite(i,0);//ustawia stan dla wszystkich led po kolei na LOW zmiennaPomocnicza2= zmiennaPomocnicza2+zmiennaPomocnicza;// if(zmiennaPomocnicza2>=wartoscSwiatla) digitalWrite(i,1); /* ustawia stan wyjscia dla led po kolei co warotsc "zmiennaPomocnicza" czyli * cykl1 zmiennaPomocnicza2=0+120 * cykl2 zmiennaPomocnicza2=120+120 * cykl3 zmiennaPomocnicza2=240+120 * cykl4 zmiennaPomocnicza2=360+120 * itd... */ } doWydajnosci[0]++;// wykonuje sie tylko raz na petle proceseora obliczanieCzasu[0] = millis(); obliczanieCzasu[1] = obliczanieCzasu[0] - obliczanieCzasu[2]; if (obliczanieCzasu[1] >= 10UL) {//wykona sie co 10 ms obliczanieCzasu[2] = obliczanieCzasu[0]; doWydajnosci[1]=doWydajnosci[0]; doWydajnosci[0]=0; //co 10ms liczik jest resetowany Serial.println(doWydajnosci[1]); } } A oto wyniki bez optymalizacji: W przykładzie korzystamy z wewnętrznego zegara i funkcji millis(). Standardowo procesor ma taktowanie 16MHz co nie znaczy że jedna linijka kodu oznacza jeden cykl. Dane jakie uzyskamy na serial monitorze mogą się odrobinę różnić od prezentowanych. UWAGA: Polecenia mają różną od siebie ilość potrzebnych cykli procesora na wykonanie. UWAGA: Jeden cykl procesora ≠ Jeden cykl programu(w rozumieniu wykonania jednego cyklu przejścia pętli „loop”). #define iloscLed 50 unsigned long obliczanieCzasu[3]; long doWydajnosci[5]; int zmiennaPomocnicza; int wartoscSwiatla; void setup() { Serial.begin(9600); pinMode(A0, INPUT); for (int i = 0; i <= iloscLed; i++) { //inicjalizacja pinow pod ledy majace sluzyc jako przyklad ich montaz jest opcjonalny pinMode(4 + i, OUTPUT); } zmiennaPomocnicza = 1024 / iloscLed; //automtyczne skalowanie do ilosc led } void loop() { doWydajnosci[0]++;// wykonuje sie tylko raz na petle proceseora obliczanieCzasu[0] = millis(); obliczanieCzasu[1] = obliczanieCzasu[0] - obliczanieCzasu[2]; if (obliczanieCzasu[1] >= 10UL) {//wykona sie co 10 ms obliczanieCzasu[2] = obliczanieCzasu[0]; doWydajnosci[1] = doWydajnosci[0]; doWydajnosci[0] = 0; //co 10ms liczik jest resetowany Serial.println(doWydajnosci[1]); sterowanieLed(); } } void sterowanieLed() { wartoscSwiatla = analogRead(A0); int zmiennaPomocnicza2 = 0; for (int i = 0; i <= iloscLed; i++) { digitalWrite(i, 0); //ustawia stan dla wszystkich led po kolei na LOW zmiennaPomocnicza2 = zmiennaPomocnicza2 + zmiennaPomocnicza; // if (zmiennaPomocnicza2 >= wartoscSwiatla) digitalWrite(i, 1); /* ustawia stan wyjscia dla led po kolei co warotsc "zmiennaPomocnicza" czyli cykl1 zmiennaPomocnicza2=0+120 cykl2 zmiennaPomocnicza2=120+120 cykl3 zmiennaPomocnicza2=240+120 cykl4 zmiennaPomocnicza2=360+120 itd... */ } } I już z optymalizacją: Jak widzimy między obiema eksperymentami jest niewielka różnica dla skrajnych wartości (dla wartości „iloscLed 50 „ wygląda to jeszcze gorzej i jest na poziomie 27-17). Ale już po drobnej sztuczce wygląda to już zupełnie inaczej i mamy ok 30 razy więcej „wolnych” przejść pętli. Stwarza to ogromny potencjał na dalsze prace przy programie i układzie. czw.2: dowolna płytka ARDUINO (w moim przypadku UNO ) dowolną ilość modułów przekaźników (zawsze możemy rozszerzyć projekt) kilka kabli źródło zasilania np. powerbank czytnik linii papilarnych 30 min wolnego czasu Praktyczne zastosowanie jako automatyka domowa Prezentowany przykład zastosowania korzystającego z przedstawionej metody z powodzeniem działa i po dodaniu fragmentu z komunikacją może zostać dodany do innych urządzeń inteligentnego domu. Te praktyczne zastosowanie działa u mnie od lat i obecnie pracuje nad kolejna wersją już jako smart dom. Prezentowany program służy do sterowania elektromagnesem i oświetleniem w pokoju jako automatyka domowa. #include <Adafruit_Fingerprint.h> SoftwareSerial mySerial(2, 3); Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); unsigned long obliczanieCzasu[3]; bool P[3]; void setup() { pinMode(4,OUTPUT); pinMode(5,OUTPUT); pinMode(6,OUTPUT); Serial.begin(9600); finger.begin(57600); delay(5); finger.getTemplateCount(); } void loop() { obliczanieCzasu[0] = millis(); obliczanieCzasu[1] = obliczanieCzasu[0] - obliczanieCzasu[2]; if (obliczanieCzasu[1] >= 50UL) {//wykona sie co 10 ms obliczanieCzasu[2] = obliczanieCzasu[0]; int fingerprintID = getFingerprintIDez(); if (fingerprintID == 1) { P[0] = !P[0]; } if (fingerprintID == 2) { P[1] = !P[1]; } if (fingerprintID == 3) { P[2] = !P[2]; } digitalWrite(4,P[0]); //co 50 ms ustawia stan HIGH albo LOW digitalWrite(5,P[1]); digitalWrite(6,P[2]); } } uint8_t getFingerprintID() { uint8_t p = finger.getImage(); switch (p) { case FINGERPRINT_OK: Serial.println("Image taken"); break; case FINGERPRINT_NOFINGER: Serial.println("No finger detected"); return p; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); return p; case FINGERPRINT_IMAGEFAIL: Serial.println("Imaging error"); return p; default: Serial.println("Unknown error"); return p; } p = finger.image2Tz(); switch (p) { case FINGERPRINT_OK: Serial.println("Image converted"); break; case FINGERPRINT_IMAGEMESS: Serial.println("Image too messy"); return p; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); return p; case FINGERPRINT_FEATUREFAIL: Serial.println("Could not find fingerprint features"); return p; case FINGERPRINT_INVALIDIMAGE: Serial.println("Could not find fingerprint features"); return p; default: Serial.println("Unknown error"); return p; } // OK converted! p = finger.fingerFastSearch(); if (p == FINGERPRINT_OK) { Serial.println("Found a print match!"); } else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Communication error"); return p; } else if (p == FINGERPRINT_NOTFOUND) { Serial.println("Did not find a match"); return p; } else { Serial.println("Unknown error"); return p; } Serial.print("Found ID #"); Serial.print(finger.fingerID); Serial.print(" with confidence of "); Serial.println(finger.confidence); return finger.fingerID; } int getFingerprintIDez() { uint8_t p = finger.getImage(); if (p != FINGERPRINT_OK) return -1; p = finger.image2Tz(); if (p != FINGERPRINT_OK) return -1; p = finger.fingerFastSearch(); if (p != FINGERPRINT_OK) return -1; Serial.print("Found ID #"); Serial.print(finger.fingerID); Serial.print(" with confidence of "); Serial.println(finger.confidence); return finger.fingerID; } Coś o mnie: Uczę się programowania w wolnych chwilach od lat a aktualnie pracuje nad projektem "inteligentnego" pokoju. Ma on w sobie zawierać automatyczne otwieranie zamykanie drzwi sterowanie wentylacją temperaturą wraz z wymiennikiem ciepła własnej roboty i zbieraniem info meteorologicznych.Jak już będzie tak daleko to pochwale się efektami.
- 13 odpowiedzi
-
- 5
-
-
- optymalizacja
- automatyka
- (i 2 więcej)
