Au trecut mai bine de trei decenii de la primul contact cu calculatoarele personale, în laboratorul de informatică din liceu și apoi acasă. Erau calculatoare românești, compatibile Sinclair ZX Spectrum (HC85 / HC90, TIM-S, CIP), cu procesoare Z80 pe 8 biți, stocarea informației pe casetă cu bandă magnetică și afișarea datelor pe televizor. Lucrurile se mișcau atunci la frecvențe de ceas în jur de 4MHz și eram încântați, fie că era vorba de distracție sau de instruire. Casetele cu jocuri circulau liber și fiecare își putea face propria colecție. Elementele de bază ale programării le-am aflat folosind interpretorul înscris în ROM-ul calculatorului și urmând indicațiile din abecedarul limbajului Basic: „Învățăm Basic conversând cu calculatorul!” Citind, imaginând ceva, încercând practic și corectând erorile constatate, așa te dumirești cum e cu programarea calculatoarelor. Nu am intrat însă în profunzime, la nivelul programării în limbaj de asamblare Z80, care permitea dezlănțuirea performanțelor grafice și de viteză. Existau totuși destui programatori profesioniști care, în acea perioadă de constrângeri hardware, cu inventivitate și atenție la detalii, realizau aplicații și jocuri deosebit de reușite.
Pe la mijlocul anilor '90 au devenit accesibile calculatoarele personale compatibile IBM-PC, asamblate din componente fabricate în țările asiatice. S-a trecut astfel la sisteme configurabile, cu procesoare Intel / AMD pe 32 biti, unități de stocare pe disc magnetic sau optic, monitor color cu rezoluție mare, sistem audio, tastatură multimedia, mouse, imprimantă. Performanțele hardware au impulsionat dezvoltarea și diversificarea aplicațiilor software. Probabil pentru mulți utilizatori și programatori aceasta a fost „perioada de aur”. Calculatoarele și aplicațiile instalate aveau un pronunțat caracter autonom, de sine stătător. În acestă perioadă ne-am extins cunoștințele de programare în limbajul C/C++, care s-au dovedit utile la realizarea de mici aplicații cu caracter tehnic. Ulterior, interesul pentru programare s-a diminuat deoarece am trecut la utilizarea aplicațiilor consacrate de simulare și calcul tabelar. Am reluat contactul cu programarea calculatoarelor atunci când a trebuit să realizăm câteva mini-aplicații de laborator, cu interfață Windows.
Dezvoltarea rețelelor de calculatoare și a infrastructurii de comunicații a făcut posibil accesul la Internet. La început prin modem telefonic, cu viteză de transfer redusă. Site-urile erau însă bine organizate, optimizate și se găsea tot ce doreai la liber: documentație, aplicații, muzică, filme. Lucrurile puteau foarte bine să se oprească aici, doar performanța calculatoarelor și a perifericelor să mai crească... Apariția și răspândirea largă a telefoanelor mobile „smart” a dus însă la o revoluție digitală care a pus în umbră calculatorul personal. În această situație, deprinderile de programare au fost dirijate spre realizarea site-urilor web. Lucrurile nu mai sunt însă precum erau odată...
Script Controller este o aplicație Windows care implementează un controler programabil de timp real, folosind pentru aceasta resursele hardware ale unui PC: portul paralel (LPT), ceasul propriu al sistemului și placa de sunet. Programul a fost scris în limbajul C folosind WinAPI, obținând astfel performanță și portabilitate maximă pe sistemele Windows.
Script Controller este conceput pentru dezvoltarea de aplicații externe în care trebuie executate acțiuni la momentele de timp stabilite, pe baza unui program specific pregătit dinainte (script de comenzi). Controlerul poate fi utilizat în situații de tipul următor:
Programul poate controla independent cele 8 + 4 = 12 linii de ieșire ale unui port paralel PC. În Windows XP accesul direct la portul paralel (LPT) nu mai este posibil ca în variantele anterioare, de aceea Script Controller folosește un driver special creat de Yariv Kaplan, numit WinIO v2.0. Acesta autorizează operațiile de intare / ieșire la nivel hardware ale aplicației, eliminând restricțiile obișnuite impuse de sistemul de operare.
Starea unei linii de ieșire (0 ÷ 11) este indicată cu ajutorul unui „beculeț”: cenușiu - stins când linia este dezactivată (în 0 logic) și verde - aprins când linia este activă (în 1 logic). Imediat după încărcarea unui script de comenzi, înainte de pornirea controlerului prin apăsarea butonului Start, liniile de ieșire ale portului LPT sunt aduse într-o stare convenabilă (neutră) care permite pregătirea echipamentului extern comandat. În imaginea alăturată este prezentat cazul în care înaintea executării scriptului liniile de ieșire ale portului paralel sunt dezactivate. La oprirea voluntară a controlerului de timp real prin apăsarea butonului Stop, liniile de ieșire sunt de asemenea aduse în starea neutră (nepericuloasă, de repaus) a echipamentului extern comandat. Starea neutră poate fi definită după dorință, cu toate liniile de ieșire în 0 logic / 1 logic, sau cu unele linii în 0 logic și celelalte în 1 logic.
În fereastra aplicației există o casetă pentru afișarea de mesaje privind starea controlerului. Pornirea și oprirea controlerului, momentele când apar modificări ale stării liniilor de ieșire, precum și valorile acestora la momentul respectiv sunt indicate sugestiv. În cazul redării unui fragment sonor se indică numele fișierului audio (.wav), momentul începerii redării acestuia și momentul opririi forțate înainte de terminarea fișierului. După oprirea executării unui program de lucru (script) prin apăsarea butonului Stop, conținutul casetei de mesaje poate fi salvat pe disc într-un fișier text (.log) alegând opțiunea de meniu File / Save activity log.
Diversele acțiuni pe care le poate executa Script Controller sunt conținute în fișiere de comenzi specifice (.scc), stocate pe hard-disc. După lansarea în execuție a aplicației, se încarcă script-ul dorit alegând din meniu opțiunea File / Load script. Pentru executarea script-ului se pornește controlerul apasând butonul Start.
Script-urile de comenzi oferă o modalitate practică de reprogramare a controlerului de timp real, extinzând aplicabilitatea acestuia. Script-urile sunt create pornind de la descrierea în limbaj natural a acțiunilor ce trebuie executate, putând fi furnizate odată cu aplicația Script Controller sau adăugate ulterior.
Pentru a-și realiza funcția, Script Controller are nevoie de o interfață hardware particulară care să conecteze liniile portului paralel PC la instalația exterioară.
Controlerul programabil de timp real poate realiza următoarele tipuri de acțiuni:
Script Controller a fost conceput pentru portul paralel PC deoarece acesta era disponibil pe majoritatea plăcilor de bază PC, iar interfața cu exteriorul este simplă și directă. Dacă nu se dispune de un PC cu port paralel, aplicația ar putea fi modificată pentru a transfera serial comenzile la ieșire, urmând ca interfața hardware să pună la dispoziție liniile de ieșire digitale comandate de controler.
I/O Console este o aplicație Windows care implementează un panou de comandă pentru activarea / dezactivarea liniilor de ieșire ale unui port paralel PC (LPT) și pentru afișarea stării liniilor de intrare ale acestuia. Consola I/O permite testarea manuală comodă a modulelor digitale cu mai multe intrări și ieșiri, fără inconvenientul tranzițiilor multiple care apar la comutatoarele electromecanice obișnuite din cauza vibrației contactelor. Programul poate controla independent cele 8 + 4 = 12 linii de ieșire ale portului paralel PC și permite citirea celor 5 linii de intrare ale aceluiași port.
Imediat după lansarea în execuție a programului apare o mică fereastră care permite specificarea adresei de bază a portului paralel de pe calculatorul gazdă. Există trei opțiuni: 378h (adresa implicită, folosită cel mai frecvent), 278h și 3BCh. În cazul unui PC oarecare această adresă poate fi aflată din configurația stocată în BIOS, sau cu ajutorul aplicației Device Manager din Windows, în secțiunea Ports / Printer Port (Properties / Resources / I-O Range). Aplicația a fost testată cu portul configurat în BIOS ca port paralel standard (SPP). Modurile complexe ECP / EPP trebuie evitate deoarece includ funcțiuni care nu sunt utile consolei I/O și ar putea crea probleme. Datorită faptului că aplicația folosește liniile de intrare ale portului paralel, acesta trebuie dezactivat software în Windows (Ports / Printer Port / Disable). În acest mod se preîntâmpină situația nedorită ca driverul portului să interpreteze semnalele de pe liniile de intrare ca venind de la imprimantă și să răspundă prin acțiuni pe unele dintre liniile de ieșire (liniile de comandă).
Starea unei linii de intrare (I0 ÷ I4) sau de ieșire (O0 ÷ O11) este indicată cu ajutorul unui „beculeț”: cenușiu - stins când linia este dezactivată (în 0 logic) și verde - aprins când linia este activă (în 1 logic). Inițial toate liniile de ieșire sunt dezactivate (beculețele O0 ÷ O11 sunt stinse). Liniile de intrare au starea logică care vine din circuitul exterior, iar dacă ele nu sunt conectate extern atunci sunt în starea 1 logic (corespund unor intrări TTL în aer). Apasând butonul Read liniile de intrare sunt testate, iar starea găsită la intare este afișată. Starea citită este memorată, astfel încât tranzițiile care au loc pe liniile de intrare între două apăsări succesive ale butonului Read nu sunt afișate. Pentru manipularea stării liniilor de ieșire aplicația oferă mai multe procedee de lucru:
Pentru protejarea PC-ului pe care rulează I/O Console trebuie realizată o interfață între portul paralel și circuitele exterioare supuse testării. În mod frecvent interfața folosește circuite buffer compatibile TTL (74LS245, 74HCT245), alimentarea interfeței făcându-se direct din sursa calculatorului. Pentru asigurarea unei protecții suplimentare se poate construi o interfață cu izolare galvanică, cu optocuploare. O schemă simplă de interfață pentru portul paralel poate fi descărcată aici. ⇒ interlpt.pdf
Programul a fost scris în limbajul C folosind WinAPI, obținându-se astfel un fișier executabil de dimensiuni reduse, eficient și cu portabilitate maximă pe sistemele de operare Windows. În WinXP accesul direct la portul paralel (LPT) nu mai este posibil, de aceea I/O Console folosește un driver special creat de Yariv Kaplan, numit WinIO v2.0. Acesta autorizează operațiile de intare / ieșire la nivel hardware pentru aplicațiile obișnuite. I/O Console este compus din trei fișiere (exe, dll, sys) și nu necesită instalare. Aplicația este disponibilă pentru descărcare în format arhivat ZIP. ⇒ ioconsole.zip
I/O Console a fost concepută pentru portul paralel PC deoarece acesta era disponibil pe majoritatea plăcilor de bază PC, iar interfața cu exteriorul este simplă și directă. În cazul PC-urilor fără port paralel aplicația ar putea fi regândită pentru transferul serial al datelor. Interfața hardware trebuie proiectată astfel încât să pună la dispoziție liniile de intrare / ieșire digitale pentru consola I/O refăcută.
Programul permite determinarea caracteristicii spectrale de amplitudine și de fază a unui semnal periodic specificat, corespunzător descompunerii în serie Fourier armonică.
După lansarea în execuție a aplicației apare meniul principal în care opțiunile reprezintă etapele de urmat (fig. 1). Apăsând tasta [1] este afișată lista cu tipurile de semnale ce pot fi analizate (fig. 2). Pozițiile 1÷17 se referă la semnalele predefinite desenate în imaginea de mai jos, iar poziția 18 este rezervată semnalelor definite prin puncte de utilizator.
Se apasă tasta [2] pentru a indica tipul semnalului dorit, iar apoi se introduc caracteristicile acestuia (fig. 3). Deoarece nu au fost luate măsuri de verificare la introducerea datelor, se vor furniza numai valori pertinente pentru a nu apărea erori.
După revenirea în meniul principal se apasă tasta [3] pentru a demara calculele. Mai întâi trebuie introdusă precizia de calcul dorită (fig. 4). Pe calculatoarele actuale se poate alege direct valoarea 3, valorile 1 și 2 fiind utile doar pe sistemele foarte vechi (486). Alegând precizia maximă se pot calcula suficient de exact chiar și armonicile foarte îndepărtate. Într-o repriză de calcul sunt determinate valorile a 30 de armonici consecutive, utilizatorul putând indica ordinul primei armonici din set. Prin repetarea acestui pas (opțiunea 3 din meniul principal) se poate completa spectrul cu alte 30 de armonicii dorite. Programul calculează și valoarea medie a semnalului, care reprezintă componenta continuă a acestuia. Fazele inițiale ale armonicilor calculate sunt exprimate în radiani (fig. 5).
După fiecare etapă de calcul se poate afișa o reprezentare grafică a armonicilor din setul curent (fig. 6). Componenta continuă este desenată cu roșu dacă este pozitivă și cu albastru dacă este negativă.
Semnalele particulare pot fi analizate dacă sunt descrise cu aproximație prin puncte. Deoarece între două puncte consecutive semnalul este aproximat printr-un segment de dreaptă, se va avea în vedere o repartizare mai deasă a punctelor în zonele puternic curbate astfel încât descrierea semnalului să fie cât mai fidelă. Numărul maxim de puncte ce pot fi introduse este 50, primul fiind pentru t = 0 și ultimul pentru t = T (T este perioada). După introducerea coordonatelor tuturor punctelor, considerând timpul (în ms) pe abscisă și tensiunea (în mV) pe ordonată, acestea pot fi revăzute prin apăsarea succesivă a unei taste. Punctele sunt numerotate, fapt care permite rectificarea individuală a oricăruia dintre ele. Apoi se trece la efectuarea calculelor și afișarea rezultatelor exact ca în cazul semnalelor predefinite.
Programul operează cu semnale de tip tensiune electrică, dar poate fi utilizat și pentru semnale de altă natură prin înlocuirea unității de măsură.
Aplicația este un program MS-DOS care nu necesită instalare. A fost testată și rulează fără probleme pe Windows XP.
OBS: La utilizarea aplicației sub WinXP apar comutări ale modului de afișare video. Se pleacă de la o fereastră consolă Windows, se intră în mod grafic VGA la afișarea spectrului și se ajunge în mod text MS-DOS la revenirea în meniul principal. Modurile text consolă Windows / MS-DOS pot fi comutate între ele tastând combinația [ALT]+[CR].
Fișierul executabil arhivat în format ZIP este disponibil pentru descărcare. ⇒ sfacal.zip
Programul permite afișarea formei unui semnal periodic obținut prin suprapunerea unei componente continue, a componentei fundamentale și a urmatoarelor maxim 98 de armonici. Componentele alternative sunt de tip cosinus, fiind caracterizate prin frecvență, amplitudine și fază inițială (conform reprezentării în serie Fourier armonică). Cu ajutorul acestei aplicații se poate observa contribuția fiecărei componente la stabilirea formei unui semnal periodic.
După lansarea în execuție a aplicației apare meniul principal, care permite editarea pe rând a componentelor dorite ale semnalului și vizualizarea în orice moment a semnalului rezultat prin suprapunerea componentelor deja introduse (fig. 1). Deasupra meniului principal sunt afișate caracteristicile componentei curente: numărul componentei (0 = componenta continuă, 1 = componenta fundamentală, 2÷99 = armonicile superioare), frecvența, amplitudinea și faza inițială. Trecerea de la o componentă la alta se poate face în ambele sensuri: salt la componenta anterioară prin apăsarea tastei [A], respectiv salt la componenta următoare prin apăsarea tastei [U].
Pentru editarea componentei curente se apasă tasta [M]. În partea inferioară apare un meniu secundar care permite introducerea valorii frecvenței (doar la componenta fundamentală) prin apăsarea tastei [F], valorii amplitudinii prin apăsarea tastei [T] și valorii fazei inițiale prin apăsarea tastei [D]. Deoarece nu au fost luate măsuri de verificare la introducerea datelor, se vor furniza numai valori pertinente pentru a nu apărea erori.
Pentru sinteza și vizualizarea semnalului obținut se apasă tasta [V]. Afișarea semnalului se face ca pe osciloscop, originea temporală fiind în stânga iar nivelul 0V fiind pe centrul ecranului (fig. 2). Pentru efectuarea unor determinări pe semnal se indică valorile de scalare orizontală (s/div) și verticală (V/div).
Programul operează cu semnale de tip tensiune electrică, dar poate fi utilizat și pentru semnale de altă natură prin înlocuirea unității de măsură.
Aplicația este un program MS-DOS care nu necesită instalare. A fost testată și rulează fără probleme pe Windows XP.
OBS: La utilizarea aplicației sub WinXP apar comutări ale modului de afișare video. Se pleacă de la o fereastră consolă Windows, se intră în mod grafic VGA la afișarea semnalului sintetizat și se ajunge în mod text MS-DOS la revenirea în meniul principal. Modurile text consolă Windows / MS-DOS pot fi comutate între ele tastând combinația [ALT]+[CR].
Fișierul executabil arhivat în format ZIP este disponibil pentru descărcare. ⇒ sfasint.zip