1 of 41

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 41

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 41

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 41

Upravljanje u realnom vremenu…

4

Resursi:

5 of 41

Ulazno-izlazni elementi,�CPU, kontrola procesa�

  • Primjer uopstene (zatvorene) petlje

5

CPU

Input

Output

6 of 41

Ulazno-izlazni elementi,�CPU, kontrola procesa

  • Primjer upravljanja, zatvorena petlja

6

7 of 41

Kontrola industrijskih procesa

7

  • Zatvorena petlja, kontrola temperature.

8 of 41

Input, kondicioniranje signala

  • Akvizicija ulaznog analognog signal.

8

9 of 41

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 41

Input + CPU

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

10

ARDUINO

Terminal

11 of 41

Input+CPU

Citanje Vernier temp senzora.

11

k0 = 1.02119E-3

k1 = 2.22468E-4

k2 = 1.33342E-7

Vref

12 of 41

Ulaz+CPU

CPU bazirana akvizicija signala

12

13 of 41

CPU

Pooling i interrupt

13

Pooling bazirana kontrola

Interrupt bazirana kontrola

Način generisanja hardverskog

Interapta sa spoljasnjeg pina

14 of 41

CPU

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

14

15 of 41

CPU

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

15

16 of 41

CPU

16

PD2

PD3

Prekidi (interrupts)...hardverski + softwerski

17 of 41

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 41

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

  • Lektira: http://apeg.ac.me/nastava/Prvi-seminarski.pdf

18

Konverter industrijski visenamjenski

19 of 41

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 41

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 41

Izlaz, Relay, contact, solid state

21

22 of 41

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 41

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 41

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 41

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 41

INPUT+CPU+ОUTPUT

Sinhronizacija

Vjezba #6

  1. Realizovati kolo za sinhronizaciju prema donjoj semi, kao i kolo eksperimetalnog sistema.

  • 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 41

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 41

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 41

Izlaz. Invertorsko upravljanje

  • Regulacija

pogona sa asinhronim

motorom regulacijom

Frekvencije i napona

29

30 of 41

Izlaz. PWM, DC...

30

D5 pin Arduino (5V,20mA)

DCM

31 of 41

PWM (pusle width modulation)

  • Generisanje PWM signala

31

Pomocu MC

Pomocu komparatora

32 of 41

PWM (pusle width modulation)...

  • Vjezba #6
  • 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 41

LAB - B

  • Nakon vježbanja gornjih vježbi
  • Svaki student prezentuje jedan od primjera iz LAB – B (Problem 1,2,3,4,7,10)

33

34 of 41

RTOS, Real-Time Operativni Sistemi

34

35 of 41

RTOS

35

  • RTOS for Arduino ATMega
  • 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

36 of 41

RTOS

36

LAB C – Vjezba #1

  • 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.

37 of 41

37

#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();�}�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);    }�}

RTOS program sa 3 taska

38 of 41

RTOS

38

LAB C – Vjezba #2

  • 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 .

39 of 41

RTOS

39

LAB C – Vjezba #3

  • 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.

40 of 41

PLC

40

41 of 41

PLC

41