Upravljanje u relanom vremenu
1
ETF, SPECIJALISTICKE I MASTER STUDIJE
Školska: 2024-2025
Predavač: Prof. dr Radovan Stojanović
Asistent: Dr Dejan Karadaglić
Upravljanje u realnom vremenu
2
Sadržaj kursa :
Dio I
Dio II
Upravljanje u realnom vremenu…
3
Metodologija rada:
Upravljanje u realnom vremenu…
4
Ulazno-izlazni elementi,�CPU, kontrola procesa�
5
CPU
Input
Output
Ulazno-izlazni elementi,�CPU, kontrola procesa
6
Kontrola industrijskih procesa
7
Input, kondicioniranje signala
8
Input + CPU
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
Input + CPU
10
ARDUINO
https://www.vernier.com/files/manuals/sts-bta/sts-bta.pdf
Informacije o temperaturnom senzoru
Terminal
Input+CPU
Citanje Vernier temp senzora.
11
k0 = 1.02119E-3
k1 = 2.22468E-4
k2 = 1.33342E-7
Vref
Ulaz+CPU
CPU bazirana akvizicija signala
12
CPU
Pooling i interrupt
13
Pooling bazirana kontrola
Interrupt bazirana kontrola
Način generisanja hardverskog
Interapta sa spoljasnjeg pina
CPU
14
CPU
15
CPU
16
PD2
PD3
Prekidi (interrupts)...hardverski + softwerski
Vježba #1 �(Poling vs Interrupt)
17
Priloziti kod i video objasnjavajuci gornje slucajeve.
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
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
Vježba 4�Zatvorena petlja ON-OFF
20
ARDUINO
Sensor
Termo
Photo
Solid State
Relay
Potrosac
(Sijalica)
220V
Output
21
Output
22
Output
23
Output
24
25
Input+CPU+Оutput
Input+CPU+Оutput
Sinhronizacija
Vjezba #5
26
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.
Sinhronizacija, ugao paljenja
28
Output
Regulacija pogona sa
asinhronim motorom
regulacijom frekvencije i
napona.
29
Output
30
D5 pin Arduino (5V,20mA)
DCM
Output
31
Pomocu MC
Pomocu komparatora
PWM
32
FPGA
33
FPGA
34
RTOS
35
RTOS
36
RTOS
37
RTOS
38
RTOS
39
Vjezba #8
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
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
41
Vjezba #9
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 .
RTOS
42
Vjezba #10
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.
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
PLC
44
PLC
45
PLC
46