Sunteți pe pagina 1din 9

Instrumente virtuale destinate măsurătorilor şi aplicaţiilor tehnice.

Durată: 4 ore
Cuprins:
A. Introducere
B. Breviar teoretic
C. Sarcini şi etape de lucru
D. Resurse

A. Introducere

In aceasta lucrare practica, prezentam pachetele de functii dedicate schimbului de date cu


fisiere, pe masina locala (Functii Input/Output), precum si functii destinate controlului datelor
pe porturile paralel si serial.

B. Breviar teoretic

B.1. Funcţii pentru schimb de date cu fişiere. Funcţii de I/O pe fişiere

Funcţiile pentru schimb de date cu fişiere sunt situate în paleta Programming ->
File I/O şi permit realizarea operaţiilor de scriere/citire a următoarelor tipuri de date:
• caractere într-un sau dintr-un fişier text
• linii dintr-un fişier text
• tablouri 1D sau 2D de date numerice în simplă precizie dintr-un fişier text spreadsheet
• tablouri 1D sau 2D of de date numerice în simplă precizie sau întregi cu semn pe 16 biţi
dintr-un fişier binar

Acesta încorporează în acelaşi VI funcţiile elementare pentru:


- selectarea căii pentru creare/deschidere fişier
- deschiderea efectivă sau crearea/salvarea unui fişier nou
- setarea unui anumit tip de dată (text sau spreadsheet)
- scriere/citire efectivă
- închidere de fişier

Ele au ca argumente de intrare variabile ca :


- variabila path sau determinarea sa prin dialog cu utilizatorul

1/9
- tipuri de date (1D, 2D, ..., string); pentru fişiere spreadsheet datele sunt variabile de
tip numeric 1D sau 2D care sunt convertite în stringuri; pentru cele text ele sunt de
tip string
- tipul de scriere (ex : append T/F)
- formatul numerelor

OBS : Aceste funcţii nu au funcţia de tratare a erorii. Ea este definită pentru


funcţiile elementare care validează sau nu continuarea execuţiei unui set de funcţii
individuale care funcţionează în tandem. Acestea îşi validează succesul individual prin
mesajul pozitiv de lipsa a erorii şi prin transmiterea la următoarea funcţie elementară a
aceleiaşi variabile de intrare care este una de tip refnum. Această variabilă conservă calea
şi numele fişierului, tipul de acces al citirii/scrierii, etc.

Se pot salva timpul (momentul accesului citire/scriere) şi rezultatele programării


utilizând funcţiile de nivel înalt pentru scriere şi citire din fişiere. Ele permit operaţii de citire
sau scriere pe lângă operaţiile de deschidere şi închidere de fişier. Aceste funcţii solicită un
fişier de intrare şi o cale precizată. Dacă nu este precizată calea şi fişierul o cutie de dialog
apare pentru specificare interactivă. Aceste funcţii au încorporată funcţia de tratare a erorii
de scriere/citire. Se poate opri execuţia sau continuă.

Funcţiile avansate localizate în Programming -> File I/O -> Advanced File
Functions, permit realizarea operaţiilor individuale :
• creare de directoare
• move, copy, sau delete fişiere.
• listarea conţinutului unui director
• schimbarea caracteristicilor unui fişier
• manipularea de pathuri

Alegerea formatului de I/O File (tip de fişier)


Datele se pot citi / scrie din următoarele tipuri de fişire:
 text (string simplu sau string formatat de tip spread-sheet)-ASCII

2/9
 binar
 datalog
Alegerea formatului depinde de datele care se achiziţionează sau creează şi de
aplicaţia care va avea acces la date. Putem face următoarele observaţii cu privire la tipul de
fişier utilizat :
o Dacă se doreşte accesarea datele în alte aplicaţii, cum ar fi Excel, se
creează/deschid fişiere text deoarece au cel mai comun şi portabil format.
o Dacă este necesară citirea/scrierea datelor (acţiuni de conservare a datelor) fără
să fie necesar un format anumit însă spaţiul compact pe disc să fie un criteriu
important atunci se utilizează fişiere binare care sunt mai eficiente decât cele text
din punctul de vedere al spaţiului pe disc şi al vitezei de acces.
o Dacă se doreşte manipularea de înregistrări complexe formate din tipuri
compuse de date din labview, se utilizează datalog deoarece sunt cel mai bun
mod de a stoca date care să fie accesibile numai în/din labview. Tipurile de date
care se manipulează sunt de tip structură.
În sub-paleta de funcţii avansate sunt funcţii elementare (închidere/ deschidere/
creare/ scriere/ citire/ close) orientate pentru tipuri speciale de date : datalog.
Obs: atenţie la următoarele tipuri de date:

 Ele sunt tipuri de date care indică calea de căutare a unui fişier (deci calea nu va fi

variabilă string ci aceasta de tip special sau dedicata) :


 Pentru variabila de tip fişier (în care se scriu sau din care se citesc date) dacă s-au
precizat calea, numele fişierului (poate fi un new) tipul de acces la date (append,
new..) se creează o variabilă specială care reţine aceste referinţe fixate. Ea se

numeşte « referinţa numerică » şi va fi variabila care pasează de la o


funcţie elementară (sau funcţie care execută acţiuni individuale cum sunt : open,
new, read, write, close) datele de referinţă ale fişierului în lucru.
Aceste tipuri de date sunt specifice atunci când se lucrează cu funcţii dedicate lucrului cu
fişiere I/O.

B.2. Portul paralel


Portul paralel este cel mai des utilizat pentru interfaţarea proiectelor realizate în
particular. Acest port permite intrări de până la 9 biţi sau ieşiri de 12 biţi în mod independent,
acest lucru necesitând circuite externe minime pentru implementarea multor sarcini uşoare.
Portul este compus din 4 linii de control, 5 linii de stare şi 8 linii de date. Este dispus în mod
uzual în partea din spate a calculatorului sub forma unui conector “mama” cu 25 de pini, de
tip D. Poate fi şi un conector de tip D cu 25 de pini, “tata”.
Asignarea pinilor pentru conectorul de port paralel cu 25 de pini de tip D.
Număr pin Număr pin Direcţie Inversare
Semnal SPP Registru
(Tip D 25) (Centronics) Intrare/Ieşire hardware
1 1 nStrobe Intrare/Ieşire Control Da
2 2 Data 0 Ieşire Date
3 3 Data 1 Ieşire Date
4 4 Data 2 Ieşire Date
5 5 Data 3 Ieşire Date
6 6 Data 4 Ieşire Date

3/9
7 7 Data 5 Ieşire Date
8 8 Data 6 Ieşire Date
9 9 Data 7 Ieşire Date
10 10 nAck Intrare Stare
11 11 Ocupat Intrare Stare Da
Fără hârtie
12 12 Intrare Stare
Sfârşit hârtie
13 13 Selecţie Intrare Stare
14 14 nAuto-Linefeed Intrare/Ieşire Control Da
15 32 nError/nFault Intrare Stare
16 31 nInitializare Intrare/Iesire Control
nSelectie-Imprimanta
17 36 Intrare/Iesire Control Da
nSelectie-Intrare
18 - 25 19 - 30 Masa Gnd

Tabelul foloseşte ‘n’ înaintea numelui semnalului pentru a semnaliza faptul că


respectivul semnal este activ low, de exemplu nError. Dacă a apărut o eroare la imprimantă,
atunci această linie este low. În mod normal această linie este high pentru ca imprimanta să
funcţioneze corect. “Hardware Inverted” înseamnă că semnalul este inversat de card-ul
hardware al portului paralel. Spre exemplu, linia Busy (Ocupat). Dacă +5V (1 logic) este
aplicat la acest pin, iar registrul de stare (Status) citeşte; la bitul 7 al registrului Status se va
întoarce ‘0’.
Ieşirile portului paralel sunt nivele logice TTL. Nivelele de tensiune sunt partea cea
mai uşoară. Curentul poate varia de la port la port. Cele mai multe porturi paralele
implementate pot absorbii în jurul a 12 mA.

Porturile paralele au trei adrese de bază folosite în mod comun.


LPT1 asignează în mod normal adresa baza 378h, în timp ce LPT2 este asignată la
278h. 378h si 278h au fost folosite întotdeauna pentru porturile paralele. Aceste adrese pot
fi schimbate de la calculator la calculator.

Adresa Note:
Folosită pentru porturile paralele care au fost încorporate în plăcile video
3BCh - 3BFh şi acum, folosite în mod comun pentru porturile controlate de BIOS. Nu
suportă adrese ECP
378h - 37Fh Adresa uzuală pentru LPT1
278h - 27Fh Adresa uzuală pentru LPT2

La prima pornire a calculatorului, BIOS-ul (Basic Input/Output System) va determina


numărul de porturi existente şi îşi va asigna etichetele dispozitivelor LPT1, LPT2 si LPT3.
BIOS-ul se uită mai întâi la adresa 3BCh. Dacă găseşte aici un port paralel, acesta va fi
asignat drept LPT1, apoi caută la locaţia 378h. Dacă găseşte card-ul unui port paralel aici,
va asigna următoarea etichetă liberă. Aceasta ar trebui să fie LPT1 dacă n-a fost găsit un
card la 3BCh, sau LPT2 dacă a fost găsit un card la 3BCh. Următorul port de apelat este
278h si se urmează aceeaşi procedură ca şi la celelalte două porturi. Este posibil să existe
un LPT2 care este la 378h şi nu la adresa extinsă 278h. Acest lucru se datorează faptului că
unii fabricanţi ai cardurilor cu porturi paralele folosesc “jumperi” ce permit setarea porturilor
la LPT1, LPT2, LPT3. În cele mai multe cazuri, LPT1 este 387h, iar LPT2 este 278h şi totuşi
este posibil ca adresa 3BCh sau 378h să fie asignată pentru LPT1, iar 278h pentru LPT2.

Portul de date:
Offset Nume Citire/Scriere Numar bit Proprietati
Baza+0 Port de date Scriere Bit 7 Data 7 (Pin 9)
Bit 6 Data 6 (Pin 8)
Bit 5 Data 5 (Pin 7)
Bit 4 Data 4 (Pin 6)
Bit 3 Data 3 (Pin 5)

4/9
Bit 2 Data 2 (Pin 4)
Bit 1 Data 1 (Pin 3)
Bit 0 Data 0 (Pin 2)
Dacă portul este bidirecţional, operaţiile de citire şi scriere pot fi făcute în registrul de
date.
Adresa de bază, denumită uzual port de date sau registru de date, este folosită
pentru ieşirea datelor la liniile de date ale portului paralel (pinii 2-9). În mod normal acesta
este doar un port de scriere. Dacă se citeşte de la port, trebuie să se primească ultimul bit
trimis. Dacă portul este bidirecţional pot fi recepţionate date la această adresă.

Portul de stare:
Offset Nume Citire/Scriere Număr bit Proprietăţi
Bit 7 Ocupat
Bit 6 Ack
Bit 5 Fără hârtie
Bit 4 Selecţie intrare
Baza+1 Port de stare Doar scriere
Bit 3 Eroare
Bit 2 IRQ (Not)
Bit 1 Rezervat
Bit 0 Rezervat
Portul de stare (adresa baza+1) este un port doar pentru citire. Orice data scrisa la
acest port va fi ignorata. Portul de stare este destinat sa aiba pana la 5 linii de intrare (pinii
10, 11, 12, 13, 15), un registru de stare al întreruperii IRQ si doi biţi rezervaţi. Bitul 7
(Ocupat) este o intrare activa jos. De exemplu, daca bitul 7 arata ‘0’ logic aceasta înseamnă
ca exista +5V la pinul 11. La fel se întâmpla şi cu bitul 2 (nIRQ). Dacă acest bit arata ‘1’
înseamnă ca n-a apărut o întrerupere.

Portul de control:
Offset Nume Citire/Scriere Numar bit Proprietati
Bit 7 Nefolosit
Bit 6 Nefolosit
Bit 5 Activează portul bidirecţional
Port de Bit 4 Activează IRQ prin intermediul liniei Ack
Baza+2 Scriere/Citire
control Bit 3 Selectează imprimanta
Bit 2 Iniţializează imprimanta (Reset)
Bit 1 Auto linefeed
Bit 0 Strobe
Portul de control (adresa baza+2) este destinat doar ca port de scriere. Atunci când
o imprimantă este ataşată la portul paralel, sunt folosite patru “controale”. Acestea sunt
Strobe, Auto Linefeed, Iniţializare şi Selecţie Imprimanta, toate inversate, cu excepţia
Iniţializării. Aceste patru ieşiri pot fi folosite şi ca intrări.

B.3. Portul serial


Utilitatea interfeţei seriale pentru un microsistem sau pentru un microcalculator se
datorează flexibilităţii ei. Există o mulţime de echipamente care pot fi conectate pe interfaţa
serială: plotter, modem, mouse, imprimantă.
Transferul serial al datelor înseamnă transmiterea succesivă a biţilor pe aceeaşi linie
de date şi poate fi făcut în două moduri: sincron şi asincron. Diferenţa constă în aceea că la
transferul sincron se transmit unul sau mai multe semnale adiţionale care indică momentul
în care următorul bit este valid pe linia de date. Aceste semnale pot fi semnale de tact
(ceas) sau semnale de protocol de tip cerere şi confirmare. Principalul avantaj al transferului
sincron este acela că receptorul ,,răspunde" la diferite frecvenţe de ceas, atâta timp cât nu

5/9
este depăşită frecvenţa maximă. Sincronizarea transmiţător - receptor se poate face, de
exemplu, prin detectarea tranziţiilor semnalului de ceas.
Într-un transfer de date asincron biţii de date poartă cu ei informaţia de sincronizare,
receptorul şi transmiţătorul trebuind să lucreze la aceeaşi frecvenţă de ceas. Informaţia de
sincronizare ,,inclusă" cuprinde un bit de start, care marchează începutul unităţii de date şi
un bit de stop, care indică sfârşitul unităţii. Dacă se ia în considerare şi calculul de paritate,
atunci o unitate de date serială (SDU - Serial Data Unit) consta dintr-un bit de start, biţi de
date, eventual un bit de paritate şi un bit de stop. Spre deosebire de transmisia sincronă,
apare un număr mai mare de biţi de transfer datorită biţilor adiţionali necesari pentru
resincronizare.

Paritate şi viteza de transmisie


Calculul parităţii reprezintă o metodă simplă de detectare a erorilor de transmisie.
Metoda poate detecta numai erorile singulare (de un bit). Avantajul utilizării parităţii este dat
de faptul că aproape toate circuitele de interfaţă serială permit generarea şi testarea biţilor
de paritate la nivel hardware.
Există 5 moduri de apreciere a parităţii:
 fără paritate - bitul de paritate lipseşte din pachet;
 paritate pară - bitul de paritate este setat pe ,,1" atunci când cuvântul de
transmis şi bitul de paritate, împreună, conţin un număr par de biţi de „1";
 paritate impară - bitul de paritate este setat pe ,,1" atunci când cuvântul de
transmis şi bitul de paritate, împreună, conţin un număr impar de biţi de „1";
 mark (setat) - bitul de paritate este setat la ,,1";
 space (resetat) - bitul de paritate este setat la ,,0".
,,Mark" si ,,Space" folosesc pentru detectarea erorilor asupra bitului de paritate însuşi.
Astfel, atunci când o unitate de date serială cu bit de paritate resetat /setat ajunge la
destinaţie, în regim de configurare a parităţii ,,Mark"/,,Space", înseamnă că a apărut o
eroare a bitului de paritate. Acest fapt nu spune nimic despre ,,calitatea" biţilor de date. În
mod contrar, dacă biţii de date sunt alteraţi, receptorul nu remarcă nimic dacă bitul de
paritate este corect.
Viteza de transmisie (baud rate) se defineşte ca fiind numărul de schimbări de
semnal pe canalul de transfer, într-o secundă. Pentru interfeţele seriate obişnuite,
schimbările de semnal sunt echidistante în timp, iar codificarea este binară (mark=1,
space=0). În acest caz, viteza de transmisie este echivalentă cu numărul de biţi transferaţi
într-o secundă (biţi pe secundă = bps), dacă au fost incluşi şi biţii de start, paritate şi stop.
Pentru codificări mai complicate şi prin folosirea metodelor de compresie, viteza datelor (în
bps) poate fi semnificativ mai mare decât viteza de transmisie.

Descrierea pinilor pentru RS-232:


25 pini 9 pini Semnal Direcţie Descriere
1 — — — Împământare
2 3 TD DTE —> DCE Transmisie date
3 2 RD DCE —> DTE Recepţie date
4 7 RTS DTE —> DCE Cerere de transmisie
5 8 CTS DCE —> DTE Gata de recepţie
6 6 DSR DCE —> DTE DCE valid pentru transfer
7 5 — — Masa
8 1 DCD DCE —> DTE Detecţie purtătoare
20 4 DTR DTE —> DCE DTE valid pentru transfer
22 9 RI DCE —> DTE Semnalizare apel
23 — DSRD DCE —> DTE Detecţie viteza de transfer

Pentru gestionarea transferului de date între DTE şi DCE se folosesc 5 linii de


comandă (RTS, CTS, DCD, DTR, DSR).

6/9
RTS - Request to Send: semnalul, transmis de DTE, informează DCE ca trebuie sa
se pregătească pentru recepţia datele trimise de DTE.
CTS - Clear to Send: semnalul, transmis de DCE, indică DTE ca DCE este gata să
accepte datele trimise. De cele mai multe ori, DCE activează CTS ca răspuns la activarea
de către DTE a semnalului RTS. Dacă DCE a activat semnalul CTS, DTE poate începe
transferul de date.
RTS si CTS joacă rolurile celor doi parteneri de comunicaţie, ca transmiţător şi
receptor, pentru o conexiune semiduplex, şi determină comutarea fiecăruia dintre cei doi
parteneri între emisie şi recepţie. Astfel, RTS şi CTS formează o pereche de semnale de
protocol (handshake).
DCD - Data Carrier Detect: DCE activează semnalul DCD dacă a detectat
purtătoarea de la destinaţia transmisiei şi este pe cale să se realizeze conexiunea. DCD
rămâne activ atât timp cât conexiunea există.
DSR-Data Set Ready: DCE (de obicei un modem) informează DTE, prin activarea
semnalului DSR, că este pornit, că şi-a terminat pregătirile pentru conectarea cu dispozitivul
destinaţie şi ca poate comunica.
DTR - Data Terminal Ready: semnalul, generat de DTE, precizează că acesta este
pregătit pentru comunicare. Semnalul este activat la punerea sub tensiune a DTE. DTR şi
DTS sunt responsabile pentru stabilirea legăturii, aşa cum RTS si CTS sunt responsabile
pentru transferul de date.
Conectorul de 25 de pini poate vehicula încă un semnal de comandă suplimentar,
numit DSDR (Data Signal Rate Detection). Semnalul permite comutarea între două viteze
de transmisie diferite.

B.4. Funcţiile portului paralel şi ale portului serial

Elementele de lucru cu portul paralel se găsesc în paleta Connectivity -> Port I/O

 citeşte conţinutul registrului de la adresa de memorie


address
Address este reprezentat pe 16 biţi, iar data read este
reprezentat pe 8 biţi
 scrie valoarea write value la adresa de memorie address
Address este reprezentat pe 16 biţi, iar write value este
reprezentat pe 8 biţi

Elementele de lucru cu portul paralel se găsesc în paleta Connectivity -> Port I/O

7/9
 elementul de configurare a portului serial folosit

 Trimiterea datelor write buffer către device-ul specificat la


intrarea VISA resource name.
Return count returnează numărul de biţi trimişi către device-
ul specificat la intrarea VISA resource name.
 Citeşte datele de dimensiunea byte count de la device-ul
specificat la intrarea VISA resource name.
Read buffer returnează date citite de la device-ul specificat
la intrarea VISA resource name.
 Închide sesiunea de lucru cu device-ul specificat la
intrarea VISA resource name.

Exemple de programe:

1. Achiziţia de date pe portul paralel

2. Trimiterea de date pe portul paralel

8/9
C. Sarcini şi etape de lucru

I. Să se realizeze programele prezentate la exemplele de la punctul B4.

II. Să se realizeze un program pentru realizarea antetului de mai jos într-un fişier “.txt”

III. Pentru programul anterior să se completeze tabelul cu N înregistrări.


Unde: N = numărul de înregistrări dat de utilizator (stabilit din Front Panel)
DATA, ORA = valori preluate de la elemente ce returnează data respectiv ora
(formatul datei şi al orei este stabilit de programator);
REFERINTA, IESIREA PID, PROCESUL VARIABIL = valori preluate de la
elemente de tip Random Number (0-1)

IV. Să se realizeze un program care să realizeze două jocuri de lumini pe 8 leduri


conectate la portul paralel conform schemei electrice de mai jos.

Cele două jocuri de lumini sunt:


1. lumina dinamică (aprinderea succesivă a câte unui led; prima dată se aprinde
primul led, toate celelalte fiind stinse, apoi se aprinde ledul al doilea şi toate
celelalte sunt stinse, inclusiv primul led, după care se aprinde ledul al treilea
şi toate celelalte sunt stinse, etc, după ce se aprinde ledul 8 şi toate celelalte
sunt stinse se va aprinde ledul 7 şi si toate celelalte sunt stinse, etc)
2. aprinderea intermitentă a celor 8 leduri (aprinderea şi stingerea succesivă a
celor 8 leduri; se aprind cele 8 leduri, se sting cele 8 leduri, se aprind cele 8
leduri, se sting cele 8 leduri, etc)

D. Resurse

[1] Mincă E., Note de curs “Proiectare asistată de calculator”,


http://moodle.fie.valahia.ro/course/category.php?id=14,
[2] Dragomir F., Îndrumar de laborator “Proiectare asistată de calculator”,
http://moodle.fie.valahia.ro/course/category.php?id =14.
[3] Savu T., Tutorial LabVIEW, www.labsmn.pub.ro/Academic/labview/Tutorial.htm,

9/9

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