Programowanie systemów sterowania to książka omawiająca jedno z podstawowych zagadnień automatyki i inżynierii sterowania, jakim jest programowanie mikrokomputerowych systemów identyfikacji, nadzoru i sterowania obiektami przemysłowymi.
Autor, wykorzystując wieloletnie doświadczenie programistyczne i dydaktyczne, zebrał w niej wiedzę z zakresu teorii systemów, sterowania i przetwarzania sygnałów oraz programowania systemów symulacji i układów implementujących opracowane algorytmy.
Szczegółowo omówił: • podstawy języka C w kontekście oprogramowania urządzeń fizycznych • podstawy i zaawansowane techniki programowania obiektowego w języku C++ • podstawy programowania symulacji w środowisku Matlab/Simulinka • zjawiska zachodzące w dyskretnym układzie regulacji • modelowanie obiektów dyskretnych • regulację PID, regulację predykcyjną oraz identyfikację parametryczną.
Opanowanie materiału ułatwiają liczne przykłady i ćwiczenia programistyczne, które pomagają zrozumieć, w jaki sposób można wykorzystać poznane metody i narzędzia do zaprogramowania kompletnego systemu do symulacji układów dyskretnych.
Za walory dydaktyczne podręcznika autor został uhonorowany Nagrodą Ministra Nauki i Szkolnictwa Wyższego.
Wydawnictwo poleca ten podręcznik studentom automatyki i robotyki, a także inżynierom automatykom specjalizującym się w programowaniu systemów sterowania.
Spis treści:
Część I. Programowanie niskiego poziomu w języku C Wprowadzenie
1. Typy 1.1 Fundamentalne typy danych 1.2 Typy pochodne 1.3 Typy niekompletne
2. Stałe 2.1 Stałe całkowitoliczbowe 2.2 Stałe zmiennopozycyjne 2.3 Stale znakowe 2.4 Znaki przestankowe 2.5 Stałe łańcuchowe 2.6 Stałe wyliczeniowe
3. Zmienne i ich nazwy 3.1 Kwalifikatory typu 3.2 Kwalifikatory miejsca 3.3 Kombinacje kwalifikatorów 3.4 Zakres ważności nazw zmiennych
4. Operatory i wyrażenia 4.1 Wyrażenia 4.2 Podstawowe operatory arytmetyczne 4.3 Operatory inkrementacji i dekrementacji 4.4 Operatory relacyjne 4.5 Operatory logiczne 4.6 Operator przecinka 4.7 Operatory bitowe 4.8 Operatory przypisania 4.9 Konwersje typów i operatory konwersji (rzutowania) 4.10 Wyrażenie warunkowe 4.11 Operator sizeof 4.12 Priorytety operatorów 4.13 Punkt sekwencji
5. Instrukcje sterujące przebiegiem programu 5.1 Instrukcje i bloki 5.2 Instrukcja warunkowa 5.3 Instrukcja wyboru 5.4 Pętle 5.5 Sterowanie pętlami --- break i continua 5.6 Instrukcja skoku
6. Funkcje 6.1 Zwracanie wartości przez funkcję 6.2 Przesyłanie argumentów do funkcji przez wartość 6.3 Deklaracja zapowiadająca funkcji i pliki nagłówkowe 6.4 Rekurencja wywołań funkcji 6.5 Stary styl definicji funkcji 6.6 Funkcja o zmiennej liczbie argumentów wywołania
7. Wskaźniki i tablice 7.1 Definiowanie wskaźników 7.2 Wskaźniki jako argumenty funkcji 7.3 Tablice 7.4 Wskaźniki a tablice 7.5 Działania arytmetyczne na wskaźnikach 7.6 Wskaźniki nieokreślonego typu (void) 7.7 Wskaźniki do wskaźników 7.8 Wskaźniki do funkcji 7.9 Wskaźniki a kwalifikator const
8. Struktury i unie 8.1 Deklarowanie i definiowanie struktur 8.2 Praca ze strukturami 8.3 Przesyłanie struktur do i z funkcji 8.4 Tablice struktur 8.5 Struktury alokowane dynamicznie 8.6 Deklaracje typu 8.7 Unie 8.8 Pola bitowe
9. Preprocesor 9.1 Załączanie plików 9.2 Kompilacja warunkowa 9.3 Definiowanie symboli 9.4 Definiowanie makr 9.5 Makra predefiniowane 9.6 Inne dyrektywy
Część II. Programowanie obiektowe w języku C ++ Wprowadzenie
10. Język C++ a język C 10.1 Stałe 10.2 Nowe typy danych 10.3 Referencje 10.4 Nazwy zastępcze 10.5 Priorytety operatorów języka C ++
11. Funkcje w języku C++ 11.1 Deklarowanie nazw funkcji 11.2 Funkcje typu „inline" 11.3 Argumenty domniemane funkcji 11.4 Nienazwany argument funkcji 11.5 Przekazywanie argumentów funkcji przez referencję 11.6 Przeładowanie nazw funkcji 11.7 Typy rozróżniane przy przeładowaniu 11.8 Etapy dopasowania przeładowanycłi funkcji
12. Klasy 12.1 Deklarowanie i definiowanie klas 12.2 Elementy składowe klasy 12.3 Enkapsulacja składników klasy 12.4 Deklaracja przyjaźni 12.5 Funkcje składowe 12.6 Funkcje składowe typu „inline" 12.7 Wskaźnik „this" 12.8 Przesłanianie nazw 12.9 Statyczny składnik klasy 12.10 Statyczna funkcja składowa klasy 12.11 Stały składnik klasy 12.12 Funkcja składowa typu const 12.13 Składnik dostrajamy (mutable) 12.14 Funkcja składowa typu volatile 12.15 Wskaźniki do składników klasy 12.16 Struktury i unie jako klasy
13. Konstruktory i destruktory 13.1 Deklarowanie i definiowanie konstruktora 13.2 Deklarowanie i definiowanie destruktora 13.3 Automatyczne wywołania konstruktora i destruktora 13.4 Przeładowanie konstruktora 13.5 Argumenty domniemane i konstruktor domniemany 13.6 Lista inicjalizacyjna konstruktora 13.7 Konstruktor kopiujący 13.8 Niepubliczny konstruktor 13.9 Singletony
14. Konwersja typów 14.1 Potrzeba konwersji 14.2 Konwersje automatyczne 14.3 Konstruktor jako konwerter 14.4 Jawne wywołanie konwersji 14.5 Rezygnacja z konwersji automatycznych 14.6 Operator konwersji 14.7 Jawne konwersje typów w języku C++ 14.8 Konwersje a przeładowanie funkcji
15. Przeładowanie operatorów 15.1 Zasady przeładowania operatorów 15.2 Funkcja operatorowa jako składnik klasy 15.3 Globalna funkcja operatorowa 15.4 Operator przypisania 15.5 Operator przypisania a pseudoprzypisania 15.6 Operator pobrania adresu 15.7 Operator przecinka 15.8 Operatory new i delete 15.9 Operator tablicowy [ ] 15.10 Operator funkcyjny ( ) 15.11 Operator odniesienia przez wskaźnik - > 15.12 Operator odniesienia przez wskaźnik do składnika - >* 15.13 Operatory inkrementacji i dekrementacji
16. Obsługa sytuacji wyjątkowych 16.1 Zgłaszanie wyjątków 16.2 Obsługa wyjątków 16.3 Rozróżnianie wyjątków 16.4 Wyjątki nigdzie nieobsłużone 16.5 Specyfikacje wyjątków 16.6 Różnice między wywołaniem funkcji a obsługą wyjątków 16.7 Wyjątki w konstruktorze 16.8 Wyjątki w destruktorze 16.9 Blok try na poziomie funkcji 16.10 Wyjątkowe bezpieczeństwo 16.11 Standardowe klasy wyjątków
17. Dziedziczenie i zawieranie klas 17.1 Zawieranie klas 17.2 Dziedziczenie 17.3 Reguła przesłaniania 17.4 Konstruktory klas podstawowych i składowych 17.5 Zagnieżdżona deklaracja klasy 17.6 Kolejność konstrukcji i destrukcji obiektów składowych 17.7 Sposoby dziedziczenia 17.8 Czego się nie dziedziczy? 17.9 Konwersje standardowe przy dziedziczeniu 17.10 Dziedziczenie wielokrotne 17.11 Wieloznaczność przy dziedziczeniu wielokrotnym 17.12 Dziedziczenie wirtualne
18. Funkcje wirtualne 18.1 Podstawy 18.2 Technikalia 18.3 Kiedy wystąpi polimorfizm? 18.4 Kiedy nie wystąpi polimorfizm? 18.5 Nietypowe funkcje wirtualne 18.6 Identyfikacja typu (RTTI) 18.7 Funkcje czysto wirtualne 18.8 Klasy abstrakcyjne 18.9 Wirtualne konstruktory i funkcje globalne
19. Szablony 19.1 Szablony funkcji 19.2 Szablony klas 19.3 Sposoby ukonkretnienia szablonu 19.4 Specjalizacja szablonu 19.5 Szablony z wieloma parametrami 19.6 Statyczny składnik w szablonie klasy 19.7 Szablony a przyjaźń 19.8 Inne uwagi dotyczące szablonów
20. Przestrzenie nazw 20.1 Deklarowanie przestrzeni nazw 20.2 Używanie przestrzeni nazw 20.3 Dyrektywa Rusing 20.4 Instrukcja Rusing 20.5 Anonimowe przestrzenie nazw
21. Elementy biblioteki standardowej 21.1 Iteratory 21.2 Klasy-pojemniki (kontenery) 21.3 Obiekty funkcyjne 21.4 Standardowe algorytmy 21.5 Klasa string 21.6 Standardowe wejście i wyjście
Część III. Programowanie symulacji Simulinka Wprowadzenie
22. Podstawy działania s-funkcji 22.1 Matematyczny opis bloku 22.2 Fazy symulacji 22.3 Bezpośrednie przejście sygnału przez blok 22.4 Dynamiczny rozmiar wejść i wyjść 22.5 Czas próbkowania dla bloku
23. S-funkcje w języku Matlaba 23.1 Format s-funkcji w języku Matlaba 23.2 Cechy s-funkcji 23.3 Przykład s-funkcji — wzmacniacz 23.4 Przykład s-funkcji — dynamika ciągła 23.5 Przykład s-funkcji dynamika dyskretna 23.6 Przykład s-funkcji — układ hybrydowy 23.7 Wersja 2 interfejsu s-fmkcji w języku Matlaba
24. S-funkcje w języku C 24.1 Kolejność wywoływania metod 24.2 Struktura SimStruct 24.3 Metody 24.4 Szablon s-funkcji w języku C 24.5 Kompilacja s-funkcji i osadzenie w modelu 24.6 Kreator s-funkcji
25. Definiowanie właściwości bloku s-funkcji 25.1 Zmienne s-funkcji 25.2 Sygnały wejściowe bloku 25.3 Sygnały wyjściowe bloku 25.4 Stany bloku 25.5 Parametry bloku s-funkcji 25.6 Zmienne robocze bloku 25.7 Definiowanie czasów próbkowania 25.8 Detekcja przejść przez zero 25.9 Definiowanie własnych typów danych 25.10 Obsługa błędów 25.11 Opcje symulacji
26. S-funkcje w języku C++ 26.1 Szablon s-funkcji w języku C++ 26.2 Przechowywanie obiektów w pamięci 26.3 Kompilacja s-funkcji w języku C+
Część IV. Symulowanie układów regulacji Wprowadzenie
27. Dokumentacja w projektach programistycznych 27.1 Doxygen - wstęp 27.2 Dokumentowanie kodu 27.3 Formatowanie dokumentacji
28. Dyskretny obiekt symulacji 28.1 Model matematyczny 28.2 Programowanie symulacji modelu ARMAX 28.3 Sprawdzanie poprawności implementacji
29. Dyskretna pętla regulacji i interfejs dla klas regulatorów 29.1 Dyskretna pętla regulacji 29.2 Interfejs klasy regulatora 29.3 Prosty regulator 29.4 Programowanie dyskretnej pętli regulacji 29.5 Sprawdzanie poprawności implementacji
30. Regulacja PID 30.1 Ciągły regulator PID 30.2 Dyskretna postać regulatora PID 30.3 Implementacja regulatora PID 30.4 Regulator PID samonastrajalny
31. Regulacja predykcyjna 31.1 Pojęcia związane z regulacją predykcyjna 31.2 Algorytm regulacji predykcyjnej uogólnionej 31.3 Implementacja algorytmu GPC 31.4 Sprawdzanie poprawności działania
32. Identyfikacja parametryczna 32.1 Rekurencyjna ważona metoda najmniejszych kwadratów 32.2 Modyfikacje RMNK 32.3 Rozszerzona RMNK 32.4 Szybki algorytm RMNK 32.5 Implementacja algorytmu identyfikacji
33. Graficzny interfejs użytkownika 33.1 Trójstopniowa struktura programów w środowisku KDE 33.2 Sygnały i gniazda 33.3 Sygnały i gniazda w akcji 33.4 Grafika w KDE — tworzenie wykresu 33.5 Wykres w aplikacji
Programowanie systemów sterowania Narzędzia i metody
|