Sunteți pe pagina 1din 10

Simulare în timp real folosind

Matlab Simulink
SIMULINK este o unealtă Matlab folosită pentru modelare, simulare și analiză. În mod normal o
simulare este realizată aproape instantaneu, putându-se analiza evoluția datelor doar la final. Dar ce se
întâmplă atunci când modelul depinde de un stimul extern mediului de simulare fiind constrânși de
exemplu de asteptarea unui flux de date de la un semnal generat de către un dispozitiv hardware
separat? Simularea nu mai poate fi efectuata instantaneu. Cei de la MathWorks s-au gandit la acest
lucru și pun la dispozitie posibilitatea de Real-Time Synchronization ce sincronizeaza ceasul Simulink cu
ceasul de timp real al computerului (RTC).

Scopul proiectului este generarea unui semnal dreptunghiular, avand factor de umplere variabil,
cu ajutorul portului Parallel și calcularea frecventei unui semnal receptionat pe unul dintre pinii aceluiași
port.

Fig. 1 Port paralel

1. Utilitare necesare
În parcurgerea proiectului se va utiliza mediul de dezvoltare Matlab Simulink. Este necesară una
din versiunile 2013 sau 2014.
Pentru a putea rula o simulare în timp real trebuie instalat pachetul Real-Time Target. Acest
lucru se face introducând în Command Window-ul Matlab instrucțiunea rtwintgt -setup.
Pachetul poate fi instalat doar dacă Matlab a fost deschis în modul administrator.

Fig. 2 Comenzi Real-Time Target


2. Modelul SIMULINK
Se va creea un nou model Simulink cu următoarea configurație:

Fig. 3 Parametri de configurare ai modelului SIMULINK

În modelul astfel creat se va construi schema ce va conține atât partea de generare a semnalului
dorit și ce va fi trimis la ieșire pe unul dintre pinii portului paralel, cât și partea de captare a semnalului
primit pe un alt pin al portului și măsurarea frecvenței acestuia.

Fig. 4 Modelul SIMULINK

Se observă în schemă două blocuri principale, PWM și Speed Block.


Blocul PWM este utilizat pentru generarea semnalului ce va fi trimis pe portul paralel. Acesta
primește ca semnal de intrare o valoare întreagă cuprinsă între 0 și 100 ce reprezintă factorul de
umplere al semnalului generat. La ieșire, pe pin-ul Ieșire Paralelă se găsește un semnal dreptunghiular
cu frecvența de 1000 Hz și factorul de umplere corespunzător intrării. La pin-ul Impulsuri se generează
un tren de impulsuri cu frecvența tot de 1000 Hz.
Blocul Speed Block este un detector de frecvență. Acesta numără toate fronturile din semnalul
de intrare, iar la intervale de o secundă, valoarea la care a ajuns contorul este impărțită la doi (deoarece
blocul numără atât fronturile crescătoare cât și pe cele descrescătoare), iar rezultatul reprezintă
frecvența semnalului de la intrare. La pinul Semnal Intrare trebuie să primească un semnal
dreptunghiular a cărui frecvență o va calcula și o va returna ca număr întreg la ieșirea Speed.
Pentru a folosi cele doua blocuri trebuiesc copiate din fișierul PWM_Speed_Blocks.slx.
Următorul segment de schemă reprezintă un slider care poate fi glisat cu mouse-ul pentru a
varia valoarea factorului de umplere pentru generarea semnalului. Blocul Slider Gain primește la
intrarea o valoare întreagă pe care o înmulțește cu valoarea setată prin glisare. Slider-ului i s-au setat
valoarea minimă la 0 și valoarea maximă la 100, valorile extreme pe care le poate avea factorul de
umplere.

Fig. 5 Schemă slider Fig. 6 Slider

Pentru comunicarea cu portul paralel se folosesc elemente din biblioteca Desktop Real Time a
Simulink-ului. Digital Input returnează semnalul primit pe unul dintre pinii portului. În schemă pinul 10
este setat ca pin de intrare. Semnalul generat de PWM este emis pe pinul 2 al portului paralel cu
ajutorul blocului Digital Output.

Fig. 7 Configurare Digital Input Fig. 8 Configurare Digital Output

Fig. 9 Schemă pini Port Paralel


Secretul simulării în timp real constă în configurarea ultimului bloc, Real-Time Syncronization.
Acesta sincronizează modelul Simulink cu ceasul de timp real al calculatorului. Sample Time reprezintă
cât de des se realizează interacțiunea cu dispozitiele de intrare/ieșire și sincronizarea cu RTC (real time
clock). Maximum missed ticks este numărul de impulsuri de ceas cu care modelul poate să rămână în
urmă față de nucleul Real-Time Target.

Fig. 10 Configurare Real-Time Synconization

3. Testarea modelului
Pentru a putea vedea cum funționează modelul este nevoie de un osciloscop digital și de un
generator de semnal. Dispozitivul Analog Discovery pune la dispoziție ambele facilități. Analizorul se
conectează la un sistem de calcul printr-un cablu usb, iar pentru configurare se folosește softul
WaveForms al celor de la Digilent.

Fig. 11 Analizor digital Analog Discovery Fig. 12 Schema pinilor pentru Analog Discovery

La început se va încerca generarea unui semnal dreptunghiular cu factori de umplere diferiți.


Pentru citirea semnalului de pe portul paralel, osciloscopul digital se conectează la pinul 2. Se alege un
factor de umplere cu ajutorul slider-ului și se rulează modelul.

Firul negru al analizoruli digital (marcat cu săgeată în jos) se conectează la un pin de masă al
portului paralel, iar la pinul 2 al acestuia se conectează firul portocaliu (canalul 1+). După deschiderea
aplicației WaveForms se selectează utilitarul Scope, se dă run și se configurează baza de timp, offsetul și
range-ul canalului pe care se face citirea semnalului generat pe portul paralel astfel încât semnalul
captat să fie ligibil.
Fig. 13 Semnal dreptunghilar cu factorul de umplere 37% afișat pe Scope-ul Simulink

Fig. 14 Semnal dreptunghiular afișat pe osciloscopul digital

În figurile de mai sus sunt reprezentarea din simulare și semnalul real citit de analizorul logic
pentru un semnal dreptunghiular cu frecvența de 1000 Hz și factor de umplere 37%. După cum se
observă în Figura 13 informațiile obținute la ieșirea din portul paralel au frecvența de 1 kHz și factorul de
umplere 30.1%. Cel din urmă este este diferit fată de cel dorit dar suficient de apropiat ca valoare.

Pentru a verifica daca rezultatele obținute nu sunt o coincidență se va încerca simularea cu un


alt factor de umplere.
Fig. 15 Semnal dreptunghilar cu factorul de umplere 75% afișat pe Scope-ul Simulink

Fig. 16 Semnalul digital afișat pe osciloscopul digital

Se observă că și în acest caz frecvența obținută este exact 1 kHz, în schimb factorul de umplere
este un pic diferit avand valoarea de 69.96%, valoare destul de apropiată de cea dorită.

În ambele cazuri am obținut valori exacte pentru frecvența semnalului (1000Hz) și factori de
umplere cu erori de maxim 14% din valoarea dorită.

Următorul pas este să se verifice dacă un semnal dreptunghiular obținut de la generatorul digital
este citit corect de la intrarea prin portul paralel.

Pentru acest lucru, unul din firele negre ale analizorului (marcat cu săgeată în jos) se va conecta
la unul din pinii de masă ai portului paralel, iar firul roz cu alb (pinul digital 12) se va conecta la pinul 10
al portului paralel. Se deschide WaveForms și se selectează utilitarul Patterns. Aici se adaugă, apăsând
pe semnul plus verde din partea stângă, pinul digital pe care se dorește generarea semnalului și se
configurează pattern-ul pentru obținerea unui semnal dreptunghiular cu frecvența de 400 Hz conform
imaginii de mai jos.

Fig. 17 Patterns Generator

Se apasă butonul Run atât pentru generatorul de semnal cât și pentru modelul Simulink și se
urmârește semnalul citit de la portul paralel cu ajutorul Scope-ului. Frecvența acestuia este afișată pe
Display.

Fig. 18 Semnalul citit de la pinul 10 al portului paralel


Fig. 19 Starea modelului în timpul citirii semnalului de 400 Hz

Se observă că valoarea afișată pe Display pentru frecvența semnalului nu este departe de 400 Hz
ceea ce înseamnă ca modelul este suficient de precis.

În imaginile următoare sunt semnale citite de la generator în timp real având frecvența de
1000Hz dar factori de umplere diferiți.

Fig. 20 Semnal dreptunghiular cu factor de umplere 37 %

Fig. 21 Semnal dreptunghiular cu factor de umplere 75 %


Fig. 21 Starea modelului în timpul semnalelor din figurile 20 și 21 (Display = 1000Hz)

S-ar putea să vă placă și