. Flashcards
l
W zależności od typu struktury mapy pamięci, procesory rdzeniowe mogą mieć następującą architekturę:
- Architektura harwardzka -obszary adresowe pamięci danych i programu (wewnętrznych i czasami zewnętrznych) są rozdzielone. Magistrale danych i rozkazów mają różną szerokość długość słowa).
- Zmodyfikowaną architekturę harwardzką - jest rozwiązaniem pośrednim, starającym się połączyć zalety architektury harwardzkiej i Von-Neumanna. Obszary pamięci ROM i RAM są rozdzielone, ale charakteryzują się taką samą długością słowa.
- Architektura Von-Neumanna - cechuje się jednolitą przestrzenią adresową.
Architektury mikroprocesorów:
- von Neumanna, Harvard
- RISC i CISC
- VLIW i EPIC
- ARM, MIPS
CISC
- rozbudowane instrukcje
- operacje arytmetyczne bezpośrednio na lokalizacjach w pamięci
- możliwość zawansowanego programowania w języku maszynowym
- różna długość instrukcji
- często występujące instrukcje - 8 bitów
- rzadsze, rozbudowane instrukcje o większej długości
- znaczne różnice czasu wykonania poszczególnych instrukcji
RISC
- znacznie ograniczony zestaw instrukcji
- operacje ALU tylko na rejestrach
- prosty tryb adresowania - uproszczone odwołania do pamięci
- wszystkie instrukcje identycznej długości (32 bity)
- znacznie prostsza konstrukcja procesora
Cechy architektury RISC (Reduced Instruction Set Computer):
- Zredukowana liczba rozkazów. Upraszcza to znacznie dekoder rozkazów.
- Redukcja trybów adresowania, dzięki czemu kody rozkazów są prostsze, procesor jest zbudowany zgodnie z architekturą harwardzką,
- Ograniczenie komunikacji pomiędzy pamięcią, a procesorem. Do przesyłania danych pomiędzy pamięcią, a rejestrami służą dedykowane instrukcje (load, store) .
- Zwiększenie liczby rejestrów (np. 32, 192, 256),
- Dzięki przetwarzaniu potokowemu (ang. pipeling) wszystkie rozkazy wykonują się w jednym cyklu maszynowym.
- Zbiór realizowanych instrukcji jest ograniczony i spełnia warunki ortogonalności (symetrii).
- Procesor tego typu zamiast prostego rejestru instrukcji stosuje pamięć FIFO (first-in first-out), która gromadzi kolejkę instrukcji.
Cechy architektury von Neumanna:
- rozkazy i dane przechowywane są w tej samej pamięci,
- nie da się rozróżnić danych od rozkazów (instrukcji),
- dane nie maja przypisanego znaczenia,
- pamięć traktowana jest jako liniowa tablica komórek, które identyfikowane są przy pomocy dostarczanego przez procesor adresu,
- procesor ma dostęp do przestrzeni adresowej, dekodery adresowe zapewniają mapowanie pamięci na rzeczywiste układy.
Cechy architektury Harwardzkiej:
- rozkazy i dane przechowywane są w oddzielnych pamięciach,
- organizacja pamięci może być różna (inne długości słowa danych i rozkazów),
- możliwość pracy równoległej – jednoczesny odczyt danych z pamięci programu oraz danych,
- stosowana w mikrokontrolerach jednoukładowych.
Architektura ARM Cortex-M4
Wysoce wydajna, tania i energooszczędna, wykorzystywana w milionach urządzeń
Cortex-M należy do wersji nazw ARM, ARMv7. Wcześniejsze wersje ARM: ARMv4, ARMv5, ARMv6
Cortex-M: Procesory w tych profilach są wykorzystywane do rozwoju systemów wbudowanych opartych na mikrokontrolerach. Rodzina Cortex-M: Cortex-M0, Cortex-M0+, Cortex-M1, Cortex-M3, Cortex-M4 i Cortex-M7.
Cortex-A: Procesory w tym profilu są używane w urządzeniach o wysokiej wydajności, takich jak telefony komórkowe / komórkowe.
Cortex-R: Główny rynek procesorów tego profilu znajduje się w aplikacji w czasie rzeczywistym, gdzie głównym celem jest planowanie czasu reakcji.
Mikrokontrolery rodziny AVR – architektura
Rodzina 8- i 32-bitowych mikrokontrolerów o zmodyfikowanej architekturze harwardzkiej RISC, rozwijanych i produkowanych przez firmę Atmel
Jedna z najpopularniejszych rodzin mikrokontrolerów wykorzystywanych w dydaktyce, prostych projektach amatorskich, niewielka liczba projektów komercyjnych
Dzielą się na kilka rodzin, kompatybilnych binarnie, ale różniących się znacząco rozmiarem pamięci, częstotliwością taktowania i liczbą
wbudowanych układów peryferyjnych, najpopularniejsze to: ATtiny, ATmega, ATxmega
Dostępne są również modele przewidziane do specjalistycznych zastosowań, z wbudowanym kontrolerem CAN czy obsługujące zaawansowane tryby PWM
Mikrokontrolery rodziny AVR – architektura
Zalety
- Jedna z najpopularniejszych architektur, duża liczba użytkowników zgrupowana w społecznościach, duża ilością gotowego kodu, przykładów, tutoriali i narzędzi
- Mininalna liczba elementów potrzebna do działania mikrokontrolera
- Są ławo dostępne i tanie, nie ma zróżnicowania na modele łatwiej i trudniej dostępne
- Wiele wersji programatorów, większość bardzo prostych w budowie
- Wysoka wydajność
- Bardzo duże zróżnicowanie wersji, umożliwiające wybór optymalnego mikrokontrolera do danego zastosowania
- Posiadają obudowy „przyjazne” do prototypowania
- Mogą być zasilane napięciem od 3 do 5V
- Cena i dostępność
Rodzina UC3 układy wyposażoną w rdzeń AVR32 i pamięć Flash
- Rdzeń AVR32 zaprojektowany został w oparciu o architekturę harwardzką
- Posiada Hmatrix - wielopoziomową wewnętrzną magistrale komunikacyjną, która zapewnia szybki transfer pomiędzy modułami wewnętrznymi mikrokontrolera
- Wyposażona jest w szybkie interfejsy komunikacyjne, w tym ethernet i duży stopień integracji peryferii.
- Zewnętrzna magistrala obsługuje pamięci SRAM, SDRAM, ROM, Flash oraz inne urządzenia o organizacji pamięci (LCD, FPGA)
- Realizuje jednocyklowe instrukcje DSP- mnożenie i mnożenie z akumulacją. Wyniki operacji mogą być 32-, 48- i 64-bitowe
- Przy częstotliwości taktowania 66 MHz układ UC3 pracuje z wydajnością 80 MIPS. Porównywalny z ARM 7
- Dla układów z rdzeniem AVR32 powstało środowisko programowe AVR32 Studio oraz kompilator GNU GCC (obecnie zintegrowane w ATMEL studio 7) oraz FreeRTOS
Mikrokontrolery rodziny AVR – architektura, lista rozkazów
Peryferia komunikacyjne.
- Konfigurowalny Ethernet MAC 10/100 wspiera zarówno tryb pracy MII. Ethernet MAC ma dedykowany kanał DMA.
- USB 2.0 FS 12Mbps z funkcją hosta OTG.
- TWI (I2C), 2xSPI, SSC i aż cztery USART-y ze sprzętową kontrolą transmisji.
- Jeden port USART posiada wsparcie dla: IrDA, modemu i ISO7816.
- Wielofunkcyjne linie I/O - alternatywne funkcje specjalne, np. USART i SPI, użycie jednego z nich uniemożliwia korzystanie z drugiego.
- Kontroler portów I/O zawiera osobne rejestry do ustawiania stanów wysokich, niskich oraz osobny do zmiany stanu na przeciwny.
- standardowe peryferia takie jak timery, przetwornik A/C, watchdog oraz układy nadzorujące zasilanie.
Programowanie i narzędzia
- Układy UC3A i UC3B dostarczane są z bootloaderem USB zaprogramowanym w początkowej części Flasha (8kB).
- Kolejnym sposobem jest programowanie przez interfejs JTAG, do którego można użyć JTAG ICE mkII.
Cechy mikrokontrolera ATmega32
- Architektura RISC - 131 instrukcji procesora (wykonywanych w jednym cyklu zegara), 32 ×8 -bitowych rejestrów ogólnego przeznaczenia,
- Nieulotna pamięćprogramu i danych - 32kB pamięci programu, ISP, z opcją Bootloadera, 1024 bajty pamięci danych EEPROM, 2kB wewnętrznej pamięci SRAM,
- Peryferia - 8-bitowe i 16-bitowy timery/liczniki z opcją preskalera, cztery kanały PWM, 8×10 − bitowych przetworników ADC, interface Two-wire, programowalny Serial USART, interface Master/Slave SPI, programowalny Watchdog, komparator analogowy,
- Inne cechy - wewnętrzny generator RC, wewnętrzne i zewnętrzne źródła przerwań, układy oszczędności energii, zasilanie 4.5 − 5.5V, częstotliwość pracy zegara do 16MHz.
Pamięć danych EEPROM mikrokontrolera AVR ATmega32
ATmega32 posiada nieulotną pamięć danych o rozmiarze 1024 bajty, zorganizowanej w osobnej przestrzeni adresowej.
W przestrzeni tej mogą być zapisane lub odczytane pojedyncze bajty.
Dostęp do tej pamięci możliwy jest za pomocą rejestrów EEARH, EEARL, EEDR i EECR. Rejestry te pełnią następujące funkcje: EEARH i EEARL - adres, EEDR - wpisywane lub odczytywane dane, EECR - rejestr kontrolny.
PamięćEEPROM data jest chroniona przed zniszczeniem, które może powodować zbyt niskie napięcie zasilania VCC .
Pamięć urządzeń wejścia/wyjścia mikrokontrolera AVR ATmega32
Do wszystkich peryferii mikrokontrolera AVR ATmega32 odwołuje się za pomocą rejestrów I/O umieszczonych w tej samej przestrzeni adresowej co Rejestry ogólnego przeznaczenia i pamięćSRAM (ścieżka danych),
Używając mnemoników IN lub OUT należy używać adresów $00 − $3F, w przypadku, gdy odwołujemy siędo nich używając instrukcji LD i ST należy dodać $20H E X tj. 3210 do ich adresu (gdyż poprzedzają je 32 rejestry ogólnegoprzeznaczenia).
Niektóre rejestry I/O, w zależności od pełnionej funkcji w urządzeniach peryferynych, sąchronione przed zapisem. Do niektórych rejestrów można się odwołać dopiero po ustawieniu odpowiedniej flagi (patrz dokumentacja).
Struktura portu – AVR
Wszystkie porty AVR mają funkcjonalność : Read/Modify/Write
Każdy pin w porcie może być modyfikowany selektywnie
Rejestrom przydzielono trzy adresy w pamięci We/Wy
dla każdego portu:
* rejestr danych — PORTx (odczyt/zapis)
* rejestr kierunku danych — DDRx (odczyt/zapis)
* piny wejściowe portu – PINx (odczyt)
Cechy portu – AVR
Port jako wejście:
Port jako wyjście:
Port jako wejście:
* histereza (około 50 mV), pozwalająca na eliminację błędów przy sygnałach wolnozmiennych i zaszumionych,
* przy odczycie portu po jego zapisaniu należy odczekać około 1 takt zegara (wewnętrzny układ synchronizujący).
Port jako wyjście:
* stan pinu może się pojawiać z opóźnieniem jednego taktu zegara przy zmianie PORTxn,
* typowe obciążenie linii portu wynosi 20mA, maksymalnie 40mA
Timery/Liczniki - AVR
- 2 liczniki 8-bitowe
- licznik impulsów wewnętrznych i zewnętrznych, odczytanie i zapisanie wartości licznika
- ustalenie zakresu licznika
- porównanie bieżącej wartości licznika z zadaną wartością, przełączenie napięcia portu binarnego
- 1 licznik 16-bitowy - dodatkowo
- porównanie wartości licznika z dwoma zadanymi wartościami
- rejestracja wartości licznika w momencie pojawienia się impulsu zewnętrznego
Timery/Liczniki – AVR: 8-mio bitowy licznik czasomierz T0 z funkcją PWM
Cechy
- Licznik z pojedynczym komparatorem
- Tryb CTC (Clear Timer on Compare)
- Tryb PWM z korekcją fazy
- Tryb PWM (fast PWM)
- Zewnętrzny licznik zdarzeń
- 10-bitowy Prescaler (1, 8, 64, 256, 1024)
- Flagi przerwań TOV0 – flaga przepełnienia; OCF0 – flaga porównania (komparatora)
System przerwań - AVR
- Zmiana stanu pewnych wejść (przerwania INT0, INT1, INT2, ICP1).
- Określony stan pewnych wejść (przerwania INT0, INT1).
- Przepełnienie licznika (TIMER0 OVF, TIMER1 OVF, TIMER2 OVF).
- Osiągnięcie przez licznik zadanej wartości (TIMER0 COMP, TIMER1 COMPA, TIMER1 COMPB, TIMER2 COMP).
- Zakończenie przetwarzania analogowo-cyfrowego (ADC).
- Zakończenie transmisji przez interfejs szeregowy (SPI STC, USART TXC, TWI).
- Odebranie danych przez interfejs szeregowy (USART RXC).
- Gotowość pamięci EEPROM (EERDY).
- Zmiana stanu wyjścia komparatora (ANACOMP).
System przerwań – AVR: Tablica przerwań
- W standardowej konfiguracji mikrokontrolera 42 najniższe adresy w pamięci programu zajmuje tablica przerwań.
- Im mniejszy adres, tym wyższy priorytet przerwania.
- Najwyższy priorytet ma RESET, potem przerwanie zewnętrzne INT0 itd.
- Przerwania są numerowane od 1 do 21.
- Obsługując przerwanie o numerze x, mikrokontroler ładuje do licznika programu wartość 2(x – 1)
- Powoduje to wykonanie rozkazu spod tego adresu w pamięci programu.
- Najczęściej jest to skok (rjmp lub jmp) do właściwej procedury obsługi przerwania.
- Uwaga: ATmega16 i ATmega32 obsługują ten sam zbiór przerwań, ale są one inaczej ponumerowane.
- sei() – uaktywnia obsługę przerwań
- cli() – wyłącza obsługę przerwań (domyślnie po sygnale RESET)
Port szeregowy synchroniczny-asynchroniczny USART
- Możliwość pracy synchronicznej i synchronicznej
- Ramka od 5 do 9 bitów
- 1 lub 2 bity stopu
- Dwa rodzaje kontroli parzystości
- Wykrywanie błędu ramki
- Eliminacja szumów
- Możliwość współpracy wieloprocesorowej
Układy peryferyjne mikrokontrolera AVR – zarządzanie energią
Programowe sposoby zarządzania energią
zredukowanie częstotliwościzegara,
wykorzystania trybów wstrzymania (sleep modes).
Wstrzymywanie systemu możliwe przy użyciu instrukcji SLEEP
Interakcje w mikrokontrolerze:
nie pracuje jednostka centralna,
pamięć danych zachowywana,
rejestry wejścia wyjścia zachowywane,
układy peryferyjne pracują w zależności od trybu uśpienia.
TABLICE
Tablicę definiuje się pisząc kolejno: typ danych, nazwę tablicy i objętą parą nawiasów kwadratowych [] liczbę elementów tablicy. Definicję należy zakończyć średnikiem.
Elementami tablic mogą być wartości typów: char, int, float, double oraz: struktury, unie, pola bitowe i wskaźniki.
Elementami tablicy mogą być też same tablice; w taki sposób tworzy się w języku C tablice wielowymiarowe.
Interfejsy programowania i uruchomieniowe
AVRISP mkII
Podstawowe cechy:
- programowanie pamięci Flash i EEPROM,
- ustawianie/kasowanie fuse bitów i lock bitów,
- funkcja aktualizacji oprogramowania celem współpracy z nowymi mikrokontrolerami,
- praca w zakresie napięć 1,8-5,5V,
- regulacja szybkości programowania (od 50 Hz do 8 MHz),
- kompatybilny z interfejsem USB 2.0 (full speed, 12 Mbps),
- zasilany z USB, przez co nie wymaga dodatkowego źródła zasilania,
- zabezpieczenie interfejsu programowanego mikrokontrolera, zabezpieczenie przeciwzwarciowe.
AVR Dragon Podstawowe cechy:
- wspierane interfejsy: SPI, JTAG, PDI, HVSP, PP, aWire,
- do 3 sprzętowych breakpointów,
- do 32 programowych breakpointów,
- wbudowane 128 kB pamięci SRAM,
- wysoka szybkość (256 Kb w 60 s dla XMEGA przez JTAG),
- funkcja aktualizacji oprogramowania celem współpracy z nowymi mikrokontrolerami,
- kompatybilny z interfejsem USB 2.0 (full speed, 12 Mbps),
- wspiera NanoTrace,
- zasilany z USB,
- może zasilać zewnętrzne układy,
- miejsce na wbudowanie podstawek do programowania równoległego (HVSP, PP).
AVR JTAGICE mkII
- programowanie mikrokontrolerów AVR zarówno 8-bitowych, jak i 32-bitowych
Podstawowe cechy: - do 3 sprzętowych breakpointów,
- obsługuje złożone typy zmiennych wraz z zakresem ich dostępności,
- do 128 programowych breakpointów,
- wbudowane 512 kB pamięci SRAM,
- praca w zakresie napięć 1,8-5,5 V,
- wysoka szybkość (256 Kb w 30 s dla XMEGA przez JTAG),
- kompatybilny z interfejsem USB 2.0 (full speed, 12 Mbps), zasilany z USB, przez co nie wymaga dodatkowego źródła zasilania
JTAGICE 3
JTAGICE 3 jest następcą popularnego JTAGICE mkII i przeznaczony został do prac rozwojowych systemów opartych na mikrokontrolerach AVR i AVR32.
Podobnie jak poprzednik, jest w pełni funkcjonalnym programatorem układów tinyAVR, megaAVR, XMEGA i UC3.
Narzędzie obsługuje wszystkie interfejsy wykorzystywane do debugowania i programowania AVR i AVR32 (JTAG, SPI, dWire, PDI).
Zwiększono również odporność urządzenia na wszelkiego rodzaju zakłócenia i uszkodzenia pochodzące z układu programowanego (ESD, odwrotna polaryzacja złącza, zbyt wysokie napięcie zasilania).
Architektura RISC (Reduced Instruction Set Computers)
- ograniczona lista wykonywanych rozkazów,
- ograniczona ilość trybów adresowania,
- operacje wykonywane na rejestrach (brak rozkazów operujących na pamięci – poza rozkazami LOAD i STORE)
- operacje na danych w pamięci wykonywane są według schematu Read-Modify-Write,
- proste kody rozkazów -> uproszczenie dekodera rozkazów,
- prosta budowa rdzenia -> mniejsza ilość elementów -> zmniejszony pobór prądu.
Rdzeń ARMv4T (ARM7)
Rejestry mikrokontrolerów RISC
- zwiększona liczba rejestrów roboczych,
- wszystkie rejestry są 32-bitowe.
Architektura von Neumana Rdzeń ARMv4T (ARM7)
- brak podziału pamięci na pamięć danych i programu
- możliwość wykonywania kodu programu zarówno z pamięci Flash jak i RAM (możliwość modyfikacji kodu w trakcie wykonywania programu).
- 32-bitowa magistrala danych – możliwość jednoczesnego odczytu i zapisu danych, jednostkami 8, 16 lub 32-bitowymi (problem wyrównywania danych).
Rdzeń ARMv4T (ARM7)
Wyjątki obsługiwane przez rdzeń ARM7TDMI
- SWI – napotkanie specjalnej instrukcji SWI
- Abort – próba wykonania instrukcji, przy pobieraniu której wystąpił błąd w dostępie do pamięci lub próba zapisu/odczytu niewyrównanych danych,
- Undefined – napotkanie instrukcji, której rdzeń nie jest w stanie zdekodować,
- nIRQ – przerwanie – pojawienie się na linii wejściowej nIRQ stanu niskiego,
- nFIQ – przerwanie o wyższym priorytecie od nIRQ – wykorzystywane tam gdzie konieczna jest szybka reakcja,
Tryby pracy rdzenia
- tryby zależne od rodzaju obsługiwanego wyjątku (np. po wystąpieniu wyjątku Abort rdzeń pracuje w trybie Abort),
- tryby pracy w czasie wykonywania programu głównego: Supervisor, System, User (różnią się poziomem praw dostępu do zasobów oraz obszarów pamięci mikrokontrolera),
Rdzeń ARMv4T (ARM7)
Tryby pracy rdzenia (z punktu widzenia instrukcji)
tryb ARM – rozkazy zakodowane na 32 bitach:
- dostępna pełna lista rozkazów,
- rozkazy mogą przyjmować większą liczbę parametrów,
- program złożony z instrukcji ARM działa szybciej,
- rozmiar programu jest większy.
tryb Thumb – rozkazy zakodowane na 16 bitach:
- program wykonywany jest wolniej ze względu na konieczność konwersji każdej instrukcji do pełnej instrukcji ARM przed jej wykonaniem,
- rozmiar programu jest mniejszy.
Fazy wykonania rozkazu – praca potokowa
- każdy rozkaz wykonywany jest w trzech cyklach - pobranie, dekodowanie, wykonanie,
- przetwarzanie odbywa się z zastosowaniem potoku trójpoziomowego,
- efektywny czas wykonania rozkazu to jeden cykl
Rdzeń ARMv4T (ARM7)
Kontroler przerwań Przerwania są charakterystycznym elementem architektury mikroukładów. Model kontrolera przerwań omawianego układu można uprościć do dwu obwodów:
Obwód żądania przerwania - odpowiada za to aby zgłosić zapotrzebowanie.
Obwód obsługi przerwania – wystawia on odpowiedni adres obsługi procedury.
Wyjątki IRQ oraz FIQ są zgłaszane przez urządzenia peryferyjne (zwane przerwaniami), natomiast źródłem pozostałych jest rdzeń SAM7.
Aby mogło zaistnieć przerwanie – mając na myśli skok do adresu 0x18 lub 0x1C - musi zostać wyzerowany bit 6 (FIQ) i/lub bit 7 (IRQ).
Są 32 linie przerwań, każda z linii (źródeł) przerwań może mieć nadany priorytet w zakresie 0-7. Każdej z tych linii możliwe jest przyporządkowanie indywidualnej procedury obsługi.
Rdzeń ARMv4T (ARM7)
Przerwanie programowe
- Wyjątek SWI (Software Interrupt) można rozumieć jako „przerwanie wywołane w programie”.
- Rdzeń ARM, napotykając w kodzie maszynowym specjalną instrukcję SWI wywołującą ten wyjątek, przechodzi do jego obsługi.
- Wyjątek SWI zgłaszany może być np. przez program użytkownika pracujący pod kontrolą systemu operacyjnego w celu poinformowania o awarii lub zapotrzebowaniu na pewien zasób sprzętowy.
- Wyjątek SWI można bez większych problemów zgłaszać w programie pisanym w języku C - wystarczy umieścić w kodzie prościutką, jednolinijkową wstawkę asemblera zawierającą samą instrukcję o mnemoniku SWI.
Rdzeń ARMv4T (ARM7)
Przerwania współdzielone
Blok urządzeń systemowy (AT91C_ID_SYS) dysponuje jednym, wspólnym przerwaniem SYS (ang. shared interrupt) o numerze ID=1, które obejmuje następujące urządzenia:
* timery PIT, RTT, WDT,
* interfejs diagnostyczny DBGU,
* Sterownik DMA PMC, * Układ zerowania procesora RSTC,
* Sterownik pamięci MC.
W procedurze obsługi przerwania SYS należy sprawdzić kolejno stan wszystkich urządzeń, czy występują przerwania odmaskowane. Jeżeli przerwanie jest aktywne należy sprawdzić flagę sygnalizującą przerwanie w rejestrze statusu danego urządzenia. Jeżeli flaga jest ustawiona należy wykonać program związany z obsługą przerwania od danego urządzenia.
Rdzeń ARMv4T (ARM7)
Kontroler PIO
- Rdzeń AT91SAM7X256/128 posiada dwa kontrolery PIO: PIOA i PIOB. Zadaniem każdego z kontrolerów jest multipleksowanie zestawu wyprowadzeń urządzeń peryferyjnych.
- Każdy kontroler steruje 32 liniami. Każda linia może być przypisana do jednego z dwu urządzeń peryferyjnych A lub B. Lub też działać jako uniwersalne wyjście/wejście. Na każdej linii
System wbudowany dla układu SAM7TDMI
System wbudowany dla mikrokontrolera SAM7TDMI, zawiera mikrojądro obejmujące (model systemu monolitycznego):
- planistę,
- obsługę Timera systemowego,
- system przerwań.
Środowisko deweloperskie
- Kompilator GCC - główn kompilator dla systemu Linux, dzięki niemu możliwe jest skompilowanie całego systemu wraz z programami dla wielu architektur.
- Uzupełnieniem jest program make automatyzujący proces kompilacji oraz standardowe programy zarządzające pilikami projektu GNU.
- Rolą dostawcy – CodeSourcery – jest przygotowanie paczki binarnej oraz dostarczanie płatnego wsparcia technicznego. Paczki dostępne są na systemy Linuks oraz Windows.
- Istnieją skrypty pozwalające samemu przygotować narzędzia do kompilacji bezpośrednio ze źródeł np. summon-arm-toolchain.
Wywołania systemowe
- Obsługa wywołań systemowych w autorskim systemie wbudowanym odbywa się w kilku krokach:
- Wywołanie funkcji obudowywującej
- Przerwanie programowe SWI przekazanie sterowania do systemu
- Wybranie odpowiedniej f systemowej z tabeli (dispatch table) w zależności od nr
- Wybranie deskryptora z tablicy otwartych deskryptorów lub deskryptorów zainicjowanych
- Wykonanie operacji za pomocą funkcji z wybranego deskryptora
- Oddanie sterowania do programu
Wątki i przełącznik wątków
System dedykowany posiada ograniczoną ilość procesów do 1 z powodu braku MMU. Dla uproszczenia oraz w wyniku braku możliwości efektywnego wyegzekwowania ochrony pamięci. Czy też realnej izolacji.
Wyróżniono minimum 3 elementy systemu potrzebne do uzyskania wielowątkowości.
* odpowiednio przyszykowana procedura obsługi przerywania zapewniająca zachowanie kontekstu procesu oraz jego przywrócenie tuż przed zakończeniem
* procedura wywoływana co interwał czasowy, rozpoczynająca epoki i zmieniająca kontekst
* procedura szeregująca planisty
Zarządzanie zasobami
Zarządzenia zasobami odbywa się poprzez deskryptory. Deskryptor posiadają :
* Każdy sterownik urządzenia
* Każdy wątek
* Zbiory danych (w tym pliki)
Każdy deskryptor ma dostępną podstawową grupę operacji, dodatkowo w zależności od rodzaju posiada dodatkowy zestaw pól. Funkcje/pola dostępne dla każdego deskryptora jest to:
- Otwarcie
- Zamknięcie
- Zapis
- Odczyt
- Sprawdzenie gotowości
- Stan deskryptora (otwarty, zamknięty)
Funkcje/pola dostępne dla deskryptora wątku
- Zestaw rejestrów określający stan procesora
- Stan wątku
- Punkt rozpoczęcia
Funkcje/pola dostępne dla deskryptora urządzenia
- Zapis do rejestrów kontrolnych urządzenia
- Procedura obsługi przerwania
- Niektóre deskryptory mogą być współdzielone.
Organizacja pamięci systemu wbudowanego
- Mapowanie pamięci po uruchomieniu płytki SAM7-EX256, w lokacje 0x0000 0000 mapuje pamięć flash czyli sekcje .text. Z stąd też wykonywany jest program. Wartości adresów zostały odczytane za pomocą narzędzi nm oraz objdump.
- Struktury jądra przechowywane są w statycznych strukturach przechowywanych w rejonie zmiennych globalnych. W statycznych tablicach.
Lokalne interfejsy cyfrowe w systemach wbudowanych
EIA-232
prosty, wiekowy, standardowy interfejs szeregowy, służący do komunikacji pomiędzy urządzeniem nadrzędnym, a peryferyjnym.
I2C (TWI)
interfejs będący poprzednikiem innych współczesnych interfejsów szeregowych w tym CAN. Pozwala na szybka komunikację (do 400kb/s, dla trybu multimaster do 3,4 Mb/s).
SPI –
interfejs o możliwościach i właściwościach podobnych do I2C, o większej szybkości transmisji danych sięgającej kilka Mb/s. Stworzony przez Motorolę, obecnie jest dość często wykorzystywany przez innych producentów. Interfejs ten został standardowo wbudowany w wiele mikrokontrolerów.
USB (od ang. Universal Serial Bus), uniwersalna magistrala szeregowa
port lub lokalny interfejs szeregowy opracowany przez firmy Microsoft, Intel, Compaq, IBM i DEC.
* USB 1.1 – prędkość transmisji (full speed) 12 Mbit/s i (low speed) 1,5 Mbit/s
* USB 2.0 (high speed) 480 Mbit/s
* USB 3.1 Gen 1 (SuperSpeed) (wcześniej noszący nazwę USB 3.0) Urządzenia zgodne z warunkami nowej specyfikacji mogą pracować z szybkością 5 Gbit/s.
* USB 3.1 Gen 2 (SuperSpeed+) - prędkość maksymalna to 10 Gbit/s, a moc może wynosić 100 W.
* USB 3.2 - wprowadza dwa nowe tryby SuperSpeed+ przez złącze USB typ C o szybkości transmisji danych wynoszące 10 i 20 Gbit/s (1250 i 2500 MB/s).
UART – Universal Asynchronous Receiver Transmitter:
- Standard rozwinięty już w latach 60’,
- Prosty, uniwersalny, dobrze udokumentowany,
- Wolna komunikacja: max. 1Mbit/s,
- Po jednym przewodzie komunikacyjnym w każdym z kierunków plus wspólna masa sygnałowa,
- Asynchroniczna – odbiornik i nadajnik muszą wcześniej znać szybkość transmisji oraz format ramki,
- Bity START i STOP normują przesyłanie,
- Możliwe dołączenie informacji o parzystości (kontrola błędów).
Dwa podstawowe typy komunikacji szeregowej:
- synchroniczna – równolegle z ciągiem bitów przesyłany jest sygnał synchronizujący, określający kiedy dane są ważne ,
- asynchroniczny – dane nie są związane z żadnym sygnałem synchronizującym – parametry transmisji trzeba ustawić wcześniej – ręcznie, a do danych trzeba dodać pewne informacje mogące zsynchronizować dane przesyłane i odbierane (np.: ramka 8, N, 1; 8, E, 2),
USART - Universal Synchronous and Asynchronous Reciever and Transmitter
- Interfejs komunikacyjny, dostępny w większości popularnych mikrokontrolerów.
- W niektórych występuje kilka pracujących niezależnie od siebie USART-ów.
Ramka danych w transmisji UART wygląda następująco:
- Zawiera bit startu, sygnalizujący początek kolejnej ramki (od 5 do 9 bitów danych), bit parzystości, służący do kontroli błędów odbioru.
- Może działać w trzech trybach - brak kontroli (no), suma zawsze parzysta (even), suma zawsze nieparzysta (odd).
- Każdą ramkę zamyka od jednego do dwóch bitów stopu. Najpopularniejszą konfiguracją jest 8 bitów danych, brak kontroli parzystości i 1 bit stopu.
Moduł diagnostyczny DBGU
Cechy portu diagnostycznego DBGU (DeBuG Unit):
- Asynchroniczna transmisja danych zgodna ze standardem EIA-232 (8 bitów danych, jeden bit parzystości z możliwością wyłączenia),
- Możliwość zgłaszania przerwań systemowych współdzielonych (PIT, RTT, WDT,DMA, PMC, RSTC, MC),
- Analiza poprawności odebranych ramek,
- Sygnalizacja przepełnionego bufora TxD lub RxD,
- Trzy tryby diagnostyczne: zdalny loopback, lokalny loopback oraz echo,
- Maksymalna szybkość transmisji rzędu 1 Mbit/s,
- Możliwość komunikacji z rdzeniem procesora COMMRx/COMMTx.
FIFO (ang. First In, First Out) –
przeciwieństwem stosu LIFO jest kolejka, bufor typu FIFO (pierwszy na wejściu, pierwszy na wyjściu), w którym dane obsługiwane są w takiej kolejności, w jakiej zostały dostarczone (jak w kolejce do kasy)
Kolejka FIFO
- Dane do kolejki FIFO mogą być wpisywane przez kilka niezależnych aplikacji, wątków lub urządzeń. W takiej sytuacji dostęp do kolejki kontrolowany jest przez Semafor (zmienna globalna).
- Dane zgromadzone w kolejce wysyłane są w kolejności w jakiej zostały wpisane.
Zapis danej do kolejki FIFO: - Zwiększ wskaźnik Head o jeden, zapisz daną.
Odczyt danej z kolejki FIFO: - Odczytaj daną, zwiększ wskaźnik Tail o 1.
W przypadku, gdy Tail lub Head wskazuje na ostatni dostępny element kolejki zamiast inkrementacji wskaźnik jest zerowany. Pozwala to na płynne przesuwanie wskaźników – bufor kołowy (ang. circular buffer)
Ramka w I2C
- Bit startu (S) SDA 10 dla SCL = 1
- Bit stopu (P) SDA 01 dla SCL = 1
- powtórzenie startu (Sr) start jest generowany zamiast stopu
- Stany magistrali
- busy … po S i przed następnym P
- Wolna … po P i przed następnym S
Data Transfer MagistraIa I2C
- Bity danych wysyłane są po bicie startu (S lu Sr)
- Transmitowany jest pojedynczy bajt
- Bajt = 8 bits + jeden acknowledge bit (ACK)
- Bit MSB (most significant bit) nadawany jako pierwszy
- slave adres jest traktowany jako dana
- Transmitowany jest pierwszy bajt * W trakcie transferu:
- master jest nadajnikiem
- Adresowany slave jest odbiornikiem
- Następny bajt: wysyłany jest po ostatnim bicie w bajcie adresowym
- master ustawia SCL = 0 i generuje impulsy dla innych bitów danych
- 8 impulsów dla bitów danych są zakończone przez impuls dla bitu ack.
- po ack. * master przygotowuje się do generowania impulsów pod następny bajt
- slave jest w stanie HOLD SCL low master przechodzi do stanu oczekiwania
Masters and Slaves
- Urządzenie typu Master
- Kontroluje linię SCL
- Generuje bity startu i stopu
- Kontroluje (generuje) adresy innych urządzeń
- Urządzenie typu Slave
- Urządzenie adresowane (podległe) master
- Nadajnik/ Odbiornik (Transmitter/Receiver)
- master lub slave
- master-nadaje (wysyła) daną do slave-odbiornika
- master-odbiera żądaną daną z urządzenia slave-nadajnika
Cechy interfejsu TWI procesora ARM firmy ATMEL:
Moduł TWI procesorów ARM jest odpowiednikiem standardu opracowanego przez firmę Philips (firma Philips posiada patent na interfejs I2C). Cechy interfejsu TWI procesora ARM f:
* Zgodny ze standardem I2C,
* Praca w trybie Master, Multimaster lub Slave,
* Umożliwia dołączenie urządzeń zasilanych napięciem 3,3 V,
* Transmisja danych z częstotliwością zegara do 400 kHz,
* Transfery poszczególnych bajtów wyzwalane przerwaniami,
* Automatycznie przejście do trybu Slave w przypadku kolizji na magistrali
* (Arbitration-lost interrupt),
* Przerwanie zgłaszane, gdy zostanie wykryty adres urządzenia w trybie Slave,
* Automatyczne wykrywanie stanu zajętością magistrali,
* Obsługa adresów 7 i 10-cio bitowych.
Cechy interfejsu SPI:
- Szeregowa transmisja synchroniczna,
- Transfer full duplex, master-slave lub master-multi-slave,
- Duża szybkość transmisji (>12 Mbit/s),
- Zastosowanie:
- układy peryferyjne (ADC, DAC, RTC, EEPROM, termometry, itp),
- sterowanie pomocnicze (matryca CCD z szybkim interfejsem równoległym),
- karty pamięci z interfejsem szeregowym SD/SDHC/MMC
Cechy modułu SPI układu SAM7X:
- Obsługa transferów w trybie Master lub Slave,
- Bufor nadawczy, odbiorczy oraz bufor transceivera,
- Transfery danych od 8 do 16 bitów,
- Cztery programowalne wyjścia aktywujące urządzenia dołączone do SPI (obsługa do 15 urządzeń),
- Programowalne opóźnienia pomiędzy transferami,
- Programowalna polaryzacja i faza zegara.
Charakterystyka magistrali USB Standardy USB:
- USB 1.1 - jego transfer wynosi, w zależności od typu urządzenia 1.5 lub 12 Mbit/s.
- USB 2.0 - osiąga transfer do 480 Mbit/s.
- USB 3.0 – transfer powyżej => 5 Gb/s.
Magistrala USB tworzy strukturę warstwową, jednak zachowuje logiczną strukturę gwiazdy, a komunikacja przebiega tak, jakby urządzenia były podłączone bezpośrednio do hosta. Gdy hub jest odłączony, wszystkie urządzenia podłączone do huba zostają usunięte z logicznej topologii hosta.
Przepływ danych w systemie USB
Punkty końcowe posiadają cechy, które determinują typu transferów pomiędzy nimi a oprogramowaniem klienckim. Endpointy opisywane są przez:
* zalecenia częstotliwości taktowania magistrali,
* numer endpointu,
* rozmiar pakietów,
* zachowanie w wypadku błędów w transmisji,
* typ transferu,
* kierunek przepływu danych.
Proces konfiguracji
Enumeracja (ang. Enumeration) – konfiguracja urządzeń przeprowadzana po dołączeniu lub odłączeniu nowego urządzenia od magistrali. Proces konfiguracji przeprowadzany jest przez urządzenie nadrzędne (Master). Master przypisuje indywidualne adresy do urządzeń oraz ustanawia podstawowe parametry transmisji:
* Adres urządzenia w przestrzeni USB,
* Rodzaj transferu,
* Kierunek transmisji danych (read, write, read-write),
* Rozmiar przesyłanych pakietów,
* Szybkość transmisji,
* Adresy buforów używanych przez sterowniki urządzenia,
* Prąd pobierany przez urządzenie.
Rodzaje sygnałów sterowania w magistrali USB :
- Sygnał zerowania SE0 (single ended zero) - napięcie pary przewodów sygnałowych D+ i D- wprowadzone w stan 0 logicznego na 2,5 mikrosekundy.
- Zawieszenie działania urządzenia ma miejsce w razie wykrycia stanu spoczynkowego linii sygnałowych przez co najmniej 3 ms. Zawieszenie trwa nie dłużej niż 10 ms.
- Wznowienie działalności urządzenia następuje w razie wykrycia stanu logicznego K linii sygnałowych, czyli 0 dla trybu FS lub 1 dla LS. Wznowienie działania wymusza kontroler USB przez ustawienie stanu logicznego K szyny przez co najmniej 20 ms.
- Znacznik końca pakietu EOP (End of Packet) składa się z 2-bitowego sygnału zerowania SE0 oraz 1-bitowego sygnału o stanie logicznym J, tzn. 1 dla FS lub 0 dla LS.
Rodzaje transferu danych
- masowy (asynchroniczny);
- izochroniczny (synchroniczny);
- obsługi przerwania;
- sterująco-kontrolny.
Blok UDP w układzie SAM7
Typowe podłączenie mikrokontrolera SAM7 do magistrali USB Aby host wykrył, że urządzenie full-speed zostało podłączone do magistrali USB, należy zagwarantować podciągnięcie linii DP do plusa zasilania. Obecność hosta na magistrali można wykryć przez monitorowanie linii zasilającej w interfejsie USB.
Blok UDP obsługuje wszystkie cztery transmisje zdefiniowane w standardzie:
* kontrolny (ang. Control) – EP0,
* masowy (ang. Bulk),
* przerwaniowy (ang. Interrupt),
* izochroniczny (ang. Isochronous).
Mikrokontrolery SAM7 posiadają 6 punktów końcowych (endpointów) EP0 .. EP5, z których każdy może obsługiwać różne typy transferów.
* Konfiguracja endpointu polega na określeniu jego numeru, kierunku, maksymalnego pakietu danych oraz rodzaju transferu, w jakim będzie pracował dany endpoint.
* Każde urządzenie USB musi obsługiwać transfer kontrolny, który wykorzystywany jest do konfiguracji urządzenia podczas enumeracji.
Blok UDP w układzie SAM7
Potwierdzenie STALL
- Urządzenie USB przesyła do hosta potwierdzenie STALL aby poinformować go o braku możliwości przekazu danych ze względu na wystąpienie poważnego błędu w urządzeniu.
- Aby układ UDP wygenerował pakiet STALL należy ustawić bit FORCESTALL w rejestrze CSR odpowiedniego endpointu.
- Po pomyślnym wysłaniu pakietu STALL zostanie ustawiony bit STALLSENT w rejestrze CSR
Transakcja Setup
- Setup - specjalny typ transakcji wykorzystywanej podczas transferu kontrolnego.
- Host wysyła do urządzenia pakiet-token Setup oraz pakiet danych Data0, a następnie urządzenie wysyła do hosta pakiet ACK potwierdzający odebranie danych.
Transakcja Data IN
- Podczas tej transakcji host wysyła do urządzenia pakiet-token IN, następnie urządzenie w odpowiedzi wysyła do hosta pakiet Data IN.
- Na końcu w zależności od poprawności danych host wysyła pakiet potwierdzający ACK, NAK lub w przypadku błędu STALL
Transakcja Data OUT
- Podobnie jak Data IN transakcja ta jest wykorzystywana jest przez wszystkie rodzaje transferów USB.
- Host wysyła do urządzenia pakiet-token OUT a następnie pakiet danych Data OUT
- Po odebraniu danych urządzenie przesyła do hosta pakiet potwierdzający ACK, NAK lub w przypadku błędu STALL.
- Po odebraniu pakietu-tokena, układ UDP mikrokontrolera automatycznie przyjmuje dane i wysyła pakiet potwierdzający ACK do hosta.
- Jeżeli poprawnie odebrano pakiet danych bit RX_DATA_BK0 w rejestrze CSR odpowiedniego endpointu zostaje ustawiony.
- Liczbę odebranych bajtów wskazuje pole bitowe RXBYTECNT.
- Następnie program użytkownika powinien odczytać odpowiednią ilość bajtów danych z kolejki FIFO po przez rejestr FDR odpowiedniego endpointu.
- Po odczycie przesłanych danych program użytkownika musi wyzerować bit RX_DATA_BK0 powiadamiając układ o dostępności kolejki FIFO.
Blok UDP w układzie SAM7
- Stan „Attached” (podłączenia) występuje, gdy urządzenie jest podłączone do magistrali oraz urządzenie sygnalizuje swoją obecność przez podciągnięcie linii DP do plusa zasilania.
- Urządzenie przechodzi do stanu „Powerd” (zasilania). W tym stanie do układu UDP musi być załączony sygnał zegarowy.
- Nadajnik i odbiornik mogą pozostać zablokowane. Po podłączeniu urządzenie oczekuje na tzw. „end-of-bus reset” sygnał oznaczający rozpoczęcie procesu enumeracji.
- Jeżeli układ UDP wykryje to zdarzenie bit ENDBUSRES w rejestrze ISR zostaje ustawiony. Dodatkowo ustawienie tego bitu może powodować przerwanie.
- Po obsłużeniu tego przerwania urządzenie przechodzi do stanu „Default” (domyślny). W tym stanie należy uaktywnić endpoint 0 przez ustawienie bitu EPEDS w rejestrze CSR[0].
- Uaktywniamy nadajnik i odbiornik przez wyzerowanie bitu TXVDIS w rejestrze TXVC.
- Po odebraniu standardowego żądania hosta SET_ADDRESS, urządzenie przechodzi do stanu „Addressed” (zaadresowane). W tym stanie należy ustawić bit FADDEN w rejestrze GLB_STAT, oraz wpisać adres przydzielony przez hosta do rejestru FADDR.
- Kiedy urządzenie odbierze standardowe żądanie hosta SET_CONFIGURATION, przechodzi do stanu „Configured” (skonfigurowane). W tym stanie należy skonfigurować odpowiednio wszystkie używane endpointy.
- Po okresie bezczynności na magistrali urządzenie powinno przejść do stanu „Suspend” (obniżonego poboru mocy). Po wykryciu bezczynności przez układ UDP mikrokontrolera, bit RXSUSP w rejestrze ISR zostaje ustawiony.
- Należy wyzerować bit RXSUSP przez zapisanie rejestru ICR, a następnie zmienić stan mikrokontrolera na „Suspend”.
Sterownik UDP i USB
Magistrala USB jest bardzo skomplikowana.
Sterownik interfejsu podzieli się na dwie części:
sterownika 1 poziomu (UDP) – obsługującego blok UDP mikrokontrolera,
sterownika 2 poziomu (USB) – obsługującego stos USB.
Z uwagi na dużą ilość funkcji należących do sterownika przedstawiono załączniku 3 definicje wszystkich funkcji. Opis najważniejszych funkcji – patrz: Blok UDP SAM7 materiały do wykładu.pdf - str. 16 – 17
Komunikacja między urządzeniami MODBUS
Urządzenia MODBUS komunikują się:
* za pomocą techniki master-slave, w której tylko jedno urządzenie (master) może inicjować transakcje (zwane zapytaniami).
* urządzenia (urządzenia podrzędne – slave) odpowiadają, dostarczając żądane dane do urządzenia master lub podejmując żądane działanie w zapytaniu.
* slave to dowolne urządzenie peryferyjne (przetwornik we / wy, zawór, napęd sieciowy lub inne urządzenie pomiarowe), które przetwarza informacje i wysyła je do urządzenia master za pomocą MODBUS.
* master mogą zwracać się do indywidualnych slave lub mogą inicjować wiadomość rozgłoszeniową dla wszystkich slave
* slave zwracają odpowiedź na wszystkie zapytania kierowane do nich indywidualnie, ale nie odpowiadają na zapytania o transmisję.
MODBUS REGISTER MAP
Urządzenia MODBUS zwykle zawierają mapę rejestru.
Działają funkcje MODBUS:
* rejestrowanie rejestrów map w celu monitorowania,
* konfigurowania
* sterowania we / wy modułu.
wymagana znajomość mapy rejestrów urządzenia, aby lepiej zrozumieć jego działanie.
przesyłanie danych było zorganizowane pod kątem rejestrów 16-bitowych (format całkowity) lub jako informacja o statusie pod względem bajtów danych.
dodano nowe typy danych, zwłaszcza w celu uzyskania wyższej rozdzielczości przesyłanej wartości.
protokół został przyjęty dla nowych mediów przekazu, powstały dialekty, takie jak Modbus Plus lub Modbus / TCP.
Szeregowe tryby transmisji sieci MODBUS
ASCII Transmission Mode - każdy bajt znaków w wiadomości jest wysyłany jako 2 znaki ASCII. Ten tryb umożliwia interwały czasowe do jednej sekundy pomiędzy znakami podczas transmisji bez generowania błędów.
RTU (Remote Terminal Unit) Transmission Mode – każdy bajt wiadomości zawiera dwa 4-bitowe znaki szesnastkowe, a wiadomość jest przesyłana ciągłym strumieniem. Większa efektywna gęstość znaków zwiększa przepustowość w trybie ASCII przy tej samej szybkości transmisji.
MODBUS MESSAGE FRAMING
- Ramka wiadomości służy do oznaczania początkowego i końcowego punktu wiadomości, umożliwiając urządzeniu odbierającemu określenie, które urządzenie jest adresowane, oraz określenie, kiedy wiadomość zostanie ukończona.
- Umożliwia także wykrycie częściowych komunikatów i zgłoszenie błędów.
- Komunikat MODBUS jest umieszczany w ramce danych przez urządzenie nadawcze. Każde słowo tej wiadomości (w tym ramka) jest również umieszczane w ramce danych, która dołącza bit początkowy, bit zatrzymania i bit parzystości.
- W trybie ASCII rozmiar słowa wynosi 7 bitów, podczas gdy w trybie RTU; rozmiar słowa to 8 bitów (efektywnie 11 bitami, gdy uwzględnione są bity startu, stopu i parzystości ramki danych).
Nie należy mylić ramki danych z ramką danych pojedynczego bajtu (tryb RTU) lub 7- bitową (tryb ASCII). Struktura ramki danych zależy od trybu transmisji (ASCII lub RTU). W MODBUS Plus protokół sieciowy obsługuje tworzenie ramek wiadomości i używa końcowe ograniczniki charakterystyczne dla sieci.
ASCII Mode Message Frames
- komunikaty rozpoczynają się od znaku dwukropka “:” (ASCII 3AH) i kończą znakiem pary znaków końca linii karetki (CRLF, ASCII 0DH i 0AH).
- Jedynymi dopuszczalnymi znakami dla wszystkich pozostałych pól są cyfry szesnastkowe 0-F.
RTU Mode Message Frames
- Komunikaty rozpoczynają się od cichego interwału o długości co najmniej 3,5 znaków wprowadzonych jako wielokrotność czasów znaków przy prędkości transmisji używanej w sieci.
- Pierwsze przesyłane pole to adres urządzenia. Dopuszczalne znaki przesyłane dla wszystkich pól są wartościami szesnastkowymi 0-F.
- Urządzenie sieciowe stale monitoruje sieć, łącznie z cichymi interwałami, a gdy pierwsze pole jest odbierane (adres) po cichym interwale wynoszącym co najmniej 3,5 znaków czasu, urządzenie dekoduje go, aby określić, czy jest to adresowane urządzenie.
- Po ostatnim przesłanym znaku podobny cichy interwał o długości 3,5 znaku oznacza koniec wiadomości, a po tym interwale może rozpocząć się nowa wiadomość.
- Cała wiadomość musi być przesłana jako ciągły strumień. Jeśli cichy interwał więcej niż 1,5 znaków pojawia się przed zakończeniem ramki (nie ciągły strumień), urządzenie odbierające usuwa niekompletną wiadomość i zakłada, że następny bajt będzie polem adresu nowej wiadomości.
MODBUS FUNCTIONS
- Pole kodu funkcji ramki wiadomości będzie zawierało dwa znaki (w trybie ASCII) lub 8 bitów (w trybie RTU), które informują slave, jaki rodzaj akcji należy podjąć.
- Poprawne kody funkcji są z zakresu od 1 do 255, ale nie wszystkie kody będą dotyczyły modułu, a niektóre kody są zarezerwowane do wykorzystania w przyszłości
Zadania realizowane przez sterowniki
- Sterowanie maszynami lub procesami zgodnie z zapisanym programem
- Realizacja funkcji diagnostycznych sterowanych urządzeń i procesów (również autodiagnostyka)
- Kontrola układów zabezpieczeń (specjalne sterowniki bezpieczeństwa np. Wieland)
- Komunikacja z systemami zarządzania produkcją i urządzeniami typu HMI (panele operatorskie, monitory itp.) umożliwiająca na bieżąco prezentację i archiwizację stanu procesów produkcyjnych (współpraca z systemami SCADA)
CECHY STEROWNIKÓW PLC
- programowalność – zapisywanie algorytmu działania sterownika do pamięci sterownika w postaci programu,
- uniwersalność – wykonywanie różnych algorytmów bez konieczności zmian w budowie systemów automatyki,
- funkcjonalność – współpraca z układami pomiarowymi, elementami wykonawczymi i innymi urządzeniami sterującymi,
- elastyczność – możliwość dostosowania odpowiedniego sterownika do danego systemu automatyki,
- niezawodność – wynikająca z zastosowania różnych elementów sprzętowych i programowych zabezpieczających przed uszkodzeniem sterownika,
- komfort obsługi – dzięki dobrze rozwiniętemu oprogramowaniu narzędziowemu,
- niskie koszty – nawet przy zastosowaniu sterowników PLC do małych zadań automatyki.