1 of 46

Upravljanje u relanom vremenu

1

ETF, SPECIJALISTICKE I MASTER STUDIJE

Školska: 2024-2025

Predavač: Prof. dr Radovan Stojanović

Asistent: Dr Dejan Karadaglić

stox@ucg.ac.me

2 of 46

Upravljanje u realnom vremenu

2

Sadržaj kursa :

Dio I

  1. Uvod u real-time sisteme i aplikacije
  2. Značaj vremena, diskretni, kontinualni mod
  3. Ulazno-izlazni elementi
  4. CPU, Mikrokontroler, SOC-FPGA, komunikacija
  5. Real time operativni sistemi (RTS)

Dio II

  1. PLC
  2. LABVIEW
  3. Integrisane, internet aplikacije
  4. Komunikacije u realnom vremenu
  5. Razno

3 of 46

Upravljanje u realnom vremenu…

3

Metodologija rada:

  • Praktičnog tima
  • Uvodna predavanja
  • Samostalno vjezbanje i laboratorija
  • Seminarski
      • Bodovanje
    • Prisustvo: 5 poena
    • Aktivnost na casu: 5 poena
    • Laboratorija: 3x10 poena (3x5 u grupi + 3x5 pojedinačna provjera)
    • Usmeni provjere znanja: 20 poena (pojedinačna provjera)
    • Zavrsni seminarski: 40 poena

4 of 46

Upravljanje u realnom vremenu…

4

Resursi:

5 of 46

Ulazno-izlazni elementi,�CPU, kontrola procesa�

  • Primjer uopstene (zatvorene) petlje

5

CPU

Input

Output

6 of 46

Ulazno-izlazni elementi,�CPU, kontrola procesa

  • Primjer upravljanja, zatvorena petlja

6

7 of 46

Kontrola industrijskih procesa

7

  • Zatvorena petlja, kontrola temperature.

8 of 46

Input, kondicioniranje signala

  • Akvizicija ulaznog analognog signal.

8

9 of 46

Input + CPU

  • Primjer. Signal iz pretvaraca temperature. Dioda se upotrebljava kao temp. sensor. A/D konverziju i ostalu obradu realizuje MCU u formi Arduina. Provjeriti concept.

9

(0°C), podesavanje sa P1, voda sa ledom, P1, Viz=0V

(100°C), podesavanje sa P2, vrela voda, P2, Viz1=1V, 10mV po °C

Opseg A/D, 10bitni, 0-1023 , Vref=5V, 0-5V u Voltima,

Ekvivalent V=N*Vref/1024; T=V*1000/10=V*100;

A/D

MCU

Vref=5V

T=25.5

10 of 46

Input + CPU

  • Primjer “open loop” kontrole
  • Citanje i ispis temperature sa NTC senzora
  • Arduino u funkciji CPU.

10

ARDUINO

Terminal

11 of 46

Input+CPU

Citanje Vernier temp senzora.

11

k0 = 1.02119E-3

k1 = 2.22468E-4

k2 = 1.33342E-7

Vref

12 of 46

Ulaz+CPU

CPU bazirana akvizicija signala

12

13 of 46

CPU

Pooling i interrupt

13

Pooling bazirana kontrola

Interrupt bazirana kontrola

Način generisanja hardverskog

Interapta sa spoljasnjeg pina

14 of 46

CPU

  • Pooling – Interrupt (eksterni)
  • Primjer#1 (hardverski interrupt na Arduinu)

14

15 of 46

CPU

  • Interrupt (interni-softwerski)
  • Primjer#2 (softverski interrupt na Arduinu)

15

16 of 46

CPU

16

PD2

PD3

Prekidi (interrupts)...hardverski + softwerski

17 of 46

Vježba #1 �(Poling vs Interrupt)

17

  1. Povezati Taster1 i Taster2 na ulazne pinove Arduina, koji imaju i ulogu INT0 i INT1, kao sto je prikazano na slici. LED3 se pali (blinka ) iz glavne petlje programa u trajanu 3s sa pauzom 3s, period 6s. Napraviti program.
  2. Iz glavne petlje se pritiskaju TASTER1 i TASTER2 u trajanju 0.5s , random, a nakon njihovog pritiskanja se pale LED1 i LED2 u trajanju 1s u zavisnoti da li je pritisnut TASTER1 ili TASTER2.
  3. Komentarisati program i situaciju?
  4. Napraviti program koji ipak pouzdano pali LED1 i LED2, u glavnoj petlji, bez obzira na duzinu blinka LED3.
  5. Dati tasteri generisu hardverske interapte INT0 i INT1 koji pale LED1 ili LED2 u trajanju 1s. Paziti na ivicu na koju se generise interupti INT0 i INT1. Trajanje paljenja 1s (LED1 i LED2) generisati pomocu TIMER interrupta bez obzira da li je LED3 upaljena ili ugasena. Napraviti program.

Priloziti kod i video objasnjavajuci gornje slucajeve.

18 of 46

Vjezba #2 Akvizicija u realnom vremenu

a) Povezivanje temperaturnog senzora na Arduino, prikaz izmjerene temperature na terminal emulatoru i monitoru grafičkom i poredjenje sa alarmnom vrijednoscu (kada se pali LED).

b) Dinamometra na Arduino, prikaz izmjerene vrijednosti sile na terminal emulatoru i monitoru grafičkom i poredjenje sa alarmnom vrijednoscu (kada se pali LED).

c) Projektovanje pretvarača naponskog izlaza u strujni i obrnuto (0-5V u 4-20mA) i (4-20mA u 0-5V), koristeći operacione pojačavače LM358, LM324 i ostale komponente. Provjerit rad temperatuenog senzora sa strujnim izlazom. Na drugom udaljenom Arduninu čitati temperaturu.

Za informaciju o temperaturnom senzoru koristiti https://www.vernier.com/files/manuals/sts-bta/sts-bta.pdf

Ponoviti gornji primjer za slucaj dinamometra https://www.vernier.com/files/manuals/hd-bta/hd-bta.pdf

18

Konverter industrijski visenamjenski

19 of 46

Vježba #3�Akvizicija u realnom vremenu...

a) Povezati temperaturni senzor na Arduino. Vršiti odabiranje signal sa periodom 1s, 0.5s i 0.2s. Vrijeme odabiranja generisati sa Tajmer interruptom. Prikazati odabirke na preko serijskog terminala i serijsko plotera.

b) Povezati dinamometar na Arduino. Vršiti odabiranje signal sa periodom 1s, 0.5s i 0.2s. Vrijeme odabiranja generisati sa Tajmer interruptom. Prikazati odabirke preko serijskog terminala i serijskog plotera

c) Istovremeno odabarita Temp sensor I dinamometar sa frekvencijama odabiranja 800ms i 200ms respektivno i slanje vrijednosti na serijski terminal svakih 200ms u formi Tem=…, Dyn=….

19

20 of 46

Vježba 4�Zatvorena petlja ON-OFF

  • Citamo informaciju o velicini sa Senzora. Obradjujemo preko Arduina i djelujemo na potrosac. Upravljamo preko Terminala racunara.

20

ARDUINO

Sensor

Termo

Photo

Solid State

Relay

Potrosac

(Sijalica)

220V

21 of 46

Output

21

22 of 46

Output

  • motor (asihroni) regulacijom uglom paljenja
  • Primjena asinhronih elektromotora u industriji i ostalim uslužnim djelatnostima je velika, pumpe, kompresori, mlinovi, mešalice, pokretne trake, dizalice, žičare i ski liftovi, električna vozila, veš mašine, kompresori za frižidere, kompresori u klima uređajima.Regulacija ovih metora je vrlo važna i može se obaviti na više načina, najčešće regulacijom ugla paljenja i invertorski.
  • Regulacija uglom paljenja. Slučaj omsko opterećenje. Struja prati oblik napona na potroša i snaga je funkcija napona i ugla paljenja.

22

23 of 46

Output

  • Regulacija ugla paljenja…
  • Slučaj, otporno-induktivno opterećenje. Zbog prisustva induktivnosti u potrošaču, kada upalimo tiristor struja ne može trenutno promijeniti vrijednost, već počinje da raste od nule. Iz istog razloga se tiristor ne gasi pri prolasku napona potrošača kroz nulu jer struja nastavlja da teče

23

24 of 46

Output

  • Regulacija ugla paljenja…
  • Pri vezi u “zvijezdu” sa izvedenim zvezdištem trofazna sprega se svodi na tri monofazna podešavača napona sa antiparalelnim tiristorima. Kod većih snaga antiparalelni tiristori se vezuju u “trougao”. Pri sprezi antiparalelnih tiristora u “trouglu” manja je srednja i efektivna vrednost struje kroz jedan tiristor, u odnosu na spregu “zvijezda”, i to 1.73 puta.

24

25 of 46

25

Input+CPU+Оutput

  • Sinhronizacija...
  • Za realizaciju upravljanja vrlo je važno imati referentnu tačku napona. To je tačka prolaza kroz 0, zero corssing, iz negativne u pozitivnu poluperiodu i obrnuto. U tim intervalima je potrebno generisati sinhro impulse na osnovu kojih se vrši process regulacije. Ti sinhro impulse izazivaju hardverske interupte u MCu i drugim procesorskim kolima.

26 of 46

Input+CPU+Оutput

Sinhronizacija

Vjezba #5

  1. Realizovati kolo za sinhronizaciju prema donjoj semi i povezati ga na Arduino kao na slici.

  • Posmatrati i snimiti sinhro impulse (“Synhro”) dovedene na pinu INT0
  • Generisati i snimiti impulse paljenja (regulacija ugla paljenja “FIRE”), koji se generisu na pinu PD7 kontrolera i regulisati ugao paljenja.
  • Realizovati paljenja solid state relea na “0” mreznog napona.
  • Za pomoc pogledati resurse

26

27 of 46

Input+CPU+Output

27

Sema kola (makete) za AC kontrolu, regulacijom ugla paljenja.

Podesna za spajanje na Arduino. ZC se spaja na hardverski INTerrupt

dok ON-OFF na izlazni pin Arduina kojim se reguliše ugao paljenja.

28 of 46

Sinhronizacija, ugao paljenja

  • Vjezba #6
  • Proučiti Sinhro circuit3, koje preko “greca” i optokaplera, direktno iz 220V, generise sinhro impulse, a preko triaka i optotriaka, regulise ugao paljenja. Sema se nalazi i na maketi.
  • Detektovati impulse za sinhronizaciju na nivou hardverskog interrupta i izmjeriti frekvenciju mreze pomocu njih i eksternih interapta.
  • Genererisati impuls paljenja triaka. Ugao paljenja se podesva sa dva tastera- veci ili manji ugao. Koristiti Sinhro circuit3 podesen na 50Hz. Uociti efekat promene ugla paljenja. Koristiti maketu, a kao potrosac sijalicu sa uzarenim vlaknom.
  • Napraviti softver soft-start, soft-stop. Taster 1 je soft-start, a taster 2 soft-stop. Odgovarajuca vremena stoft-start i soft-stop su 4sec. Koristiti maketu, a kao potrosac sijalicu sa uzarenim vlaknom.
  • Vrijeme koje odgovara uglu paljenja generisati timer interruptom, a hardverski interrupte koristiti za sinhronizaciju.

28

29 of 46

Output

  • Invertorsko upravljanje

Regulacija pogona sa

asinhronim motorom

regulacijom frekvencije i

napona.

29

30 of 46

Output

30

D5 pin Arduino (5V,20mA)

DCM

31 of 46

Output

  • Generisanje PWM signala

31

Pomocu MC

Pomocu komparatora

32 of 46

PWM

  • Vjezba #7
  • DC motor control upotrebljavajući Arduino PWM pristup. DC moze vezati direktno na pin Arduina ali ne zaboraviti zamajnu diodu. Brzinu podesavati pomocu serijskog terminala, ‘a’=brzina 1 i start, ‘b’= brzina 2, ‘c’=brzina 3, ‘d’=brzina 4, ‘e’=stop;. Motor mora biti male snage i napajanja do 5V.
  • Koristeci snazniji motor i napajanja 12V kao i jedan tranzistor i zamajnu diodu ponoviti kornji zadatak (vrsiti kontrolu brzine pomocu PWM signala)
  • Generisti sinusoidalni signal koristeći Arduino i PWM (pročitati primjer na donjem slajdu) http://www.eprojectszone.com/how-to-generate-a-sine-wave-from-arduino-or-atmega-328/

32

33 of 46

FPGA

  • FPGA (Field-Programmable Gate Array) je tip digitalnog kola koje može biti programirano ili rekonfigurirano od strane korisnika. FPGA sadrži mnoge logičke blokove, interkonekcije i druge komponente koje omogućavaju korisnicima da kreiraju vlastite digitalne sklopove i sisteme prema specifičnim potrebama.
  • Ključne karakteristike FPGAs:
    • Programabilnost. Omogućava korisnicima da "programiraju" hardver, što znači da se FPGA može prilagoditi različitim funkcijama, kao što su obrada signala, kontrola sistema ili implementacija algoritama.
    • Paralelizam. Omogućava simultano izvršavanje mnogih zadataka, što je čini vrlo efikasnom za aplikacije koje zahtevaju visok stepen paralelnog procesa.
    • Brzina. FPGA je često brži od procesora (CPU) za specifične zadatke jer omogućava direktno fizičko povezivanje logičkih blokova bez potrebe za centralnim procesorom.
    • Fleksibilnost**: FPGA se koristi u raznim industrijskim primenama, uključujući telekomunikacije, automobilske sisteme, obrada slike, kriptografiju, i mnoge druge.
  • FPGA se koristi u aplikacijama gde je potrebno visoko prilagodljivo i brzo rešenje za specifične zadatke, kao što su ubrzanje računanja, digitalna obrada signala, testiranje i verifikacija, kao i u sistemima sa specifičnim hardverskim zahtevima.

33

34 of 46

FPGA

  • Primjeri primjene. Vision application streaming the (preprocessed) images to the host PC. By processing the real-time tasks for the motion control in an FPGA, a standard PC without real-time OS can be used.

34

35 of 46

RTOS

  • Real-time operativni sistemi (RTOS) su operativni sistemi dizajnirani da pruže predvidivo i brzo izvršavanje zadataka, u realnom vremenu. To znači da se moraju ispuniti strogi vremenski zahtjevi za izvršenje određenih operacija ili zadataka. Koriste u aplikacijama i uređajima gdje kašnjenje nije prihvatljivo, kao što su industrijska automatizacija, avionika, medicinski uređaji, vozila, telekomunikacije, robotika i slični sistemi.
  • Ključne karakteristike RTOS:
    • Predvidivost i tačnost u vremenu. RTOS mora garantovati da će odgovoriti na događaje unutar određenog vremenskog okvira. To znači da će, za razliku od standardnih operativnih sistema, biti osigurana tačno definisana latencija (vreme između dolaska događaja i njegovog odgovora).
    • Prioriteti zadataka. RTOS obično koristi mehanizme upravljanja prioritetima, gdje se zadaci sa višim prioritetom izvršavaju pre onih sa nižim. Ovi prioriteti se mogu prilagoditi prema hitnosti ili važnosti zadataka.
    • Deterministički rad. RTOS mora pružiti determinističke (predvidljive) odgovore, što znači da se vreme izvršavanja operacija mora moći tačno odrediti, bez iznenadnih kašnjenja.
    • Multitasking i višezadaćnost. Omogućava istovremeno izvršavanje više zadataka, pri čemu svaki zadatak ima tačno definisane vremenske okvire za izvršenje.
    • Upravljanje memorijom. Efikasno upravljanje memorijom i resursima, kako bi se osigurala stabilnost i brzina sistema.
  • Tipovi RTS-a:
    • Hard real-time systems. U ovim sistemima, ako zadatak nije završen u predviđenom vremenu, sistem je neispravan i može doći do ozbiljnih grešaka. Na primer, u medicinskim uređajima koji prate životne funkcije, kašnjenje može biti fatalno.
    • Soft real-time systems. Ovdje zadaci trebaju biti izvršeni u predviđenom vremenskom okviru, ali manja kašnjenja neće uzrokovati ozbiljne posledice. Na primer, u video obradama ili multimedijskim aplikacijama, kasnjenje može uticati na kvalitet, ali nije katastrofalno.

35

36 of 46

RTOS

  • Popularni real-time operativni sistemi:
    • RTOS Linux (preko ekstenzija kao što je PREEMPT-RT). Linux je opšti operativni sistem koji, uz određene ekstenzije, može raditi kao RTOS.
    • FreeRTOS. Popularni open-source RTOS koji se koristi u ugrađenim sistemima kao što je Arduino.
    • VxWorks. Komercijalni RTOS koji se koristi u kritičnim industrijskim aplikacijama, kao što su avionika i telekomunikacije.
    • QNX. Komercijalni RTOS poznat po svojoj pouzdanosti i sigurnosti, često koristi u automobilskoj industriji.
    • MicroC/OS-II. Jedan od najpoznatijih RTOS-a za mikrokontrolere, koristi se u ugrađenim uređajima, primjer https://github.com/Gibartes/uCOS-II-Arduino
  • Primeri upotrebe real-time operativnih sistema:
    • Avionika. RTOS upravlja ključnim funkcijama u avionima, kao što su navigacija i kontrola leta, gde su kašnjenja neprihvatljiva.
    • Automobilski sistemi. U autonomnim vozilima i sistemima za asistenciju vozaču, kašnjenje u obradi podataka može ugroziti sigurnost.
    • Industrijska automatizacija. U fabrikama, RTOS se koristi za upravljanje mašinama i procesima u realnom vremenu.

36

37 of 46

RTOS

37

38 of 46

RTOS

38

  • freeRTOS for Arduino
  • http://playground.arduino.cc/Code/ArduOS avr-os https://github.com/chrismoos/avr-os ArDOS https://bitbucket.org/ctank/ardos-ide/wiki/Home DuinOS https://github.com/DuinOS/DuinOS ScmRTOS http://scmrtos.sourceforge.net/ScmRTOS Nut/OS http://www.ethernut.de BeRTOS http://dev.bertos.org/ TinyOS http://www.tinyos.net/ ARTE/ERIKA http://erika.tuxfamily.org/drupal/ ChibiOS http://www.chibios.org FreeRTOS http://www.freertos.org NilRTOS http://chibios.sourceforge.net/docs3/nil/index.html os47 v1.01 http://www.rtos47.com

39 of 46

RTOS

39

Vjezba #8

  • Instalirati i povezati freeRTOS za Arduino
  • Pokrenuti program Blink_AnalogRead.ino iz examples
  • Pokrenuti i postati familiaran sa donjim programom
  • Demonstrirati nacin rada
  • Napraviti kratko upustvo i video.

40 of 46

40

#include <Arduino_FreeRTOS.h>�void TaskBlink1( void *pvParameters );�void TaskBlink2( void *pvParameters );�void Taskprint( void *pvParameters );�void setup() {�  // initialize serial communication at 9600 bits per second:�  Serial.begin(9600);�  xTaskCreate(�    TaskBlink1�    ,  "task1"   �    ,  128  �    ,  NULL�    ,  1  �    ,  NULL );�  xTaskCreate(�    TaskBlink2�    ,  "task2"�    ,  128  �    ,  NULL�    ,  1  �    ,  NULL );�    xTaskCreate(�    Taskprint�    ,  "task3"�    ,  128  �    ,  NULL�    ,  1  �    ,  NULL );�vTaskStartScheduler();�}�

RTOS

  • program sa 3 taska

void loop()�{�}�void TaskBlink1(void *pvParameters)  {�  pinMode(8, OUTPUT);�  while(1)�  {�    Serial.println("Task1");�    digitalWrite(8, HIGH);   �    vTaskDelay( 200 / portTICK_PERIOD_MS ); �    digitalWrite(8, LOW);    �    vTaskDelay( 200 / portTICK_PERIOD_MS ); �  }�}�void TaskBlink2(void *pvParameters)  �{�  pinMode(7, OUTPUT);�  while(1)�  {�    Serial.println("Task2");�    digitalWrite(7, HIGH);   �    vTaskDelay( 300 / portTICK_PERIOD_MS ); �    digitalWrite(7, LOW);   �    vTaskDelay( 300 / portTICK_PERIOD_MS ); �  }�}�void Taskprint(void *pvParameters)  {�  int counter = 0;�  while(1)�  {�counter++;�  Serial.println(counter); �  vTaskDelay(500 / portTICK_PERIOD_MS);    }�}

41 of 46

RTOS

41

Vjezba #9

  • Semofar

Napisati program za kontrolu semafora. Kada nema pešaka treba da bude zeleno za vozila i crveno za pešake. Po pritisku pešaka na taster pali se zuto za vozila, a zatim i crveno za vozila i zeleno za pešake. To traje 3 minuta i onda se pali crveno za pešake i žuto pa zeleno za vozila. Sledeći poziv pešaka biće uslišen tek pošto je zeleno svetlo za vozila trajalo duže od 3 minuta .

42 of 46

RTOS

42

Vjezba #10

  • Koristeci freeRTOS za Arduino modifikovati program Blink_AnalogRead.ino u program Blink_TempAlarm.ino. Temperatura se cita pomocu Arduina koristeci senzor BTS, Vernier. Kada predje vrijednost 40 stepeni LED pocinje da blinka. Za informaciju o senzoru koristiti https://www.vernier.com/files/manuals/sts-bta/sts-bta.pdf
  • Ponoviti gornji primjer za slucaj dinamometra https://www.vernier.com/files/manuals/hd-bta/hd-bta.pdf , Alarm podesiti na 150N.

43 of 46

PLC

(Programmable Logic Controller), PLC, je industrijski računarski uređaj koji se koristi za automatizaciju i kontrolu proizvodnih procesa i mašina. PLC-ovi su dizajnirani da zamene tradicionalne hardverske releje i sekvencijalne logičke sisteme, omogućavajući programiranje i lako podešavanje.

  • Ključne karakteristike PLC-a:
    • Fleksibilnost. Mogu se programirati za različite aplikacije i funkcije, kao što su kontrola brzine, temperature, ili čak složenih proizvodnih linija.
    • Pouzdanost. Dizajnirani su da rade u teškim industrijskim uslovima, uključujući visoke temperature, prašinu i vibracije.
    • Jednostavnost programiranja. Koriste specijalizovane programske jezike, najčešće Ladder Logic (merdevinasti dijagram), koji je sličan električnim šemama.
    • Interfejsi. Komuniciraju sa različitim uređajima (senzorima, aktuatorima, motora, itd.) putem digitalnih ili analognih ulaza i izlaza.
    • Real-time kontrola. PLC-ovi pružaju direktnu i brzu kontrolu u realnom vremenu nad industrijskim procesima.

PLC-ovi se široko koriste u industriji, kao što su proizvodne linije, transportni sistemi, pakovanje, automatska kontrola svetla i mnoge druge primene koje zahtevaju visoku preciznost i brzinu u radu.

43

44 of 46

PLC

44

45 of 46

PLC

45

46 of 46

PLC

46