Automate Program a Bile - Curs
January 16, 2017 | Author: Florian Jurca | Category: N/A
Short Description
Download Automate Program a Bile - Curs...
Description
Eugen Ioan GERGELY
AUTOMATE PROGRAMABILE CURS
2
CUPRINS
NOTAŢII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 CAPITOLUL 1. SISTEMELE DE CALCUL ŞI CONTROLUL INDUSTRIAL . . . . . . . . . . . . . . . . . . . . 1.1. Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Contextul industrial . . . . . . . . . . . . . . . . . . . . . . . 1.3. Noile reguli de producţie . . . . . . . . . . . . . . . . . . . . 1.4. Tipuri de strategii de control . . . . . . . . . . . . . . . . . . 1.4.1. Subsisteme de monitorizare . . . . . . . . . . . . . . 1.4.2. Subsisteme secvenţiale . . . . . . . . . . . . . . . . . 1.4.3. Subsisteme de control în buclă închisă . . . . . . . . 1.4.4. Echipamente de control . . . . . . . . . . . . . . . . . 1.5. Utilizarea calculatoarelor . . . . . . . . . . . . . . . . . . . . 1.5.1. Arhitectura calculatoarelor . . . . . . . . . . . . . . . 1.5.2. Programarea în cod maşină şi în limbaj de asamblare 1.5.3. Limbaje de nivel înalt . . . . . . . . . . . . . . . . . . 1.5.4. Programe de aplicaţie . . . . . . . . . . . . . . . . . . 1.6. Cerinţe ale controlului industrial. . . . . . . . . . . . . . . . 1.7. Automatele programabile . . . . . . . . . . . . . . . . . . . 1.7.1. Scurt istoric . . . . . . . . . . . . . . . . . . . . . . . 1.7.2. Normalizarea . . . . . . . . . . . . . . . . . . . . . . 1.7.3. Tendinţe ale pieţei . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
6 6 7 8 9 10 10 12 13 14 15 17 17 19 20 24 24 28 28
CAPITOLUL 2. STRUCTURA AUTOMATELOR PROGRAMABILE . . . . . . . . . . . . . . . . 2.1. Prezentare generală a automatelor programabile . . . . . . 2.2. Module de I/E . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1. Module de intrări discrete . . . . . . . . . . . . . . . 2.2.2. Module de ieşiri discrete . . . . . . . . . . . . . . . . 2.3. Identificarea adreselor de I/E . . . . . . . . . . . . . . . . 2.3.1. Adresarea I/E la AP PLC-5 al firmei Allen Bradley . 2.3.2. Adresarea I/E la AP SIMATIC S5 al firmei Siemens 2.3.3. Adresarea I/E la AP GEM-80 al firmei CEGELEC . 2.3.4. Adresarea I/E la AP Master al firmei ABB . . . . . . 2.3.5. Adresarea I/E la AP F2 al firmei Mitsubishi . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
30 30 32 32 34 38 39 40 42 43 45
. . . . . . . . . . .
3 2.3.6. Adresarea I/E la AP APC700 al firmei IPA S.A. Bucureşti . . . . . . . . . . . . . . . . . . . . . . 2.4. Adresarea memoriei interne de un bit . . . . . . . . . . 2.5. Execuţia programelor . . . . . . . . . . . . . . . . . . . 2.5.1. Ciclul program . . . . . . . . . . . . . . . . . . . 2.5.2. Ramificaţii şi repetiţii . . . . . . . . . . . . . . . 2.5.3. Subrutine . . . . . . . . . . . . . . . . . . . . . . 2.5.4. Transferul prin întreruperi . . . . . . . . . . . . . 2.6. Comanda la distanţă . . . . . . . . . . . . . . . . . . . 2.7. Avantajele controlului cu AP . . . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
45 45 46 47 52 53 54 54 56
CAPITOLUL 3. LIMBAJE DE PROGRAMARE . 3.1. Standardul IEC 1131-3 . . . . . . . . . . . . . 3.2. Diagrama scară . . . . . . . . . . . . . . . . . 3.3. Diagrama cu blocuri funcţionale . . . . . . . . 3.4. Lista de instrucţiuni . . . . . . . . . . . . . . . 3.5. Textul structurat. . . . . . . . . . . . . . . . . 3.6. Diagrama de stare secvenţială . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
58 58 61 65 67 70 71
CAPITOLUL 4. FUNCŢII SPECIALE . . . . 4.1. Programarea memoriei interne de un bit 4.2. Temporizatoare . . . . . . . . . . . . . . 4.3. Numărătoare . . . . . . . . . . . . . . . . 4.4. Aplicaţii numerice . . . . . . . . . . . . 4.4.1. Reprezentarea numerelor. . . . . . 4.4.2. Transferul datelor . . . . . . . . . . 4.4.3. Compararea datelor . . . . . . . . 4.4.4. Operaţii aritmetice . . . . . . . . .
78 78 82 87 91 91 94 96 97
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
CAPITOLUL 5. METODE DE PROGRAMARE 5.1. Programarea logicii combinaţionale . . . . . 5.2. Programarea logicii secvenţiale . . . . . . . 5.3. Ingineria software . . . . . . . . . . . . . . . 5.4. Proiectarea top-down . . . . . . . . . . . . . 5.5. Structura programelor în diverse AP . . . . 5.6. Întreţinerea şi practica software . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. 102 . 102 . 105 . 115 . 118 . 120 . 125
BIBLIOGRAFIE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
4
NOTAŢII AP - Automat(e) Programabil(e) ARQ - Automatic Transmission on Request = transmisie automată la cerere AS - Actuator / Sensor = element de execuţie / senzor ASCII - American Standard Code for Information Interchange = Code standard american pentru schimbul de informaţii ASK - Amplitude Shift Keying = modulaţie în amplitudine BCC - Block Check Character = caracter de verificare a blocului BCD - Binary Coded Decimal = zecimal codificat binar BS - British Standard = Standard Britanic CAN - Convertor(Conversie) Analog-Numeric(ă) CBB - Circuit(e) Basculant(e) Bistabile CCITT - Comitetul Consultativ Internaţional de Telefonie şi Telegrafie CCM - Centru de Control al Motorului CRC - Cyclic Redundancy Code = cod ciclic de redundanţă CSMA - Carrier Sense Multiple Access = acces multiplu prin detectarea purtătoarei CSMA/CD – CSMA/ Colision Detection = acces multiplu prin detectarea purtătoarei cu detecţia coliziunilor DBF - Diagramă(e) cu Blocuri Funcţionale DCE - Data Communication Equipment = echipament de comunicaţie a datelor DS - Diagramă(e) Scară DSS - Diagramă(e) de Stare Secvenţială(e) DTE - Data Terminal Equipment = echipament terminal de date EDDI - Error Detection and Diagnostic Indication = Indicator pentru detectarea erorilor şi diagnosticare EIA - Electrical Industries Association = Asociaţia industriilor electrice ESP - Extended Simple Protocol = protocol simplu extins FEC - Forward Error Control = control în avans al erorilor FIMs - Functionally Identified Maintenance system = Sistem de mentenanţă identificat funcţional FSK - Frequency Shift Keying = modulaţie în frecvenţă HDLC - High level Data Link Control = protocol de comunicaţie de nivel înalt HSE - Health and Safety Executive = Executivul de Sănătate şi Siguranţă I/E - Intrare/Ieşire, Intrări/Ieşiri
5 IEC
- International Electrotechnical Comittee = Comitetul internaţional de electrotehnică ISO - International Standards Organization = Organizaţia internaţională a standardelor ITU - International Telecommunication Union = Uniunea Internaţională de Telecomunicaţii LAN - Local Area Network = reţea locală (pe arie restrânsă) LI - Lista de Instrucţiuni LSB - Least Significant Bit = Bitul cel mai puţin semnificativ MAP - Manufacturing Automation Protocol = protocol de automatizare a producţiei MMI - Man-Machine Interface = interfaţă om-maşină MT - Mentenance Time = durata mentenanţei (planificate) MTBF - Mean Time Between Failures = timpul mediu de bună funcţionare MTTF - Mean Time To Failure = timpul mediu până la defectare MTTR - Mean Time To Repair = timpul mediu de reparare ND - Normal Deschis NI - Normal Închis OSI - Open System Interconnection = (model de) interconectare a sistemelor deschise P - Proporţional PC - Personal Computer = calculator personal PI - Proporţional-Integrator PID - Proporţional – Integrator – Derivativ PLC - Programmable Logic Controller = automat programabil PSK - Phase Shift Keying = modulaţie în fază PV - Process Variable = variabilă de proces RSU - Releu Stop de Urgenţă SB - Sertar(e) de Bază SDLC - Synchronous Data Link Control = protocol de comunicaţie sincron SNR - Signal to Noise Ratio = raportul semnal-zgomot SP - SetPoint = valoare prestabilită, referinţă SFC - Sequential FlowChart = DSS TDM - Time Division Multiplexing = multiplexare prin divizarea timpului TOF - Timer OFf (delay) = temporizare la declanşare TON - Timer ON (delay) = temporizare la anclanşare TS - Text Structurat UAL - Unitate Aritmetică şi Logică UART - Universal Asynchronous Receiver-Transmitter = Emiţător-receptor asincron universal UC - Unitate de Comandă UCP - Unitate Centrală de Procesare WAN - Wide Area Network = reţea extinsă (pe arie largă) XOR - eXclusive-OR = (funcţia logică) SAU-EXCLUSIV
6
CAPITOLUL 1 SISTEMELE DE CALCUL ŞI CONTROLUL INDUSTRIAL
1.1.
Introducere
Foarte puţine instalaţii industriale pot funcţiona singure şi majoritatea lor necesită o anume formă de sistem de control pentru a asigura o operare sigură şi eficientă. Figura 1.1 este o reprezentare a unei instalaţii tipice, care poate fi o uzină conectată la un sistem de control [27].
Figura 1.1. O imagine simplificată a unui sistem de control Sistemul de control transformă comenzile operatorului uman în acţiuni necesare şi afişează starea instalaţiei către operator. La cel mai simplu nivel, instalaţia poate fi un motor electric care acţionează un ventilator de răcire. Aici sistemul de control poate fi compus din: un contactor electric, protecţii la scurtcircuit şi suprasarcină a motorului, respectiv a cablurilor. Controlul operatorului poate consta în butoane de START / STOP iar starea instalaţiei poate fi observată prin lămpi de semnalizare de PORNIT / OPRIT şi DEFECT. La cealaltă extremă, uzina poate fi o vastă instalaţie petrochimică. Aici sistemul de control poate fi complex şi constă într-o combinaţie de
7 tehnologii. Legătura cu operatorul uman poate fi la fel de variată, comenzile fiind date iar informaţiile fiind afişate prin intermediul diverselor echipamente. În majoritatea cazurilor, operatorul va fi o parte a sistemului de control. Dacă se declanşează o alarmă care înseamnă "Nivel scăzut de ulei", operatorul trebuie să adauge ulei.
1.2. Contextul industrial Din punct de vedere al gestiunii şi al automatizării, întreprinderile industriale pot fi clasificate, în general, în două mari categorii: întreprinderi cu procese continue şi întreprinderi manufacturiere. În primul caz producţia este descrisă în termenii debitului de materiale. Tipice pentru acest caz sunt uzinele fizico-chimice şi petrochimice. Procesul de producţie este caracterizat printr-o secvenţă de reacţii fizico-chimice ce se succed într-o manieră continuă sau cvasicontinuă. Este clar că în aceste întreprinderi producţia este limitată strict, atât din punctul de vedere al naturii produselor, cât şi din punctul de vedere al utilajelor de producţie. În cea de-a doua categorie de întreprinderi se fabrică produse de mai multe tipuri, care pot fi, evident, de complexitate diferită. Industriile mecanice, electrice şi electronice aparţin acestei categorii. Procesul de producţie se prezintă, în general, ca o succesiune de operaţii de producere şi asamblare realizate manual sau cu ajutorul maşinilor. Problemele cu care se confruntă actualmente întreprinderile industriale pot fi explicate prin evoluţia pieţei. Cu puţin timp în urmă, piaţa era caracterizată prin faptul că producătorii erau cei ce determinau tipul şi cantitatea produselor. Utilizatorii (clienţii) cumpărau ceea ce era disponibil. Astăzi piaţa se caracterizează prin faptul că cerinţele producţiei sunt determinate de către solicitările utilizatorilor (clienţilor). Concurenţa s-a înteţit şi mondializat considerabil iar exigenţele consumatorilor au sporit, îndeosebi în ceea ce priveşte calitatea produselor. Ciclul de viaţă al produselor s-a redus considerabil: 3-4 ani pentru un automobil şi mai puţin pentru un calculator PC. În termenii producţiei, aceasta înseamnă o mare varietate de produse cu un ciclu de viaţă scurt şi în serii mici [50]. Pentru a supravieţui, întreprinderile vor trebui să producă repede, de calitate şi în concordanţă cu cerinţele pieţei, trebuind în acest sens să se poată adapta rapid la evoluţia produselor [29].
8
1.3. Noile reguli de producţie Noile reguli de producţie pot fi rezumate, într-o manieră sugestivă, prin cinci zerouri: zero defecte, zero întreruperi ale producţiei, zero stocuri, zero întârzieri şi zero documente. Semnificaţia primelor patru zerouri este clară. Al cincilea indică dorinţa de a suprima mulţimea de documente ce trebuie întocmite, care adesea îngreunează munca personalului şi este sursa unor numeroase erori. În cazul ideal, ar trebui adăugate încă două zerouri: zero accidente şi zero probleme sociale. În termeni tehnici, aceste noi reguli de producţie relevă o filozofie numită "fix-la-timp" (Just-in-Time) [30]. Este vorba de un principiu de organizare industrială, apărut la începutul anilor ’80, care preconiza cumpărarea sau producţia numai a produselor necesare, la momentul oportun. Acest principiu trebuia respectat atât la nivelul produselor finite (să se producă numai produse pentru care există comandă), cât şi la nivelul componentelor constitutive ale acestor produse. Primul rezultat ar consta într-o reducere drastică a stocurilor, ce ar conduce la o îmbunătăţire a situaţiei financiare a întreprinderilor. În realitate, reducerea stocurilor nu este decât începutul unei reacţii în lanţ, care a condus la schimbări majore în profunzimea funcţionării întreprinderilor. Pentru a produce fără stocuri şi pentru a garanta livrări la timp, este necesar să existe timpi de fabricaţie foarte scurţi, flexibilitate pentru a putea urmări cererea de produse (în varietate şi în cantitate) şi o înaltă dependabilitate a producţiei. La nivelul organizării producţiei aceasta implică: • divizarea uzinei în celule care să permită înlănţuirea rapidă a operaţiilor referitoare la o piesă sau la un produs într-o manieră care să evite depozitările intermediare; • limitarea deplasărilor în vederea acccelerării producţiei; • flexibilitatea celulelor menţionate anterior, ele trebuind să permită schimbarea rapidă a utilajelor şi a programelor de fabricaţie; • controlul calităţii în fiecare etapă a fabricaţiei; • fiabilitatea maşinilor, ceea ce înseamnă, printre altele, aplicarea unei politici riguroase de mentenanţă preventivă; • polivalenţa calificării operatorilor, care devin responsabili atât de cantitatea şi calitatea pieselor sau produselor fabricate, cât şi de buna funcţionare a maşinilor;
9 •
îmbunătăţirea relaţiilor cu furnizorii atât la nivelul livrărilor la timp, cât şi la nivelul calităţii produselor furnizate. O soluţie constă în analiza fluxului de materiale şi de informaţii asociate procesului de producţie, în raţionalizarea lor şi în simplificarea lor la maxim. Apare, astfel, cu claritate oportunitatea automatizării şi informatizării proceselor de producţie. Automatizarea permite accelerarea fabricaţiei şi/sau garantarea constanţei calităţii ei. Pentru motivele exprimate anterior, automatizarea trebuie să fie flexibilă. Această flexibilitate se traduce la nivelul structurii maşinilor unelte prin faptul că ele trebuie să fie polivalente şi adaptabile şi să fie prevăzute cu o gestiune a uneltelor şi a alimentării cu piese complet automatizate. Astfel, un robot, de exemplu, va apare ca o maşină flexibilă prin excelenţă. Această flexibilitate trebuie să se regăsească şi la nivelul sistemelor de comandă a maşinilor, ale căror moduri de funcţionare trebuie să poată fi modificate foarte uşor. Acest aspect nu mai ridică în momentul de faţă probleme reale, deoarece practic toate maşinile de producţie noi sunt comandate cu dispozitive bazate pe microprocesoare. În plus, posibilităţile de comunicaţie existente permit transferul şi modificarea programelor nu numai de la sistemele de conducere proprii, ci şi de la alte sisteme de calcul. Informatizarea are ca obiectiv ameliorarea transferului de informaţii referitoare la procesul de producţie. Aceste informaţii se referă nu numai la fabricaţia propriu-zisă, ci şi la concepţia produselor, la gestiunea tehnică, financiară şi administrativă a uzinei, la management, la marketing, etc. Aceste aspecte diferite ale producţiei au devenit, de câtva timp, obiectul unor dezvoltări infomatice specifice. Noile reguli de producţie evocate aici conduc, în mod natural, la o integrare a mijloacelor informatice ale unei întreprinderi. Termenul "integrare" utilizat aici acoperă nu numai interconectarea fizică a calculatoarelor în reţele de comunicaţie, dar şi interconectarea logică a lor. Pe de altă parte, integrarea oferă fiecăruia accesul direct la informaţiile dorite, la momentul dorit şi în locul dorit.
1.4. Tipuri de strategii de control Este foarte simplu să fii derutat şi copleşit de dimensiunile şi complexitatea unui proces industrial mare. Majoritatea acestora, dacă nu toate, pot fi simplificate prin considerarea lor ca fiind compuse din mai
10 multe subprocese mici. Aceste subprocese pot fi diferenţiate, în general, în trei tipuri distincte. 1.4.1. Subsisteme de monitorizare Acestea afişează starea procesului către operator şi atrag atenţia asupra situaţiilor anormale sau de defect. Starea instalaţiei este măsurată prin senzori (traductori) corespunzători. Senzorii digitali evaluează parametrii cu stări distincte. Exemple tipice sunt: PORNIT / OPRIT, MERS ÎNAINTE / MERS ÎNAPOI, DEFECT / BUN, BLOCAT / JOS / MEDIU / ÎNALT, NIVEL RIDICAT / NORMAL / SCĂZUT. Senzorii analogici măsoară parametrii care au un domeniu de variaţie continuu, cum ar fi temperatură, presiune, debit sau nivel. Rezultatele acestor măsurători sunt afişate către operator prin indicatori (pentru semnalele digitale) sau prin aparate de măsură şi contoare (pentru semnalele analogice). Semnalele pot fi, de asemenea, verificate pentru situaţiile de alarmă. Un limitator de capăt de cursă sau un releu termic folosit pentru suprasarcina unui motor sunt condiţii tipice digitale de alarmă. O temperatură înaltă sau un nivel scăzut de lichid pot fi condiţii tipice analogice de alarmă. Operatorul trebuie informat asupra acestora prin echipamente de avertizare acustică şi vizuală. Un sistem de monitorizare păstrează adeseori înregistrări ale consumului de energie şi materiale în scopul unor bilanţuri şi produce un jurnal de evenimente / alarme pentru analiza lui în etapa de mentenanţă. O pompă, de exemplu, poate necesita mentenanţă după 5000 de ore de operare. 1.4.2. Subsisteme secvenţiale Multe procese urmăresc secvenţe predefinite, cum ar fi, de exemplu, sistemul de control secvenţial al cuptorului cu gaz din figura 1.2. Pentru pornirea arzătorului, secvenţa de comandă ar putea fi următoarea: a. Se apasă butonul START. Dacă senzorii arată că nu este debit de aer şi nici flacără, atunci secvenţa poate începe. b. Se alimentează contactorul ventilatorului. Dacă contactorul a cuplat (lucru verificat printr-un contact auxiliar al contactorului) şi debitul de aer s-a stabilizat (lucru verificat prin limitatorul de debit), atunci: c. Se aşteaptă două minute (pentru ca aerul să elimine gazele nearse) şi apoi:
11 d. Se deschide valva pilot şi se acţionează aprinzătorul. Se aşteaptă două secunde şi apoi se opreşte aprinzătorul şi: e. Dacă există flacără (lucru verificat prin detectorul de flacără) se deschide valva de gaz principală. f. Secvenţa este completă. Cuptorul funcţionează şi rămâne în această stare până când se apasă butonul STOP sau se opreşte debitul de aer sau se stinge flacăra.
Figura 1.2. Un cuptor de gaz cu sistem de control secvenţial Secvenţa anterioară utilizează doar semnale discrete, dar poate utiliza şi semnale analogice. În figura 1.3 este prezentat un proces de amestecare a două substanţe. Senzorii analogici sunt utilizaţi pentru a măsura greutatea şi temperatura pentru a da următoarea secvenţă: a. Se deschide valva V1 până sunt încărcate 250 kg din produsul A. b. Se porneşte paleta de amestecare. c. Se deschide valva V2 până sunt adăugate 310 kg din produsul B. d. Se aşteaptă 120 secunde (pentru amestecare completă). e. Se încălzeşte amestecul la 80° C şi se menţine la 80° C timp de 10 minute. f. Se opreşte încălzitorul. Se aşteaptă până când amestecul se răceşte la 30° C.
12 g. Se opreşte paleta mixerului. h. Se deschide valva de evacuare V3 până când greutatea amestecului scade sub 50 kg.
Figura 1.3. Un proces de amestecare 1.4.3. Subsisteme de control în buclă închisă În multe sisteme analogice o variabilă ca temperatură, presiune sau debit este necesar să fie menţinută automat la o anumită valoare prestabilită sau să fie făcută să urmărească un alt semnal. În pasul e al secvenţei de amestecare anterioare, de exemplu, temperatura trebuie menţinută constant la 80° C într-un domeniu foarte îngust timp de 10 minute. Asemenea sisteme pot fi reprezentate prin schema bloc din figura 1.4. Aici, un parametru al instalaţiei (temperatura, notată prin PV – variabilă de proces) trebuie menţinut la o valoare prestabilită SP (referinţă). PV este măsurată printr-un senzor corespunzător şi comparată cu SP pentru a da semnalul de eroare: abaterea = SP-PV (1.1) Dacă, de exemplu, este vorba despre un regulator de temperatură cu SP = 80° C şi PV = 78° C, atunci abaterea este de 2° C. Acest semnal de eroare este aplicat unui algoritm de control. Există mulţi algoritmi de control (această temă fiind discutată în Capitolul 6), dar un exemplu de control al încălzirii poate fi următorul: "Dacă eroarea este negativă opreşte încălzirea iar dacă este pozitivă porneşte încălzirea". Ieşirea algoritmului de control este transmisă unui element de execuţie care deserveşte instalaţia. Pentru controlul temperaturii, elementul
13 de execuţie poate fi o rezistenţă electrică iar pentru controlul unui debit elementul de execuţie poate fi o valvă de control a debitului. Algoritmul de control va comanda elementul de execuţie astfel încât eroarea să fie zero, adică PV = SP.
Figura 1.4. Un sistem de control în buclă închisă În figura 1.4 valoarea PV este transmisă înapoi pentru a fi comparată cu SP, ceea ce conduce la expresia "control cu reacţie negativă". Trebuie, de asemenea, observat că schema bloc formează o buclă, astfel că expresia "control în buclă închisă" este, de asemenea, întâlnită. Deoarece procesul de corecţie este continuu, valoarea PV poate fi făcută să urmărească un SP care se modifică. Proporţia aer/gaz pentru un cuptor cu gaz (cum este cel din figura 1.2) poate fi, deci, menţinută în ciuda modificării funcţionării cuptorului. 1.4.4. Echipamente de control Cele trei tipuri de strategii de control prezentate anterior pot fi implementate pe mai multe căi. Sistemele de monitorizare / alarmă pot fi deseori realizate prin conectarea senzorilor instalaţiei la afişaje, indicatoare şi dispozitive de alarmă. Uneori, sistemele de alarmă necesită o anumită logică. De exemplu, nu se poate genera o alarmă la presiune scăzută de ulei în timpul pornirii unei pompe, deoarece este necesar un interval de timp la începutul funcţionării pompei, pentru a se permite stabilizarea presiunii în circuit. După acest timp, o presiune scăzută va cauza oprirea pompei (în cazul în care scăderea presiunii este cauzată de o scurgere). Sistemele secvenţiale pot fi realizate cu relee, temporizatoare şi alte asemenea dispozitive electromagnetice. Circuitele logice (TTL sau CMOS, în general) pot fi utilizate pentru sisteme mai complexe [17, 6]. Multe aplicaţii cu maşini-unelte sunt realizate în jurul unor blocuri logice: unităţi logice montate în sloturi (locaşuri prevăzute cu conectori), conţinând porţi logice, elemente de memorare, temporizatoare şi numărătoare, conectate
14 prin terminale la blocuri, pentru a realiza operaţia cerută. Ca şi la sistemele cu relee, modificările pot fi realizate relativ simplu. Controlul în buclă închisă poate fi realizat prin intermediul unor regulatoare construite pe baza unor amplificatoare de c.c., cum ar fi obişnuitul 741. "Regulatorul cu trei termeni" (PID), descris în Capitolul 6, este un echipament care realizează funcţia din figura 1.4 şi este disponibil în comerţ. În industria chimică (şi, în particular, în industria petrochimică), prezenţa unor atmosfere explozive a condus la utilizarea unor regulatoare pneumatice, cu semnalele din figura 1.4 reprezentate prin presiuni pneumatice.
1.5. Utilizarea calculatoarelor Un calculator este un dispozitiv care realizează operaţii predeterminate asupra unor date de intrare pentru a produce date de ieşire, aşa cum este reprezentat în figura 1.5.a.
Figura 1.5. Calculatorul în controlul industrial: a) privire generală asupra calculatorului; b) calculatorul ca parte a unui sistem Pentru un calculator utilizat pentru calculul statelor de plată, datele de intrare vor fi numele angajaţilor, categoriile salariale şi orele lucrate. Aceste date vor fi operate în concordanţă cu instrucţiunile scrise astfel încât să includă impozitele şi asigurările sociale, pentru a produce date de ieşire sub forma restului de plată (sau, mai modern, suma transferată într-un cont bancar). Primele calculatoare au fost utilizate pentru operaţii comerciale: state de plată, contabilitate, operaţiuni bancare şi alte activităţi similare. Schema bloc a unei instalaţii conduse de un calculator este o reprezentare apropiată de blocul de control din figura 1.1, care poate fi
15 redesenat sub forma unui calculator care conţine blocurile de control, ca în figura 1.5.b. Se observă că acţiunile operatorului nu sunt instrucţiuni, ci sunt o componentă a datelor de intrare. Instrucţiunile vor defini care acţiuni trebuie considerate ca date de intrare (de la instalaţie sau de la operator). Datele de ieşire sunt acţiunile de control asupra instalaţiei şi afişarea informaţiilor către operator. Primele calculatoare au fost mari, scumpe şi lente. Viteza nu era atât de importantă în aplicaţiile comerciale (programatorii comerciali vor fi, probabil, în dezacord), dar este de cea mai mare prioritate în aplicaţiile industriale care trebuie conduse în timp real. Multe acţiuni şi alarme necesită comenzi întreprinse în fracţiuni de secundă. Calculatoarele comerciale se bazau pe furnizarea datelor pe cartele perforate şi prin tastatură, şi pe trimiterea datelor de ieşire către imprimante. Un proces industrial necesită , uneori, ca sute de dispozitive să fie citite în timp real iar semnalele să fie trimise către echipamente ca valve, motoare, aparate de măsură, etc. Există, de asemenea, problema mediului de funcţionare. Calculatoarele comerciale au fost proiectate să lucreze în atmosfere protejate, umiditatea şi temperatura trebuind menţinute în limite înguste. Aceste condiţii sunt imposibil de asigurat în procesele de producţie. Prima aplicaţie industrială a calculatoarelor a fost, probabil, un sistem de monitorizare instalat într-o rafinărie de petrol în Port Arthur, SUA, în 1959. Fiabilitatea şi media timpilor între defectări ale calculatoarelor acelui timp au condus la o utilizarea redusă a lor în asemenea aplicaţii. 1.5.1. Arhitectura calculatoarelor Pentru a putea aprecia modul de utilizare al unui calculator în controlul industrial, este utilă cunoaşterea părţilor componente ale sale. În acest sens, figura 1.5.a poate fi extinsă pentru a ajunge la forma din figura 1.6. Această figură (care reprezintă toată gama de calculatoare, de la cel mai mic PC la cel mai complex) are şase blocuri [13, 16, 41, 49]: 1. O unitate de intrare, prin care datele din exterior sunt introduse în calculator în vederea procesării. 2. O memorie internă, care va păstra instrucţiunile programelor şi datele de operare. Aceste date pot fi informaţii venite din exterior sau rezultate intermediare şi/sau finale ale calculelor. 3. Datele din memoria internă pot fi accesate foarte rapid, dar calculatoarele comerciale necesită, adeseori, rezerve mari de
16 memorie pentru a reţine detalii cum ar fi: conturi bancare, nume şi adrese. Acest tip de date nu e necesar să fie furnizate rapid şi, de aceea, sunt păstrate în memoria externă. De obicei, aceasta constă în discuri sau casete magnetice şi este numită memorie secundară. Aceste memorii sunt puţin utilizate la tipurile de calculatoare ce vor fi discutate.
Figura 1.6. Părţile componente ale unui calculator 4. O unitate de ieşire, prin care datele din calculator sunt transmise către exterior. 5. O unitate aritmetică şi logică UAL, care realizează operaţii asupra datelor din memorie în concordanţă cu programul executat de către calculator. 6. O unitate de comandă UC, care face legătura între operaţiile celorlalte cinci blocuri. Adeseori, UAL şi UC sunt cunoscute împreună sub numele de unitate centrală de procesare sau UCP. Un microprocesor este o UCP într-un singur circuit integrat. Instrucţiunile programului sunt păstrate în memorie şi, cu mici excepţii, se succed în ordine secvenţială. Există surprinzător de puţine tipuri de instrucţiuni. Cele disponibile la majoritatea microprocesoarelor sunt de forma: 1. Transferă data dintr-un loc în altul. De exemplu, înscrie data într-o locaţie de memorie sau transferă data din memorie în UAL. 2. Operaţii aritmetico-logice asupra a doi operanzi, unul în UAL iar celălalt într-o locaţie de memorie specificată. Operaţiile uzuale sunt: +, -, AND, OR. 3. Salturi. Într-un program instrucţiunile se succed una după cealaltă, secvenţial. Există, însă, situaţii când este necesară continuarea execuţiei programului cu o altă instrucţiune decât cea imediat următoare (salt necondiţionat) sau când sunt necesare teste simple. Aceste din urmă operaţii utilizează salturi condiţionate. Acestea vor
17 fi executate atunci când condiţia testată este adevărată şi permit ca programul să poată urma una din două căi posibile. 4. Subrutine. Multe operaţii sunt executate de mai multe ori în acelaşi program. Într-un sistem de control industrial în care debitul este măsurat cu o diafragmă, este apelată de multe ori funcţia radical de ordinul doi (deoarece debitul este proporţional cu rădăcina pătrată a diferenţei de presiune pe diafragmă). Decât să se scrie aceeaşi instrucţiune de mai multe ori (fapt care necesită efort şi spaţiu de memorie suplimentar), se utilizează o instrucţiune de apel de subrutină, care permite ca din diferite puncte ale programului principal să se transfere operaţiile la o subrutină specificată. După execuţia acesteia se revine în programul principal, la instrucţiunea aflată după instrucţiunea de apel a subrutinei. 1.5.2. Programarea în cod maşină şi în limbaj de asamblare Seria de instrucţiuni ce constituie programul trebuie scrisă şi încărcată în calculator. La nivelul cel mai scăzut, numit programare în cod maşină, instrucţiunile sunt scrise în calculator sub formă numerică. Acest lucru este dificil de făcut, favorizează erorile şi este aproape imposibil de modificat ulterior. Secvenţa de numere: 16 00 58 21 00 00 06 08 29 17 D2 0E 40 19 05 C2 08 40 C9 reprezintă instrucţiunile unei subrutine de multiplicare pentru microprocesorul Z80, care începe la adresa 4000H. Dar, chiar şi un programator experimentat pentru Z80 are nevoie de bibliografie (şi de mult timp) pentru a putea interpreta aceste 19 numere. Programarea în limbaj de asamblare utilizează mnemonice în locul codurilor, permiţând programatorului să scrie rapid instrucţiunile, care sunt uşor de urmărit. Un program separat, denumit asamblor, converteşte programul cu mnemonice (denumit program sursă) într-un program cod maşină echivalent (denumit cod obiect), care poate fi lansat în execuţie. Scrierea programelor în limbaj de asamblare este laborioasă, pentru că există câte o instrucţiune în limbaj de asamblare pentru fiecare instrucţiune în cod maşină. 1.5.3. Limbaje de nivel înalt Programele în limbaj de asamblare pentru anumite aplicaţii sunt greu de scris, aşa că au fost dezvoltate căi de scriere a programelor pentru
18 calculator într-un stil apropiat de limba engleză. Acest lucru este realizat cu aşa-numitele “limbaje de nivel înalt”, dintre care cele mai cunoscute sunt PASCAL, FORTRAN, BASIC (şi altele, cum ar fi RPG, FORTH, LISP, CORAL, C), pentru a numi numai câteva din ele, fiecare având atracţiile sale. Într-un limbaj de nivel înalt programatorul scrie instrucţiunile într-o formă apropiată de limba engleză. Programul PASCAL de mai jos, de exemplu, furnizează la imprimantă o tabelă a înmulţirii: program multtable(input,output); var deinmultit, inmultitor:integer begin readln ("Ce tabelă doriţi?",inmultitor); for deinmultit=1 to 10 do writeln (deinmultit,"ori",inmultitor,"egal", deinmultit*inmultitor); end.(of program) Chiar dacă cititorul nu cunoaşte limbajul PASCAL, operaţiile din program sunt clare (dacă se cere schimbarea tabelei de înmulţire până la 10 cu o tabelă de înmulţire până la 20, este clar care linie trebuie schimbată). Un program sursă în limbaj de nivel înalt poate fi lansat în execuţie prin două metode: • Cu un compilator, care este un program care converteşte întregul program sursă în limbaj de nivel înalt, offline, într-un program cod obiect. Programul cod obiect rezultat poate fi apoi rulat independent de programul sursă sau de compilator. • Cu un interpretor. Programul sursă şi interpretorul există în calculator în timpul execuţiei programului. Interpretorul parcurge fiecare linie a codului sursă şi le converteşte în cod maşină echivalent, pe măsură ce sunt executate. El nu generează program cod obiect. Un program compilat este rulat mult mai rapid decât un program cu interpretor (tipic de 5-10 ori mai repede, datorită lucrului suplimentar depus de interpretor) iar programul cod obiect compilat va fi mult mai mic decât codul unui program echivalent cu interpretor. Compilatoarele sunt, totuşi, mai greu de utilizat, o secvenţă tipică de lucru cu un compilator fiind următoarea: 1. Este lansat un editor de text (pentru a scrie programul sursă sau pentru eventuale modificări ce trebuie aduse programului sursă). 2. Programul sursă este tastat sau este încărcat de pe hardisc (dischetă). 3. Dacă au fost făcute modificări, fişierul sursă rezultat este salvat pe hardisc (dischetă).
19 4. Este încărcat de pe hardisc compilatorul şi este lansat în execuţie. 5. Este încărcat de pe hardisc (dischetă) fişierul sursă. 6. Începe compilarea, care poate dura câteva minute. Dacă este întâlnită cel puţin o eroare, se trece înapoi la etapa 1. 7. Este produs un program cod obiect, care poate fi salvat pe hardisc (dischetă) şi/sau rulat. Dacă este întâlnită o eroare de execuţie, se trece înapoi la pasul 1.
Figura 1.7. Operarea unor limbaje de nivel înalt: a) compilate; b) interpretate Un interpretor este mai uşor de utilizat şi pentru multe aplicaţii minusul de viteză este nesemnificativ. BASIC este, în general, un limbaj interpretat. PASCAL, C, FORTRAN sunt, de obicei, compilate. Figura 1.7 prezintă simplificat modul de operare al unor limbaje de nivel înalt compilate sau interpretate. 1.5.4. Programe de aplicaţie Pe măsură ce calculatoarele au devenit tot mai răspândite, au fost scrise multe programe pentru a permite utilizatorului să definească execuţia task-urilor, fără a-şi face probleme despre cum va executa calculatorul aceste task-uri. Acestea sunt cunoscute sub numele de programe de aplicaţie şi sunt tipizate, cum ar fi Lotus 123, Visicalc şi programe de gestiune a bazelor de date (cum ar fi DBASE şi Data Ease). În acestea, utilizatorul defineşte operaţii matematice complexe sau operaţii asupra bazelor de date, fără a "programa" calculatorul într-un sens convenţional.
20
1.6. Cerinţe ale controlului industrial Controlul industrial are mai multe cerinţe diferite decât alte aplicaţii. Un calculator convenţional, reprezentat schematic în figura 1.8.a primeşte uzual datele de la tastatură şi transmite date de ieşire către un monitor sau către o imprimantă. Datele procesate sunt, în general, caractere sau numere (de exemplu, numere de articole şi cantităţi existente într-o listă de stocuri a unui magazin).
Figura 1.8. Diferenţa dintre calculatoarele comerciale şi cele industriale: a) calculator comercial; b) calculator pentru control industrial Calculatorul de control din figura 1.8.b este foarte diferit. Intrările sale provin de la un număr mare de dispozitive. Deşi câteva din acestea sunt analogice (debit, temperatură, presiune, etc.), majoritatea sunt bipoziţionale. Similar, ieşirile sale pot fi semnale analogice şi discrete. Un sistem de control foarte mic poate avea în jur de 20 de conexiuni de I/E. Sistemele de dimensiuni medii au în jur de 200 de conexiuni de I/E. Tastatura, imprimanta şi monitorul pot exista, dar nu e necesar, iar funcţiile lor vor fi, probabil, diferite de cele dintr-un calculator de birou sau sistem. Deşi există posibilitatea conectării acestor semnale la un calculator convenţional, acest lucru necesită conexiuni non-standard şi cutii externe. Similar, deşi procesarea unui număr mare de semnale de I/E poate fi făcută în PASCAL, BASIC sau C, aceste limbaje sunt utilizate, în acest caz, în aplicaţii diferite de cele pentru care au fost proiectate, cu implicaţii negative asupra rezultatelor.
21 În figura 1.9.a, de exemplu, avem un simplu contactor al unui motor. Acesta poate fi conectat la un calculator, ca în figura 1.9.b. Cele două intrări sunt identificate prin adresele 1 şi 2 iar ieşirii (contactorului K1) i s-a atribuit adresa 10.
Figura 1.9. Comparaţie între conexiunile schemelor convenţionale şi ale schemelor bazate pe calculator pentru acţionarea contactorului unui motor: a) cu un circuit convenţional; b) cu un calculator Dacă considerăm că există o funcţie logică de program (N), care dă starea 1/0 adresei N, şi o procedură de bit (M, var) care transmite starea variabilei de program var la adresa M, putem reprezenta acţiunile din figura 1.9 prin secvenţa: repeat start:=bitread(1); stop:=bitread(2); run:=((start) or (run))& stop; bitwrite(10,run); until hellfreezesover unde start, stop şi run sunt variabile binare. Programul nu este prea clar, deşi sunt doar trei conexiuni. Un program de control industrial rămâne rareori neschimbat de-a lungul vieţii sale. Există întotdeauna modificări ale programelor survenite datorită modificării funcţionării instalaţiei. Aceste modificări vor fi făcute de către personalul de întreţinere şi trebuie făcute cu întreruperi minime ale producţiei. Adăugarea unui al doilea buton de stop şi unui al doilea buton de start la schema din figura 1.9 nu este o sarcină uşoară pentru cei de la întreţinere, dacă nu cunosc suficient de bine limbajul PASCAL ca să facă modificarea. În general, controlul cu calculator este realizat în timp real, astfel încât calculatorul are de răspuns la evenimente aleatoare, pe măsura apariţiei lor. Un operator aşteaptă ca un motor să pornească (şi, mai important, să se oprească) la o fracţiune de secundă după apăsarea unui buton. Deşi calculele
22 comerciale necesită calculatoare rapide, o diferenţă de o secundă sau două între timpii de calcul nu va fi observată de către utilizator. Asemenea diferenţe sunt, însă, inacceptabile în controlul industrial [12, 47, 53, 54]. Timpul însuşi este o parte a strategiei de control (de exemplu, porneşte ventilatorul, aşteaptă 10 secunde să se cureţe cuptorul de gaze, deschide valva pilot, aşteaptă 0,5 secunde, porneşte aprinzătorul, dacă există flacără deschide valva principală). Asemenea secvenţe sunt dificil de scris cu limbajele convenţionale. Majoritatea defectelor sunt cauzate de factori externi (limitatoare, relee, etc.) şi nu de unitatea de comandă. Permisiunea de a porni instalaţia, de exemplu, se poate baza pe semnale externe care implică debite de apă de răcire, presiune de ungere sau temperaturi în limite admise. Pentru găsirea rapidă a defectelor, personalul de întreţinere trebuie să fie capabil să monitorizeze acţiunea programului în timp ce acesta este în execuţie. Dacă există 10 semnale de interblocare care permit pornirea motorului, personalul de întreţinere trebuie să fie capabil să le verifice repede în cazul unui defect. Cu un calculator convenţional, acest lucru se poate obţine doar prin mărirea complexităţii programului. Sursele de energie electrică dintr-un mediu industrial sunt utilizate de multe sarcini, care induc perturbaţii (de exemplu, motoare mari pornind şi oprindu-se sau acţionări cu tiristoare, care produc vârfuri şi armonice în tensiunile de alimentare). Pentru un om, acestea sunt percepute ca nişte licăriri de lumină, dar într-un calculator acestea pot duce la deteriorarea datelor sau chiar la defectarea maşinii-unelte pe care o comandă calculatorul. Un calculator industrial trebuie să fie capabil să lucreze în medii foarte neprietenoase şi să răspundă rapid în caz de întrerupere a alimentării. Unele ieşiri trebuie să rămână în starea din acel moment iar altele trebuie să fie pornite sau oprite, până când operatorul ia măsurile de corecţie necesare. Proiectantul trebuie să aibă facilitatea de a defini ce se întâmplă atunci când sistemul porneşte de la rece. Ultimele consideraţii sunt legate de mediu. Un calculator de sistem mare lucrează într-o încăpere cu aer condiţionat, la 20° C şi umiditate controlată. Un PC de birou lucrează într-un mediu constant, deoarece oamenii nu lucrează bine la extreme. Un calculator industrial va trebui să lucreze, probabil, departe de oameni, la temperaturi de -10° C iarna şi +40° C vara. Aceste variaţii de temperatură conduc la dilatarea şi contracţia constantă a componentelor, ceea ce poate conduce la defectări, dacă în faza de proiectare nu s-a ţinut cont de acest factor.
23 La aceste modificări de temperatură se adaugă praful şi mizeria. Foarte puţine procese industriale sunt curate iar praful pătrunde pretutindeni (chiar şi la un factor de protecţie IP55, deoarece acesta protejează numai când uşile sunt închise). Praful va pătrunde în conectori şi, dacă aceştia nu sunt de cea mai bună calitate, vor putea apare defecte intermitente, care sunt foarte greu de detectat. În majoritatea aplicaţiilor în care se utilizează calculatoare, o eroare de programare sau un defect al calculatorului pot fi costisitoare şi deranjante. Când un calculator ce conduce o instalaţie se defectează sau când programatorul nu înţelege modul de funcţionare al instalaţiei, rezultatul poate consta în pagube şi accidente. Cerinţele noastre în privinţa calculatoarelor din controlul industrial sunt foarte ridicate şi merită reamintite: 1. Acestea trebuie proiectate astfel încât să reziste în medii industriale, cu tot ceea ce implică aceasta pentru temperatură, murdărie şi slaba calitate a alimentării principale. 2. Să fie capabile să proceseze semnale de I/E pe bit la tensiuni utilizate în industrie (24 V c.c. sau 220 V c.a.) şi semnale de I/E analogice. Extensia numărului de I/E trebuie să fie simplă şi rapidă. 3. Limbajul de programare trebuie să fie uşor de înţeles de către personalul de întreţinere (de exemplu, de către electricieni), care nu au antrenament pe calculator. Modificările de program trebuie să se poată face uşor pentru o instalaţie în modificare. 4. Trebuie să existe posibilitatea monitorizării funcţionării instalaţiei în timpul funcţionării (on-line), pentru a uşura detecţia defectelor. Trebuie ştiut că majoritatea defectelor apar la echipamentele externe (cum ar fi microîntrerupătoarele montate pe instalaţie, senzorii şi elementele de execuţie) şi trebuie să fie posibilă observarea funcţionării acestora de la calculatorul de comandă. 5. Sistemul trebuie să opereze suficient de rapid pentru controlul în timp real. În practică, "suficient de rapid" înseamnă un timp de răspuns de aproximativ 0,1 secunde, dar acesta poate varia în funcţie de aplicaţie şi de calculatorul utilizat. 6. Utilizatorul trebuie să fie protejat faţă de jargonul calculatorului, adică faţă de cuvintele pretenţioase specifice, împrumutate, de obicei, din alte limbi, folosite de anumite categorii profesionale cu scopul de a se distinge de masa vorbitorilor . 7. Siguranţa personalului, echipamentelor, instalaţiei şi a mediului înconjurător trebuie să fie prima prioritate.
24
1.7. Automatele programabile Automatele programabile constituie o clasă aparte în familia echipamentelor utilizate pentru controlul industrial. Ele încorporează într-o structură robustă o UCP (sau mai multe) şi dispozitivele de interfaţare cu semnalele din proces şi cu operatorul. UCP are astfel acces la toţi senzorii şi elementele de execuţie ale procesului. Ele asociază limbaje de programare adecvate modului de lucru al practicienilor din acest domeniu şi un domeniu de aplicaţii industriale extrem de vast. Se estimează că în producţia manufacturieră, peste 80 % din necesităţile în materie de control pot fi acoperite de către AP! 1.7.1. Scurt istoric La sfârşitul anilor ’60 producătorul american de automobile General Motors a fost interesat de utilizarea calculatoarelor la înlocuirea schemelor convenţionale cu relee utilizate în controlul uzinelor sale automate de producere a automobilelor. În 1969 a produs o specificaţie pentru un calculator industrial similar celei expuse în paragraful anterior. Două companii independente, Bedford Associates (devenită, ulterior, Modicon) şi Allen Bradley, au răspuns la specificaţia firmei General Motors. Fiecare a produs câte un calculator ce corespundea specificaţiei, similar celui din figura 1.10.a, şi care avea puţine asemănări cu calculatoarele comerciale de astăzi. El a fost denumit automat programabil şi avea 128 de I/E, 1koctet memorie program şi un set de instrucţiuni logice. Calculatorul însuşi, numit procesor central, a fost proiectat pentru a opera în mediu industrial şi a fost conectat cu exteriorul prin intermediul unor SB în care puteau fi montate modulele de I/E. În aceste prime sisteme existau patru tipuri diferite de module: de intrări discrete, de ieşiri discrete, de intrări analogice şi de ieşiri analogice. Fiecare modul poate citi 16 intrări sau poate acţiona 16 ieşiri. Un SB cu 8 module poate fi astfel conectat la 128 de dispozitive. Este foarte important modul de alocare a modulelor la alegerea utilizatorului, astfel încât să se permită o cât mai mare flexibilitate. În figura 1.10.b utilizatorul a instalat un modul de intrări de c.c., un modul de ieşiri de c.c., trei module de intrări de c.a. şi două module de ieşiri de c.a., lăsând o poziţie de rezervă pentru extensii ulterioare. Acest SB poate fi astfel conectat la 16 semnale de intrare în c.c., 16 semnale de ieşire în c.c., 48 semnale de intrare în c.a. şi 32 semnale de ieşire în c.a. Bineînţeles, nu este obligatorie utilizarea tuturor acestora.
25
Figura 1.10. Părţile componente ale unui sistem cu AP: a) unul din primele sisteme cu AP; b) un sertar de bază cu module Cea mai radicală idee a fost realizarea unui limbaj de programare bazat pe schemele cu relee şi contacte, cu intrările (de la limitatoare, butoane, etc.) reprezentate prin contacte de releu, şi cu ieşirile (către bobine, contactoare, becuri, etc.) reprezentate prin bobine de relee. Figura 1.11 arată modul de comandă al unui cilindru hidraulic acţionat prin butoane. Cursa sa este determinată de limitatoare care se deschid la sfârşitul cursei şi de bobine care pot fi comandate doar dacă pompa hidraulică merge. Această funcţionare este controlată prin programul din figura 1.11.b, care este identic cu circuitul cu relee necesar pentru a comanda cilindrul. Aceste programe arată ca treptele unei scări şi au fost denumite diagrame logice scară (de la Relay Ladder Logic). Programul este introdus printr-un terminal de programare (sau consolă de programare), ale căror taste au simbolurile (contacte normal deschise / normal închise, bobine, temporizatoare, numărătoare, ramificaţii,
26 etc.) cu care un electrician de întreţinere este familiarizat. Semnificaţia tuturor tastelor trebuie să fie evidentă. Programul, afişat pe display, va ilumina contactele şi releele activate, permiţând utilizarea terminalului de programare la depanare.
Figura 1.11. O aplicaţie simplă cu AP: a) cilindru hidraulic comandat cu AP; b) diagrama logică scară pentru comanda cilindrului; aceasta este bazată pe simbolurile americane: simbolul -] [- arată că semnalul trebuie să fie prezent iar simbolul -]/[- arată că semnalul nu trebuie să fie prezent Memoria este protejată cu baterii, pentru a preveni deteriorarea sau pierderea programelor la căderea alimentării. Programele pot fi păstrate pe suport magnetic, fapt care permite utilizarea unor programe diferite asupra unor produse diferite. Numele dat acestor echipamente a fost "controler programabil" sau "automat programabil" (de la Programmable Controller - PC). Numele de "controler logic programabil" sau PLC (de la Programmable Logic Controller) a fost de asemenea utilizat, dar este o marcă înregistrată a firmei Allen Bradley. Din nefericire, în ultimii ani literele PC sunt utilizate pentru
27 a desemna calculatoarele personale, producând confuzie în lumea automatelor programabile şi a calculatoarelor personale, deoarece acestea din urmă pot fi utilizate acum ca şi terminale de programare. Pentru a elimina confuzia vom utiliza denumirile "automat programabil" pentru PLC şi "calculator personal" pentru PC. Se observă că AP au fost de la bun început şi rămân în continuare echipamente concepute de automatişti pentru automatişti. Perfecta lor adaptare la nevoile industriale este consecinţa cea mai importantă. Această adaptare acoperă nu numai aspectul programării lor, ci şi aspectele materiale. AP sunt perfect adaptate mediilor industriale: I/E în conformitate cu standardele semnalelor industriale, protecţie la fenomenele electromagnetice, rezistenţă la şocuri, la vibraţii şi la coroziune, dispozitive de siguranţă în cazul variaţiilor sau întreruperilor tensiunii de alimentare. Toate aceste consideraţii explică pătrunderea în forţă a AP în industrie, ritmul anual de creştere a utilizării lor în industrie fiind de 20-30 % (!), acompaniat de o dinamică inovatoare remarcabilă. Odată apărute primele microprocesoare, ele au fost utilizate pentru simplificarea conceperii procesoarelor pentru AP. Constructorii de AP au putut astfel dezvolta familii omogene de AP, capabile să rezolve într-o manieră eficientă şi rentabilă o gamă largă de probleme de control, de la cele mai simple (câteva I/E) la cele mai complicate (sute sau mii de I/E). Pe de altă parte, sub presiunea utilizatorilor, AP au ieşit rapid din câmpul de aplicaţii iniţial (pur logic) prin integrarea operaţiilor aritmetice, a regulatoarelor PID, a comenzii axelor, a tehnicilor de manipulare a şirurilor de caractere, etc. Trebuie observat că, deşi posibilităţile AP sunt apropiate de cele ale calculatoarelor convenţionale, modul lor de programare a rămas specific, apropiat modului de gândire al automatiştilor. Şi AP au contribuit la deschiderea căii către controlul distribuit. Primele AP aveau UCP cablată şi erau relativ scumpe. După apariţia AP bazate pe microprocesoare şi după scăderea, în consecinţă, a costului lor, a apărut tendinţa de a distribui sarcinile controlului între mai multe AP de capacitate mai mică, interconectate prin reţele de comunicaţie. Acest lucru a condus, la rândul său, la îmbunătăţirea fiabilităţii (defectarea unui AP are consecinţe limitate), a vitezei (prin paralelismul operaţiilor) şi la reducerea costului cablării (cu condiţia de a putea plasa fiecare AP în imediata vecinătate a procesului comandat de el). Practic, toţi producătorii de AP şi-au creat propriile lor reţele de comunicaţie. Pe baza acestei experienţe, tot ei au devenit membrii cei mai
28 activi ai proiectului MAP [2], de creare a unui standard internaţional de comunicaţie. 1.7.2. Normalizarea La nivelul exploatării AP, până la începutul anilor ’90 a existat o situaţie similară celei apărute în informatică în anii '80, când fiecare constructor propunea propriile sale limbaje de programare, propriul său mediu de programare, propriile sale reţele de comunicaţie, ş.a.m.d. A rezultat o "fidelizare" forţată a utilizatorilor, deoarece trecerea de la o marcă de AP la alta necesită un efort mare în ce priveşte instruirea întregului personal implicat. Pentru a se depăşi această situaţie, au fost întreprinse eforturi în direcţia normalizării (standardizării). Primele acţiuni au fost îndreptate înspre sistemele de comunicaţie pentru a obţine compatibilitatea între AP diferite, sau cel puţin interoperabilitatea lor. Pe lângă proiectul MAP, menţionat anterior, au existat propuneri pentru reţele de teren, cum ar fi PROFIBUS, ASI, etc., care acum au devenit realitate (vezi capitolul 7). În 1993, Comisia Internaţională de Electrotehnică (International Electrotechnical Comission – IEC) a elaborat norme specifice automatelor programabile în standardul IEC 1131. Aceste norme vizau următoarele aspecte: - IEC 1131-1: informaţii generale - IEC 1131-2: specificaţia şi testarea echipamentelor - IEC 1131-3: limbajele de programare - IEC 1131-4: recomandări pentru utilizatori - IEC 1131-5: specificaţii referitoare la comunicaţii Aceste standarde nu intenţionează să impună un stil rigid. Diferiţii producători de AP pot avea medii de programare diferite, dar elementele conceptuale trebuie să fie aceleaşi. 1.7.3. Tendinţe ale pieţei În ultimii ani, piaţa s-a decantat considerabil, rămânând un număr relativ mic de firme constructoare de AP. Acum, utilizatorul alege un AP pe baza renumelui producătorului şi a calităţii reprezentanţei locale a acestuia (în special în ce priveşte partea de service). Pe lângă constructorii de AP recunoscuţi, normalizarea menţionată în paragraful anterior deschide piaţa controlului industrial unor protagonişti noi. În primul rând, normalizarea a consolidat poziţia proiectanţilor de
29 programe de AP, care dispun acum de o bază de lucru solidă şi recunoscută universal. Înainte de standardizare, aceştia trebuiau să conceapă ei înşişi metodologii de programare şi să convingă potenţialii clienţi să le accepte, cu toate riscurile pentru aceştia din urmă în cazul dispariţiei firmelor de proiectare. Deşi scopul principal al acestor firme a rămas programarea AP, în paralel ele au activat şi în domeniul programării calculatoarelor convenţionale, descoperind astfel avantajele simbiozei dintre AP şi calculatoarele convenţionale. Avantajul acestei soluţii constă în faptul PC-urile sunt prevăzute cu periferice standard (discuri, monitoare, etc.) şi cu executive în timp real şi în multitasking. Aceasta permite o asociere armonioasă a funcţiilor de automatizare clasice şi a funcţiilor specifice programelor în limbaje de nivel înalt, fapt util în multe aplicaţii practice.
30
CAPITOLUL 2 STRUCTURA AUTOMATELOR PROGRAMABILE
2.1.
Prezentare generală a automatelor programabile
Aşa cum s-a menţionat în capitolul anterior, AP sunt sisteme de calcul special proiectate pentru controlul proceselor. Ele fac parte din marea familie a sistemelor de control distribuite şi sunt sisteme de control în timp real. Hardware-ul unui AP constă într-o UCP bazată pe microprocesor (sau microcontroler), o memorie, un număr de puncte de intrare (prin care se primesc semnalele ce parvin de la senzori şi de la operator), un număr de puncte de ieşire (prin care sunt transmise comenzile spre elementele de execuţie şi semnalizările spre operator) şi interfeţe seriale şi/sau paralele pentru conectarea AP cu dispozitive de programare, cu calculatoare PC sau cu alte AP [39]. UCP (+ memoria), punctele de I/E şi circuitele de interfaţă sunt construite sub forma unor module de dimensiuni tipizate care se instalează în sloturile unui SB (rack, base). Acesta are rolul de a încorpora în sloturile sale modulele din configuraţia sistemului într-o formă compactă şi de a asigura comunicaţia între acestea. Unele SB încorporează şi sursele de alimentare necesare funcţionării modulelor. Alte modele de SB nu conţin aceste surse, dar permit instalarea unor module ce conţin aceste surse. De asemenea, unele AP nu necesită modul de interfaţare, întrucât modulul UC încorporează şi circuitele de interfaţă. Figura 2.1 ilustrează o structură tipică de AP. În funcţie de gradul de flexibilitate, AP pot fi de trei tipuri: compacte, compacte extensibile şi modulare. AP compacte au o structură fixă, ce nu poate fi modificată sau extinsă de către utilizator. Este cazul AP mici (cu număr mic de puncte de I/E, de ordinul zecilor). Un exemplu în
31 acest sens îl reprezintă AP din familia Micrologix, produse de către Allen Bradley. AP compacte extensibile (de exemplu, cele din seria FX2N a firmei Mitsubishi) permit adăugarea la un AP compact (denumit base unit) a unui număr limitat de module de I/E, pentru a adapta structura acestuia la necesităţile aplicaţiei. AP de acest tip fac parte din clasa AP medii, cu un număr de puncte de I/E de ordinul sutelor.
Figura 2.1. Structură tipică de AP AP modulare oferă cea mai mare flexibilitate. Există o mare varietate de module din fiecare tip (UCP, de I/E, etc) şi de SB, din care proiectantul poate "croi" un sistem cât mai apropiat de cerinţele aplicaţiei considerate. Exemple de AP din această clasă sunt SIMATIC S5 al firmei Siemens, PLC – 5 al firmei Allen Bradley, etc. Din punct de vedere al numărului de puncte de I/E, AP modulare se înscriu în clasa AP medii şi mari (cu mii de puncte de I/E). Fiecare producător de AP pune la dispoziţia utilizatorului o gamă largă de surse de alimentare, SB, module UCP şi de interfaţare şi module de I/E. Aceştia din urmă vor alege acele componente ale sistemului care corespund necesităţilor aplicaţiei considerate. Operaţiunea de selecţie a modulelor şi SB în funcţie de cerinţele aplicaţiei se numeşte configurare. De aici reiese unul din marile avantaje ale AP, şi anume flexibilitatea lor: ele pot fi configurate în funcţie de specificul aplicaţiei. În continuarea capitolului sunt discutate în detaliu aspectele prezentate în acest paragraf, cu exemplificări pentru câteva tipuri de AP considerate reprezentative [18, 56, 57, 58, 59, 63, 64, 67, 68, 69, 70, 71].
32
2.2. Module de I/E După cum s-a arătat în primul capitol, modulele de I/E au rolul de a asigura transferul semnalelor între AP şi instalaţie. Modulele de intrare colectează semnalele ce provin de la senzorii instalaţiei şi de la comenzile operatorului iar modulele de ieşire transmit comenzile generate de către programul AP către elementele de execuţie ale instalaţiei şi către confirmările/semnalizările operatorului. Semnalele din proces se conectează la modulele de I/E prin cabluri individuale sau multifilare, utilizând şuruburi sau conectori, în funcţie de tipul terminalelor modulelor de I/E. În funcţiei de tipul semnalelor electrice transferate, modulele de I/E pot fi de două feluri: discrete şi analogice. În acest capitol vor fi discutate modulele de I/E discrete, cele analogice făcând obiectul capitolului 6. 2.2.1. Module de intrări discrete Modulele de intrări discrete servesc la conectarea la AP a semnalelor ce provin de la senzori cu două stări: butoane, limitatoare, microîntrerupătoare, etc. Semnalele sunt, de regulă, tensiuni continue sau alternative, la diverse nivele (5 V, 24 V, 110 V, 220 V c.c. sau c.a.). În plus, aceste module realizează o conversie a semnalelor de intrare dinspre proces la nivelul semnalelor utilizate în interiorul AP şi o izolare electrică între AP şi semnalele de intrare. AP operează în interior la +5 Vcc iar dispozitivele ce furnizează semnalele de intrare pot opera la tensiuni diferite. Combinarea acestor două tensiuni poate cauza pagube mari şi, probabil, ireparabile în partea electronică a AP. Pot interveni probleme, mai puţin evidente, şi datorită zgomotelor electrice provenite de la vârfurile de tensiune pe liniile de semnal sau de la curenţii de pe liniile de Nul c.a. sau – c.c. Diferenţele de potenţial între masa AP şi a instalaţiei pot, de asemenea, cauza probleme. Problema zgomotelor va fi discutată în detaliu în capitolul 9. Există, deci, suficiente motive pentru separarea tensiunilor de alimentare ale instalaţiei şi ale AP printr-un fel de barieră electrică, ca în figura 2.2. Aceasta dă certitudinea că AP nu va fi afectat de nici un eveniment apărut în instalaţie. Chiar şi un defect de cablu care va pune 380 V c.a. pe un modul de intrări de c.c. va afecta doar modulul de intrare. AP şi celelalte module de I/E nu vor avea de suferit. Acest lucru este realizat prin intermediul unor izolatori optici (un LED şi un fototranzistor, care formează un optocuplor sau optoizolator, prezentaţi în figura 2.3.a). Când curentul trece prin dioda D1, aceasta emite
33 lumină, cauzând comutarea tranzistorului TR1 din blocat în saturat. Deoarece nu există conexiuni electrice între diodă şi tranzistor, este obţinută o izolare electrică foarte bună (tipic 1-4 kV).
Figura 2.2. Protecţia AP faţă de defectele externe. Sursa de alimentare a AP (L1/N1) este separată faţă de alimentarea instalaţiei (L2/N2).
Figura 2.3. Izolarea optică a intrărilor: a) un izolator optic; b) un modul de intrări în c.c.; c) un modul de intrări în c.a.
34 O intrare de c.c. poate fi obţinută ca în figura 2.3.b. Când butonul este apăsat, curentul va trece prin dioda D1, cauzând comutarea tranzistorului TR1, transmiţând, astfel, prin buffer semnalul "1" către logica internă a AP. Dioda D2 este un LED utilizat în detecţia defectelor externe şi pentru a arăta când este prezent semnalul de intrare. Rezistorul R1 fixează tensiunea intrării. Modulele de intrări în c.c. sunt disponibile, uzual, în trei game de tensiune: 5 V c.c. (TTL), 12-24 V, 24-50 V.
Figura 2.4. Un modul de intrare şi conectarea intrărilor la modul O structură posibilă de circuit de intrare în c.a. este prezentată în figura 2.3.c. Puntea redresoare este utilizată pentru conversia curentului alternativ în curent continuu complet redresat. Rezistorul R2 şi condensatorul C1 formează un filtru (cu o constantă de timp de aproximativ 50 ms), pentru a se putea furniza un semnal "curat" către AP. Ca şi mai înainte, lampa LP1 lucrează ca un indicator de semnal de intrare pentru detecţia defectelor iar rezistorul R3 fixează gama de tensiune. Figura 2.4 prezintă un modul de intrare care poate recepţiona opt semnale de intrare. 2.2.2. Module de ieşiri discrete Modulele de ieşiri discrete servesc la transmiterea comenzilor generate de programul AP spre elementele de execuţie bipoziţionale (relee,
35 contactoare, becuri de semnalizare, etc.), la nivelele de tensiune necesare. De regulă, aceste module necesită utilizarea unor surse externe pentru comanda elementelor de execuţie.
Figura 2.5. Tipuri de module de ieşire: a) modul cu ieşiri cu sursă comună; b) modul cu ieşiri cu surse separate
36 Conexiunile de ieşire necesită, de asemenea, o barieră pentru a limita neajunsurile datorate defectelor inevitabile ale instalaţiei şi pentru a opri zgomotele electrice, care "deranjează" procesorul. Interferenţa poate fi o mare problemă a ieşirilor, deoarece modulele de ieşire controlează curenţi mari şi, deseori, sarcinile externe sunt inductive (de exemplu, bobine). Există două tipuri de bază de module de ieşire. În figura 2.5.a opt ieşiri sunt alimentate de la o sursă comună, care este conectată la AP, dar este separată de sursa AP. Această structură permite cea mai simplă şi mai ieftină instalare. Fiecare ieşire are un fuzibil de protecţie propriu pe modul şi o siguranţă sau întreruptor pe circuitul comun. Este important să se proiecteze sistemul astfel încât un defect pe terminalul 3, de exemplu, să ardă fuzibilul FS3 dar să nu deterioreze alimentarea întregului modul, dezactivând toate ieşirile. Acest aspect, denumit "selectivitate", este discutat în capitolul 9. Frecvent, un AP trebuie să acţioneze ieşiri care au alimentări proprii. Un exemplu tipic este comanda din diferite locuri a unui motor, unde fiecare contactor are o sursă internă de 110 V separată, derivată de la barele de 380 V. Dispunerea din figura 2.5.a nu poate fi utilizată aici fără separarea contactelor releelor interne acţionate de AP. Un modul de ieşiri izolate, prezentat în figura 2.5.b, are ieşiri şi protecţii individuale şi se comportă exact ca un comutator. Acesta poate fi conectat direct la orice circuit din exterior. Dezavantajul constă în faptul că modulul este mai complicat (două conexiuni/ieşire) şi trebuie luată în considerare protecţia muncii. De exemplu, un modul cu 8 ieşiri izolate poate primi pe terminalele sale tensiuni diferite din 8 direcţii diferite. După cum reiese din figura 2.5, sunt disponibile ieşiri pe releu (care dau şi izolaţia dorită), dar ele nu sunt foarte utilizate. Un releu este un dispozitiv electromagnetic cu părţi în mişcare şi, deci, cu o viaţă limitată. Un dispozitiv pur electronic este mult mai fiabil. Mai mult, o sarcină inductivă (bobina unui releu) poate cauza interferenţe (scântei), care conduc la defectarea prematură a contactului. În figura 2.6 este prezentat un circuit de ieşire pe tranzistor. Este utilizată din nou izolarea optică pentru a obţine separarea între instalaţie şi AP. Dioda D1 se comportă ca o diodă de tăiere a vârfurilor, care reduce amplitudinea vârfurilor întâlnite la sarcinile inductive. Figura 2.6.b arată acest efect. Starea ieşirii poate fi urmărită pe LED1. Figura 2.6.a prezintă o ieşire care generează curent (source output). Dacă sunt utilizate tranzistoare npn, rezultă un canal de ieşire care absoarbe curent (sink output), ca în figura 2.6.c.
37
Figura 2.6. Circuite de ieşire în c.c.: a) curentul de ieşire într-un circuit de c.c.; b) tensiunea în punctul X – efectul diodei de tăiere a vârfurilor; c) curentul de intrare prin circuit Informaţia că o ieşire generează curent sau absoarbe curent este necesară pentru a şti cum să se conecteze sarcina la sursa de c.c. externă: - în cazul generării de curent (figura 2.6.a) una din bornele sarcinii se leagă la borna (-) a sursei de c.c. externe; cealaltă bornă a sarcinii se leagă, evident, la modulul de ieşire; - în cazul absorbţiei de curent (figura 2.6.c) una din bornele sarcinii se conectează la borna (+) a sursei de c.c. externe. Un modul de ieşiri în c.a. utilizează de obicei triace, un circuit tipic fiind prezentat în figura 2.7.a. Triacele au avantajul că se dezactivează la trecerea prin zero a curentului prin sarcină, aşa cum reiese din figura 2.7.b, ceea ce elimină interferenţele provocate la dezactivarea sarcinilor inductive.
38 Dacă este posibil, toate sarcinile în c.a. ar trebui să fie acţionate cu triace, şi mai puţin cu relee.
Figura 2.7. Circuit de ieşiri în c.a.: a) starea ieşirii în c.a. – faptul că ieşirea generează/consumă curent este irelevant la ieşirile în c.a.; b) efectul ieşirii pe triac Un modul de ieşire va avea o limită maximă a curentului pe care îl poate suporta, determinat, mai degrabă, de traseele de pe cablajul imprimat decât de dispozitivele de ieşire. Există fixat şi un curent maxim pe fiecare ieşire (tipic 2A) şi un curent total pe modul (tipic 6A). Uzual, curentul total permis pe modul este mai mic decât suma curenţilor individuali permişi de ieşiri. De aceea, în practică este bine să se reducă curentul total pe modul prin conectarea unor ieşiri care nu pot fi activate simultan (de exemplu, înainte/înapoi, rapid/încet, etc.).
2.3.
Identificarea adreselor de I/E
În programele de AP, punctele de I/E sunt "văzute" sub forma unor adrese. În general, acestea nu pot fi alocate direct de către proiectant punctelor de I/E. În prima fază, fiecărui modul de I/E îi revine un grup de
39 adrese determinat de poziţia modulului în SB. De aceea, aceste adrese se numesc adrese hardware. Apoi, proiectantul va atribui fiecărui punct de I/E câte o adresă unică din grupul de adrese ce revine modulului considerat. Din acest moment se crează o relaţie unică între fiecare semnal din proces, punctul de I/E prin care acesta este conectat la AP şi adresa de I/E care este utilizată în program pentru fiecare semnal. Prin urmare, un semnal de I/E este identificat prin poziţia sa fizică într-un anumit SB sau şir de cleme, prin poziţia modulului în acest sertar şi prin numărul de ordine al bornei modulului la care este conectat semnalul. Conectarea unui semnal la un alt punct de I/E atrage după sine modificarea adresei semnalului respectiv. Deci, la majoritatea producătorilor adresarea I/E este uzual bazată pe ideea sertar de bază/modul/bit.În continuare vor fi prezentate câteva exemple în acest sens. 2.3.1. Adresarea I/E la AP PLC-5 al firmei Allen Bradley Acest AP poate avea până la 8 SB în versiunea 5/25. SB care conţine procesorul este automat definit ca SB 0, adresele celorlalte SB (în gama 1÷7) putând fi alocate de către proiectanţi prin switch-uri (comutatoare) de setare [58, 71]. Aceste SB sunt conectate la procesor la distanţă printr-un cablu de comunicaţie serială. Există trei moduri diferite în care pot fi configurate SB Allen Bradley. Aici va fi discutată cea mai simplă (şi, probabil, cea mai logică) metodă. Fiecare SB conţine 16 poziţii pentru module, grupate în perechi, întrun locaş denumit slot. Deci, un SB conţine 8 sloturi, numerotate 0÷7. Un slot poate conţine un modul de intrare pe 16 puncte şi un modul de ieşire pe 16 puncte sau două module pe 8 puncte (nu neapărat de acelaşi tip). De exemplu, în figura 2.8 slotul 1 conţine un modul de intrare pe 16 puncte şi un modul de ieşire pe 16 puncte iar slotul 2 conţine două module de ieşire pe 8 puncte. Motivele pentru care modulele pe 8 puncte pot fi preferabile celor pe 16 puncte sunt discutate în capitolul 9. Adresarea intrărilor este: I: Sertar Slot/Bit unde Bit este de două cifre. Allen Bradley utilizează adresarea biţilor în octal, astfel că numerele disponibile sunt 00÷07 şi 10÷17. Adresa I: 27/14 reprezintă intrarea 14 din slotul 7 al SB 2.
40
Figura 2.8. Dispunerea modulelor de I/E la PLC-5 Allen Bradley Ieşirile sunt adresate într-o manieră similară: O: Sertar Slot/Bit astfel că O:35/06 este ieşirea 6 din slotul 5 al SB 3. Se observă că dacă se utilizează module pe 16 puncte, o intrare şi o ieşire pot avea aceeaşi adresă Sertar Slot/Bit, fiind diferenţiate doar de "I:" sau de "O:". Cu module pe 8 puncte adresele de I/E nu vor mai putea fi aceleaşi. Figura 2.9 arată cum se adresează diverse semnale. 2.3.2. Adresarea I/E la AP SIMATIC S5 al firmei Siemens În sistemele AP ale firmei Siemens I/E pe bit sunt aranjate în grupuri de 8 biţi, numite octeţi [3, 69]. Un semnal este identificat prin numărul său de bit (0÷7) şi numărul său de octet (0÷127). Intrările sunt notate I. iar ieşirile sunt notate prin Q.. I 9.4 este, deci, intrarea cu adresa de bit 4 din octetul 9 iar Q 63.6 este ieşirea cu adresa de bit 6 din octetul 63. Ca şi Allen Bradley, Siemens utilizează sloturi pentru instalarea modulelor într-unul sau mai multe SB. Modulele disponibile au 16 biţi (2 octeţi) sau 32 biţi (4 octeţi). Un sistem poate fi construit cu SB locale conectate prin cablu de interfaţare paralelă sau cu SB comandate la distanţă prin cablu serial. SB locale sunt mai rapide şi înlătură unele probleme datorate ciclului program, care apar la SB comandate la distanţă prin cablu serial, în cazul aplicaţiilor de mare viteză, dar sunt totuşi locale. Ele nu pot fi mai departe de câţiva metri de procesor. Cea mai simplă formă de adresare este cu adresare fixă a sloturilor, prezentată în figura 2.10.a. 4 octeţi sunt atribuiţi secvenţial fiecărui slot, 0÷3
41 pentru primul slot, 4÷7 pentru al doilea, ş.a.m.d. Intrarea I 12.4 este, deci, bitul 4 din primul octet al modulului din slotul 3 al primului SB. Dacă sunt utilizate module de 16 biţi (2 octeţi) cu adresare fixă (4 octeţi), cei doi octeţi mai semnificativi din fiecare slot sunt pierduţi.
Figura 2.9. Identificarea semnalelor instalaţiei
Figura 2.10. Dispunerea modulelor la Siemens: a) adresare fixă a sloturilor; b) adresarea variabilă a sloturilor. Adresele şi numărul octeţilor (2 sau 4) pe modul sunt setate prin switch-uri. Adresarea secvenţială nu este obligatorie, dar este recomandabilă.
42 În toate sistemele utilizatorul are posibilitatea alegerii adreselor de octet. Aceasta este cunoscută ca adresare variabilă a sloturilor (figura 2.10.b). Prima adresă de octet şi domeniul (2 octeţi pentru modulele pe 16 biţi sau 4 octeţi pentru modulele pe 32 biţi) pot fi setate independent pentru fiecare slot prin switch-urile din modulul adaptor al fiecărui SB. Deşi poate fi setată orice combinaţie din cele permise, este recomandată utilizarea unei ordonări logice, similară celei din figura 2.10.b. Siemens utilizează notaţii diferite pentru ţări diferite, prin terminale de programare multilimbaj. Un standard comun european este cel german, unde E (Eingang = intrare) este utilizat pentru intrări (de exemplu, E 4.7) iar A (Ausgang = ieşire) este utilizat pentru ieşiri (de exemplu, A 3.5). 2.3.3. Adresarea I/E la AP GEM-80 al firmei CEGELEC GEM-80, de asemenea, configurează I/E în funcţie de SB, sloturi şi biţi. SB ce înglobează procesorul poate conţine 8 poziţii pentru module iar I/E adiţionale pot fi conectate în SB cu 12 poziţii, local (lângă procesor) printr-un cablu panglică (iar I/E vor fi de bază) sau la distanţă, printr-un cablu serial [64]. Când este necesar un număr mic de I/E la distanţă pot fi utilizate unităţi compacte cu 8 intrări/8 ieşiri. Figura 2.11 prezintă structura unui sistem GEM-80.
Figura 2.11. Structura unui sistem GEM-80 Pe lângă structura de I/E de bază este, de asemenea, disponibilă o magistrală I/E de verificare, care permite procesorului să verifice starea diverselor module cu ajutorul unei unităţi inteligente GEM.
43
Figura 2.12. Adresarea I/E la GEM-80 cu module pe 8 biţi I/E sunt adresate prin cuvinte de 16 biţi, un cuvânt corespunzând la 1 sau 2 poziţii de module, cu prefixul A pentru intrări şi B pentru ieşiri. Adresele de bit sunt alocate în zecimal de la 0 la 15. Deci, A 2.13 este bitul de intrare 13 din cuvântul 2 iar B 7.05 este bitul de ieşire 5 din cuvântul 7 (vezi figura 2.12). Un cuvânt poate fi numai intrare sau numai ieşire. Nu este permisă duplicarea cuvintelor de adresă. Modulele de I/E sunt disponibile pe 8 biţi, 16 biţi şi 32 biţi, astfel că un slot în care este doar un modul poate fi o jumătate de cuvânt, un cuvânt sau 2 cuvinte, în funcţie de modulele utilizate. Adresele de slot individuale pot fi setate prin switch-uri rotative fixate pe panoul din spatele fiecărui SB. Utilizatorul are o libertate mai mare sau mai mică în alegerea adreselor, dar, de obicei, este mai bine să se utilizeze o logică secvenţială. Figura 2.12 arată o dispunere tipică pentru un sistem mic. 2.3.4. Adresarea I/E la AP Master al firmei ABB Sistemul Master al firmei ABB (la origine ASEA) este un sistem mai complex decât oricare din cele discutate până acum [56]. Organizarea sa aduce o apropiere între utilizator şi calculator iar limbajul utilizat este mai apropiat de tehnicile utilizate de programatorii de calculatoare. Dacă AP discutate până acum ar putea fi reprezentate prin limbajul BASIC, atunci pentru AP Master al firmei ABB ar corespunde limbajele PASCAL sau C. Comparaţia este mai exactă decât pare. BASIC este uşor şi rapid de utilizat, dar poate degenera în programe neperformante, dacă nu sunt luate precauţii suplimentare. PASCAL şi C sunt mai puternice, dar totul trebuie declarat iar limbajul impune utilizatorului organizarea şi structurarea programului. Sistemul Master este prevăzut cu module procesoare şi SB, ca în figura 2.13.a. Fiecare modul de I/E are în partea din spate doi conectori, cel
44 de sus conectând modulul la magistrala procesorului iar cel de jos conectând modulul la un bloc separat de terminale (unul pe modul, montat pe partea din spate). Modulele de I/E nu sunt identificate prin poziţia lor în SB, ci prin adresa setată pe modul printr-o mufă mică cu terminale cositorite. Deci, adresele de I/E nu reflectă poziţia modulului iar un modul poate fi, teoretic, mutat (împreună cu conectorul de jos) fără a se modifica adresarea sa. Memoria procesorului este structurată ca în figura 2.13.b. I/E sunt conectate la un procesor al bazei de date, dar, spre deosebire de AP anterioare, proiectantul poate stabili diverse viteze de lucru pentru diferite module. Proiectantul are, de asemenea, un rol major asupra organizării programului de AP. Acesta este modularizat, aşa cum vom vedea mai târziu, iar utilizatorul poate specifica diverse frecvenţe de rulare (execuţie) pentru diferite module ale programului.
Figura 2.13. Sistem Master ABB: a) structura unui sistem Master ABB; b) structura programului; c) o parte a bazei de date (pentru modulul de intrări discrete)
45 Figura 2.13.c arată baza de date pentru un modul de intrare. Există două nivele de definire. Nivelul superior (1) dă detalii asupra plăcii însăşi, cum ar fi tipul modulului şi adresa (posibil şi rata de scanare), iar nivelele inferioare (2) dau relaţii despre fiecare canal al plăcii, cum ar fi numele şi dacă semnalul trebuie inversat sau nu. Baza de date conţine detalii despre toate I/E care pot fi adresate apoi în program fie prin identificatorul bazei de date (de exemplu, DI 3.1), fie prin numele său unic (de exemplu, Pompă hidraulică 2 pornită prin butonul PB). 2.3.5. Adresarea I/E la AP F2 al firmei Mitsubishi F2 al firmei Mitsubishi este un exemplu tipic de AP mic, cu conexiuni de I/E, sursă de alimentare şi procesor, toate înglobate într-o singură unitate [67]. Cea mai mică unitate, F2-40M, are 24 de intrări şi 16 ieşiri (este caracteristic proceselor unde proporţia I/E este 3:2). Cele 24 de intrări sunt notate X400÷X427, în octal, iar cele 16 ieşiri sunt notate Y430÷Y447. Numerele, aparent arbitrare, corespund direct locaţiilor de memorie unde sunt păstrate imaginile intrărilor şi ieşirilor. Adrese similare sunt utilizate şi în sistemele mai mari ale seriei. 2.3.6. Adresarea I/E la AP APC700 al firmei IPA S.A. Bucureşti Această famile de AP este constituită din următoarele modele [59]: a. APC 700 b. APC 700 EXTENSIE c. APC 701 d. APC 701 EXTENSIE e. APC 702 f. APC 702 EXTENSIE APC 700 are 24 intrări discrete, 16 ieşiri discrete, 1 intrare analogică şi o ieşire analogică. APC 700 EXTENSIE are 48 intrări discrete, 32 ieşiri discrete, 2 intrări analogice şi 2 ieşiri analogice. Celelalte patru modele au un număr de I/E comparabil cu al primelor două modele. Intrările sunt adresate sub forma I : (de exemplu, I 2:3) iar ieşirile sub forma Q : (de exemplu, Q 1:7).
2.4.
Adresarea memoriei interne de un bit
Pe lângă I/E, un AP are nevoie să memoreze semnale interne pentru date cum ar fi "pompa funcţionează", "sistem fără defect", "defect la partea
46 de ungere", etc. Ar fi foarte costisitor să se aloce ieşiri adevărate pentru aceste semnale, astfel că toate AP oferă memorii interne de un bit. Acestea sunt cunoscute sub diverse nume, ca "relee auxiliare" (Mitsubishi), "fanioane" (Siemens), "spaţiu general de lucru" (GEM-80) şi "memorie de un bit" (Allen Bradley). Adresele utilizate în programe variază, desigur, de la producător la producător. Mitsubishi utilizează notaţia Mnnn pentru adresă, cu nnn=100÷377 în octal. Ca la majoritatea AP mici, structura memoriei este fixă şi nu poate fi definită de utilizator. În altele, mai mari, care vor fi discutate mai târziu, utilizatorul poate defini orice număr necesar de locaţii de memorie. Notaţia la Siemens este F octet.bit, de exemplu F 27.06. GEM-80 are o varietate de spaţii generale de lucru. Cel mai utilizat este numit tabela G şi în program apare ca G cuvânt.bit (de exemplu, G 52.14). Tabela G este ştearsă când AP trece din starea "oprit" către starea "execuţie". Memoria din tabela R (de exemplu, R 12.03) memorează starea sa când procesorul este oprit sau când alimentarea este întreruptă. Memoria de bit la PLC-5 este notată prin B 3/n (de exemplu, B 3/192), unde n desemnează semnalul (bitul), B înseamnă memoria de un bit iar 3 este obligatoriu şi apare atunci când PLC-5 memorează date în fişiere. Astfel: - memoriile de un bit sunt constituite în fişierul 3 (B3) - temporizatoarele sunt constituite în fişierul 4 (T4) - numărătoarele sunt constituite în fişierul 5 (C5) aşa cum se va vedea mai târziu. Limbajul de programare al AP Master al firmei ABB nu necesită neapărat memorii interne de un bit, această funcţie fiind îndeplinită de elementele şi conexiunile din interiorul bazei sale de date şi de către limbajul de programare. La APC 700 al firmei IPA S.A. Bucureşti variabila de memorie de un bit este denumită Marker. Notaţia este M octet:bit, unde octet=0÷127 şi bit=0÷7.
2.5.
Execuţia programelor
În esenţă, programele de aplicaţie sunt executate de către toate AP într-o manieră ciclică, adică execuţiile aceluiaşi program se succed în timp. O execuţie a programului de aplicaţie se numeşte ciclu program. La primele modele de AP execuţia programelor era liniară, ramificaţiile de program nefiind posibile. Ulterior, programele de aplicaţie au putut utiliza ramificaţii
47 şi repetiţii. Modelele de AP moderne sunt prevăzute, în plus, cu posibilitatea utilizării subrutinelor şi a transferului prin întreruperi. Totuşi, indiferent de modelul de AP discutat, caracteristica fundamentală a lor o reprezintă execuţia ciclică a programelor de aplicaţie. 2.5.1. Ciclul program Un program de AP se comportă ca o buclă executată permanent, ca în figura 2.14.a. Instrucţiunile sunt executate succesiv şi, după execuţia ultimei instrucţiuni, operarea se reia cu execuţia primei instrucţiuni. Deci, un AP nu comunică continuu cu procesul, ci intermitent. O execuţie completă a programului din figura 2.14.a se numeşte ciclu program (program scan, scan cycle) iar timpul necesar execuţiei sale se numeşte durata ciclului program. Aceasta depinde de dimensiunea programului şi de viteza procesorului, o valoare tipică fiind 2-5 ms/kcuvânt. Uzual, durata unui ciclu program este 10-50 ms. Figura 2.14.a poate fi extinsă la figura 2.14.b. AP nu citeşte intrările în ordinea specificată de program (cum s-ar putea înţelege din figura 2.14.a). La începutul fiecărui ciclu program AP citeşte starea tuturor intrărilor şi o memorează în memoria sa. Când programul adresează o intrare, va fi citită valoarea memorată a acesteia la începutul ciclului program, şi nu valoarea curentă a ei.
Figura 2.14. Ciclul program şi organizarea memoriei: a) execuţia programului; b) secvenţierea programului; c) organizarea memoriei Pe de altă parte, ieşirile nu sunt modificate în momentul în care sunt calculate. O zonă de memorie a AP, corespunzătoare ieşirilor, este modificată de program şi, apoi, toate ieşirile sunt actualizate simultan la sfârşitul ciclului program curent. Prin urmare, operaţiile majore ce
48 alcătuiesc un ciclu program sunt (în ordine): citire intrări, execuţie program, actualizare ieşiri. Se poate considera că memoria AP constă din patru zone, aşa cum apare în figura 2.14.c. Intrările sunt citite şi memorate într-o zonă imagine a intrărilor la începutul ciclului program iar ieşirile sunt calculate şi memorate într-o zonă imagine a ieşirilor, de unde sunt actualizate (transferate spre punctele de ieşire) la sfârşitul fiecărui ciclu program. Există şi o zonă de memorie utilizator, rezervată semnalelor (variabilelor) interne, care sunt utilizate de program dar nu sunt conectate direct cu exteriorul (temporizatoarele, numărătoarele, memoriile de un bit, de un octet, semnalele de defect, etc.). Aceste trei zone de memorie sunt denumite "zona datelor" (la Allen Bradley) sau "baza de date" (la ABB). Această zonă de date este mai mică decât cum ar fi de aşteptat. Pentru un AP cu 1000 de I/E discrete, această zonă ar consta din 26 locaţii de memorie de 16 biţi (un cuvânt). O valoare analogică va necesita un cuvânt. Temporizatoarele şi numărătoarele necesită câte două cuvinte (unul pentru valoarea curentă şi unul pentru valoarea prestabilită) iar 16 memorii interne de un bit necesită un cuvânt. Majoritatea memoriei este alocată, de fapt, celei de-a patra zone, zona programului. Evident, ciclul program limitează viteza semnalelor la care AP trebuie să răspundă. În figura 2.15.a, un AP este utilizat pentru numărarea unei secvenţe de impulsuri rapide, cu frecvenţa mai mică decât cea de execuţie a ciclului program. Se observă că AP numără corect.
Figura 2.15. Efectul ciclului program asupra impulsurilor rapide În figura 2.15.b frecvenţa impuilsurilor este mai mare decât frecvenţa de execuţie a ciclului program şi AP începe să piardă impulsuri. În cazul extrem din figura 2.15.c, blocuri întregi de impulsuri pot fi total
49 ignorate. De aceea, în general, orice semnal de intrare citit de AP trebuie să fie prezent un timp mai mare decât durata ciclului program. Impulsurile mai scurte pot fi citite corect numai dacă se întâmplă ca ele să fie prezente la momentele potrivite, lucru care nu poate fi garantat însă. În cazul trenurilor de impulsuri, frecvenţa impulsului trebuie să fie mai mică decât 1/(2 x durata ciclului program). De exemplu, un AP cu o durată a ciclului program de 40 ms poate urmări (teoretic) un tren de impulsuri cu frecvenţa 1/(2 x 0,04 s)=12,5 Hz. În practică există, însă, şi alţi factori de care trebuie să se ţină cont la stabilirea acestei frecvenţe (cum ar fi filtrele modulelor de intrare). Prin urmare, se recomandă o mare atenţie la estimarea acestor viteze. Mai puţin evident, un ciclu program poate cauza un decalaj aleator între intrări şi ieşiri. În figura 2.16 este prezentată o intrare care trebuie să determine activarea imediată a unei ieşiri. În cazul cel mai bun (figura 2.16.a), intrarea apare la începutul ciclului program, ducând la activarea ieşirii după un ciclu program. În figura 2.16.b intrarea a apărut imediat după citirea intrărilor, fiind văzută de AP abia la începutul celui de al doilea ciclu program. Prin urmare, ieşirea va fi activată cu o întârziere de două cicluri program faţă de momentul activării intrării. Astfel, timpul de răspuns poate varia între 1 şi 2 durate de ciclu program.
Figura 2.16. Efectul ciclului program asupra timpului de răspuns: a) cazul cel mai favorabil; b) cazul cel mai defavorabil În majoritatea aplicaţiilor acest decalaj de câteva ms nu este important. De exemplu, nu poate fi văzut în răspunsul unei instalaţii la apăsarea unui buton. Totuşi, în aplicaţiile unde sunt necesare acţiuni rapide,
50 acest decalaj poate fi critic. Într-un exemplu tipic, un material ce trecea cu viteza de 15 m/s trebuia tăiat de către o instalaţie comandată de un AP pe baza semnalului de la o fotocelulă. Cele 30 ms ale duratei ciclului program au condus la variaţii ale lungimii de tăiere de 0,03 s x 15 m/s = 0,45 m. Pentru a putea aborda cu succes asemenea aplicaţii, producătorii de AP oferă o gamă largă de module speciale, cum ar fi, de pildă, cele descrise în paragraful 6.9. Însăşi redactarea programului poate conduce la întârzieri nedorite, dacă logica programului lucrează împotriva execuţiei programului. AP începe fiecare ciclu program cu prima instrucţiune şi procesează toate instrucţiunile următoare într-o manieră secvenţială, către sfârşitul programului. Apoi actualizează ieşirile, citeşte intrările, execută instrucţiunile, ş.a.m.d. În figura 2.17.a o intrare determină o ieşire, dar nu direct, ci prin intermediul a cinci paşi (poate fi condiţionată de un numărător sau de prezenţa unor alte condiţii necesare). Logica programului decurge, în acest caz, împotriva ciclului program.
Figura 2.17. Decalaje datorate programului: a) logica este împotriva execuţiei programului (5 cicluri program între citirea intrării şi generarea ieşirii); b) logica este conformă cu execuţia programului (1 ciclu program între citirea intrării şi generarea ieşirii) În primul ciclu program intrarea determină evenimentul A. În următorul ciclu program evenimentul A determină evenimentul B. Şi tot aşa până când, după cinci cicluri program de la activarea intrării, evenimentul D determină activarea ieşirii. Dacă programul este realizat ca în figura 2.17.b, întreaga secvenţă are loc într-un singur ciclu program. Erorile din figura 2.17.a sunt evidente, dar aceste efecte pot apare deseori atunci când realizarea programului nu este gândită cu grijă. Asemenea efecte pot fi utilizate pentru a produce deliberat impulsuri cu durata de un ciclu program, aspect abordat în paragraful 8.4. Efectele duratei ciclului program devin mai complexe în cazul existenţei unor SB de I/E comandate la distanţă şi conectate prin cablu serial. În general, starea acestor I/E este citită de către un scaner de I/E, ca
51 în figura 2.18, care, uzual, nu este sincronizat cu ciclul program. De exemplu, cu o durată a ciclului program de 30 ms şi cu un ciclu de comandă la distanţă a I/E de 50 ms, cel mai scurt timp de răspuns poate fi de 30 ms, dar cel mai mare poate fi de 130 ms (cu o I/E pierzând la limită ciclul I/E iar ciclul I/E pierzând la limită ciclul program).
Figura 2.18. Efectul ciclurilor program şi de I/E Pentru reducerea efectului duratei ciclului program, producătorii de AP oferă mai multe facilităţi. Tipic, există posibilitatea utilizării unor module de I/E inteligente şi independente (discutate în paragrafele 6.8 şi 6.9) şi există posibilitatea secţionării programelor în zone cu timpi de execuţie diferiţi. De exemplu, becurile de la panoul de comandă necesită un timp de răspuns de 0,5 s – 1 s, permiţând ca alte zone ale programului să se execute mai rapid. Pentru a reduce timpul de răspuns la unele semnale de intrare considerate foarte importante, care necesită acţiuni urgente (cum sunt semnalele de avarie, de exemplu) există posibilitatea transferului prin întreruperi (vezi paragraful 2.5.4). Aceasta permite citirea intrării şi activarea ieşirii independent de ciclul program, cu avantajul dat de un timp de răspuns minim, dar cu implicaţii asupra ciclului program. Un transfer prin întreruperi va determina mărirea duratei ciclului program curent, cu implicaţii asupra celorlalte semnale de I/E. De asemenea, o programare defectuoasă a transferului prin întreruperi poate conduce la intrarea programului în buclă infinită. Pentru evitarea buclelor infinite, AP au fost prevăzute cu un ceas de gardă (watchdog timer). Acesta este resetat la începutul fiecărui ciclu program şi măsoară timpul în care se execută fiecare
52 ciclu program. Valoarea prestabilită a sa este fixată de către producător, ţine cont de timpii de citire a intrărilor şi de actualizare a ieşirilor şi corespunde celui mai lung program posibil (dat de dimensiunea memoriei program) care utilizează instrucţiunile cele mai mari consumatoare de timp. Manualele tehnice ce însoţesc AP conţin, printre altele, şi timpii necesari execuţiei fiecărei instrucţiuni. Dacă valoarea măsurată a duratei ciclului program curent este mai mică decât valoarea prestabilită a ceasului de gardă, acesta permite execuţia unui nou ciclu program. În caz contrar, execuţia programului este terminată şi toate ieşirile sunt dezactivate. 2.5.2. Ramificaţii şi repetiţii Ramificaţiile sunt structuri de program ce permit salturi (condiţionate sau necondiţionate) în program peste un grup de instrucţiuni. Pot fi distinse următoarele tipuri de salturi: absolute (înainte, înapoi, la o adresă dată) sau relative (peste un număr dat de instrucţiuni). Principiul execuţiei acestor salturi este ilustrat în figurile 2.19.a-c. De exemplu, AP SIMATIC S5-115U al firmei Siemens recunoaşte următoarele instrucţiuni de salt: salt condiţionat (JC, JZ, JN, JP, JM, JO), salt necondiţionat (JU) şi salt relativ (JUR).
Figura 2.19. Ramificaţii şi repetiţii: a) salt absolut înainte; b) salt absolut înapoi; c) salt relativ; d) buclă DO Repetiţiile permit execuţia în mod repetat a unui grup de instrucţiuni de un număr predeterminat de ori. Cea mai utilizată structură repetitivă este cea de tip DO (figura 2.19.d). Ea are forma generală DO n ... END şi determină execuţia de n ori a instrucţiunilor cuprinse între instrucţiunile DO şi END.
53 2.5.3. Subrutine Subrutinele sunt secvenţe de instrucţiuni (asemeni programelor) destinate rezolvării unor probleme specifice, construite în această manieră în scopul apelării lor în mod recursiv. Execuţia unei subrutine este determinată de execuţia în programul principal a unei instrucţiuni de apel de subrutină (sau de salt la subrutină). O astfel de instrucţiune are ca efect abandonarea execuţiei instrucţiunii următoare din programul principal în schimbul execuţiei secvenţei de instrucţiuni corespunzătoare subrutinei apelate, amplasată întro altă zonă de memorie. Această secvenţă se încheie cu o instrucţiune de revenire în programul principal, care determină reluarea execuţiei acestuia din punctul în care a fost întrerupt de către instrucţiunea de apel de subrutină. În principiu, subrutinele sunt utilizate în două scopuri: pentru economisirea spaţiului de memorie şi pentru structurarea programelor. În conformitate cu primul scop, dacă o secvenţă de instrucţiuni trebuie utilizată de mai multe ori într-un program, există tot interesul transformării acestei secvenţe într-o subrutină, care va apare o singură dată în memoria program (figura 2.20.a).
Figura 2.20. Utilizarea subrutinelor: a) principiul execuţiei subrutinelor; b) structurarea programelor cu ajutorul subrutinelor A doua utilizare apare îndeosebi în cazul aplicaţiilor complexe. Există o tendinţă naturală de a descompune aceste aplicaţii în subansamble mai simple, cărora le corespund programe mai scurte şi mai uşor de urmărit. Devine astfel posibilă structurarea ierarhică a modulelor ce compun
54 programul de aplicaţie. Va exista un modul de organizare, care va defini interacţiunile dintre modulele aflate la nivelul ierarhic inferior. Fiecare din aceste din urmă module va putea fi descompus la rândul său, ş.a.m.d. Fiecare modul va avea, prin urmare, o misiune bine definită. Printr-o organizare judicioasă a descompunerii, se poate ajunge chiar la situaţii în care programele corespunzătoare diferitelor module să aibă dimensiuni care să permită sesizarea dintr-o singură privire a întregului conţinut informaţional al programelor corespunzătoare modulelor. Modul în care subrutinele permit structurarea programelor este ilustrat în figura 2.20.b. 2.5.4. Transferul prin întreruperi Din cele prezentate până acum reiese că un AP poate lua în considerare evenimentele externe numai pe acea porţiune a ciclului program în care efectuează citirea intrărilor. Există, însă, aplicaţii în care este necesar din partea AP un timp de reacţie mai rapid decât cel dat de către durata ciclului program. Este cazul aşa-numitelor evenimente urgente. Aşa cum s-a amintit în paragraful 2.5.1, una din cele mai eficiente soluţii de tratare a lor o reprezintă transferul prin întreruperi. Sursele posibile de întreruperi sunt conectate (individual sau prin intermediul unor porţi SAU) la liniile de întreruperi ale AP. Procesorul UC analizează automat starea acestor linii după execuţia fiecărei instrucţiuni. Dacă detectează o cerere de întrerupere, el suspendă execuţia programului în curs şi salvează (într-o zonă de memorie prevăzută special pentru asemenea situaţii) toate informaţiile necesare reluării ulterioare a execuţiei programului întrerupt în acelaşi context. După aceasta, procesorul UC trece la execuţia unei subrutine aparte, corespunzătoare evenimentului care a generat întreruperea. Odată executată această subrutină, execuţia programului principal este reluată din punctul în care a fost întrerupt. De exemplu, AP SIMATIC S5-115U al firmei Siemens este prevăzut cu patru linii de întrerupere ( IRA , IRB , IRC , IRD ), cărora le corespund prin construcţie patru rutine de servire a întreruperilor, OB2÷OB5, OB2 fiind cea mai prioritară (în cazul întreruperilor multiple).
2.6.
Comanda la distanţă
Primele AP au fost organizate sub forma unui procesor şi a unui număr de module de I/E montate în SB locale.
55 Însă, într-o uzină mare, cu distribuire mare a instalaţiilor, utilizând această structură toate semnalele ar trebui aduse la un punct central în cabluri multifilare lungi şi costisitoare. De asemenea, punerea în funcţiune şi depanarea ar deveni mult mai dificile, deoarece semnalele pot fi vizualizate doar la o anumită distanţă de instalaţia testată. De aceea, pentru toate sistemele mici şi mari, producătorii de AP au prevăzut posibilitatea montării SB cu module de I/E la distanţă de procesor şi a conectării acestor SB cu procesorul prin simple (şi ieftine) cabluri ecranate cu două fire sau prin cabluri cu fibre optice. Astfel, SB pot fi montate la depărtare de kilometri de procesor. Există numeroase avantaje ale acestei tehnici. În mod evident, se reduce costul cablurilor prin plasarea SB la locul aplicaţiei, fiind necesare doar cabluri multifilare scurte. Cabluri de lungime mare vor fi necesare doar pentru cablurile de comunicaţie (care sunt ieftine) şi pentru semnalele de avertizare/alarmă (care nu trebuie transmise prin cablul de comunicaţie, aspect discutat în capitolul 9). Mai puţin evident, comanda la distanţă permite realizarea unor unităţi compacte, conectate la un SB dispus în imediata apropiere a instalaţiei, care pot fi testate înaintea livrării şi instalării. De exemplu, un sistem conţine trei SB comandate la distanţă (slave), conectate la un AP de comandă (master), montat într-o substaţie la 500 m distanţă, printr-un cablu de comunicaţie la distanţă. La aceasta se adaugă cabluri pentru surse şi conexiuni pentru semnalele de alarmă. Aceasta permite ca instalaţia, împreună cu SB locale (slave), să fie testată înainte de a fi adusă la locul unde va funcţiona. Idei similare pot fi aplicate la orice instalaţie ale cărei semnale de I/E trebuie conectate la un AP. Dacă este utilizată comanda la distanţă, trebuie prevăzută o ieşire suplimentară la SB pentru a putea conecta terminale de programare. Se pot pierde toate avantajele dacă proiectantul poate monitoriza operaţiile doar dintr-un punct central de comandă aflat la sute de metri de instalaţie. Din fericire, producătorii şi-au dat seama despre aceste avantaje şi majoritatea au prevăzut posibilitatea conectării terminalelor de programare la procesor local, prin cabluri ecranate cu două fire. Aspectele referitoare la comunicaţia serială vor fi discutate în capitolul 7.
56
2.7.
Avantajele controlului cu AP
Fiecare sistem de control parcurge patru etape de la concepţie la punerea în funcţiune a instalaţiei. Un sistem cu AP aduce avantaje la fiecare etapă. 1. Prima etapă este proiectarea. Instalaţia este studiată şi sunt stabilite strategiile de control. Utilizând sisteme convenţionale (de exemplu, cu relee), proiectarea trebuie finalizată înaintea începerii realizării dulapului de comandă. Cu un sistem cu AP, tot ceea ce este necesar este o idee aproximativă despre dimensiunile sistemului şi despre numărul şi tipul semnalelor de I/E. În această etapă stabilirea numărului de module de I/E se poate face cu o rezervă, pentru eventualele omisiuni şi extensii ulterioare. 2. Urmează realizarea. Utilizând scheme convenţionale, fiecare pas este deosebit de ceilalţi, cu costuri şi întârzieri inevitabile. Un sistem cu AP este alcătuit din componente standard. În acest timp este începută scrierea programului de AP (sau cel puţin a unei specificaţii detaliate de program). 3. Următorul pas este instalarea, cu costuri mari datorate conectării senzorilor, a elementelor de execuţie, a comenzilor şi confirmărilor operatorului. Un sistem de AP distribuit (discutat în capitolul 7), utilizând legături seriale şi ansambluri gata construite şi testate, poate simplifica instalarea şi poate aduce uriaşe beneficii. Majoritatea programelor de AP sunt scrise în această etapă. 4. Ultima etapă este punerea în funcţiune. Aici apar adevăratele avantaje. Nici o instalaţie nu merge bine din prima încercare. Modificările ce trebuie aduse sistemelor convenţionale consumă timp şi sunt scumpe. Deoarece proiectantul sistemului cu AP a prevăzut memorie de rezervă, canale de I/E suplimentare şi câteva fire de legătură suplimentare în cabluri, majoritatea modificărilor pot fi făcute rapid şi relativ ieftin. Un alt avantaj este că toate modificările sunt înregistrate în programul AP şi, deci, modificările la punerea în funcţiune nu vor rămâne neînregistrate, aşa cum se întâmplă deseori în sistemele convenţionale. Există o a cincea etapă, suplimentară, întreţinerea. Aceasta începe odată cu funcţionarea instalaţiei şi are implicaţii asupra producţiei. Toate instalaţiile au defecte, fiecare din ele cu un mod propriu de manifestare. Un sistem cu AP oferă o unealtă foarte puternică pentru realizarea diagnozei. Acest aspect este discutat în capitolul 9.
57 O instalaţie suportă, de asemenea, o serie de modificări pe parcursul timpului, în vederea măririi producţiei, a eliminării căderilor sau datorită necesităţilor de modificare. Un sistem cu AP poate fi modificat foarte uşor iar programul AP va reflecta automat schimbările făcute.
58
CAPITOLUL 3 LIMBAJE DE PROGRAMARE
În acest capitol va fi ilustrat modul de programare al AP. Desigur, fiecare producător are particularităţile sale şi ar fi mai degrabă restrictiv să se trateze aspecte referitoare la un singur tip de AP. Din acest motiv se va face referire la modelele folosite în capitolul 2. Între aceste modele există diferenţe semnificative. Prin intermediul lor vor fi acoperite majoritatea particularităţilor altor producători decât cei menţionaţi.
3.1. Standardul IEC 1131-3 Standardul IEC 1131-3 defineşte cinci limbaje de programare a AP [32, 52]: 1. Diagrama Scară (Ladder Diagram), care este inspirată din schemele electrice convenţionale; 2. Lista de Instrucţiuni (Instruction List), care este un limbaj de asamblare inspirat din limbajele utilizate în diversele platforme hardware existente; 3. Textul Structurat (Structured Text), care este un limbaj de programare asemănător limbajului Pascal; 4. Diagrame cu Blocuri Funcţionale (Function Blocks Diagrams), care constituie un formalism de procesare a datelor prin reţele de blocuri funcţionale conectate prin semnale; 5. Diagrame de Stare Secvenţiale (Sequential Function Charts), care reprezintă un formalism grafic inspirat din standardul francez Grafcet, bazat pe o variantă sincronă şi etichetată de reţele Petri. LI şi TS fac parte din limbajele tradiţionale de programare a calculatoarelor. DS şi DBF imită structura predecesoarelor lor (implementări hardware ale regulatoarelor discrete şi continue, paralele prin natura lor). DSS combină secvenţialitatea cu paralelismul.
59 Standardul începe cu o descriere a configuraţiei şi resurselor hardware şi software ale sistemului pe care vor fi executate programele. Cazul cel mai simplu este cel în care un singur program este executat pe un singur AP. Un astfel de program citeşte intrările sale, calculează starea sa şi actualizează ieşirile sale. Detaliile referitoare la modul în care un anume AP realizează operaţiile de I/E şi managementul memoriei nu fac parte din standard. Se presupune că valorile citite de la senzori şi valorile scrise la ieşiri sunt transferate cu mediul extern prin intermediul unor locaţii de memorie specifice şi că programul de aplicaţie nu trebuie să se ocupe cu aceste detalii. Standardul conţine structuri care permit programelor diferite să fie încărcate şi executate pe acelaşi AP (separat sau în multi-tasking) şi mai multor AP să funcţioneze în paralel şi să comunice prin "căi de acces", care sunt abstracţii ale protocoalelor de comunicaţie. Un program este construit dintr-un număr de elemente software diferite, scrise în oricare din cele cinci limbaje, existând posibilitatea transferului de date între aceste elemente. Ele pot fi concepute în paralel şi pot fi apelate numai după ce au fost asignate unui task şi taskul fie este lansat de către un eveniment, fie este configurat să fie executat periodic. Toate limbajele utilizează acelaşi set de caractere şi sunt în conformitate cu standardele ISO şi cu convenţiile pentru codificarea timpului. Standardul defineşte tipurile de date elementare, declaraţiile tipurilor de date compuse, iniţializările, etc. Variabilele pot fi locale sau globale. Suplimentar faţă de variabilele abstracte "uzuale", sunt permise şi variabile "direct reprezentate", care sunt adresate în locaţiile de memorie destinate intrărilor, ieşirilor sau variabilelor interne. DS este un limbaj grafic conceput pentru compatibilitate retroactivă cu formalismul diagramelor logice scară (relay ladder logic), el însuşi un rezultat al compatibilităţii retroactive cu schemele electrice convenţionale (cu relee). În esenţă, în acest limbaj se scriu relaţii dintre valorile stării curente şi a variabilelor de intrare, pe de o parte, şi valorile stărilor următoare şi ale ieşirilor, pe de altă parte, plus câteva specificaţii referitoare la ordinea evaluării condiţiilor implicate. DBF reprezintă un limbaj grafic ce permite compunerea unor funcţii bloc simple în vederea formării unor funcţii bloc mai mari şi mai complexe. Interacţiunea dintre funcţiile bloc este reprezentată prin "conductori" care conectează variabilele de ieşire de la un bloc cu variabilele de intrare ale altui bloc.
60 O compunere de mai multe funcţii bloc poate fi încapsulată într-un bloc mai mare, încurajându-se prin aceasta un stil de programare modular şi ierarhizat. Totuşi, există structuri care nu sunt uşor de exprimat prin notaţii grafice. Acestea include buclele FOR, operaţiile cu matrici, întreruperile şi algoritmii complecşi în general. O buclă FOR începe cu instrucţiunea for, se termină cu instrucţiunea end şi are forma generală: for x=expresie . . . end unde x este contorul de ciclu. Dacă expresie este un scalar, atunci bucla se execută o singură dată, cu x=valoarea scalară. Dacă expresie este un vector sau o matrice, atunci instrucţiunile dintre for şi end sunt executate câte o dată pentru fiecare element al vectorului sau coloană a matricii expresie. La fiecare iteraţie contorului de ciclu x i se atribuie valoarea corespunzătoare următorului element din vectorul expresie, respectiv valorile conţinute în următoarea coloană a matricii expresie. Instrucţiunea end are rolul de a arăta că liniile de program dintre for şi end sunt executate iterativ, pentru fiecare valoare a contorului de ciclu x. După ce acesta ia ultima valoare posibilă, se iese din buclă şi execuţia programului se continuă cu instrucţiunea de după end. Prin urmare, o buclă FOR permite repetarea unei secvenţe de un număr de ori fix şi predeterminat. Limbajele LI şi TS sunt în esenţă limbaje imperative şi secvenţiale clasice. Primul este un limbaj de asamblare de nivel inferior iar al doilea este un limbaj de nivel înalt asemănător PASCAL. Utilizând întreaga putere a acestor limbaje (de exemplu, buclele WHILE), este posibil să se scrie proceduri al căror timp de execuţie este necunoscut, nelimitat şi chiar infinit. O buclă WHILE evaluează o expresie în mod repetat, până când aceasta este adevărată, numărul de iteraţii nefiind cunoscut iniţial. Terminarea buclei are loc la îndeplinirea condiţiei impuse prin expresia evaluată, care este testată la începutul fiecărui ciclu. Forma generală a unei bucle WHILE este: while expresie . .
61 . .
end unde, la fel ca şi în cazul buclelor for instrucţiunea end are rolul de a arăta că instrucţiunile cuprinse între while şi end sunt executate iterativ. Bucla while este executată atât timp cât expresie este adevărată. De obicei, expresie conţine o condiţie exprimată printr-un operator relaţional. Această condiţie este testată la începutul fiecărui ciclu. Cât timp ea este adevărată, instrucţiunile dintre while şi end sunt executate. Când condiţia este falsă, se trece la următoarea instrucţiune de după end. Desigur, încorporarea unor asemenea programe în aplicaţiile de control nu este o practică sănătoasă. Pe de altă parte, este posibil să se impună restricţii sintactice care pot garanta un timp de răspuns limitat. De exemplu, se pot admite numai programe care nu au salturi înapoi sau bucle FOR cu delimitatori constanţi. Un alt dezavantaj al acestor limbaje este dat de caracterul lor secvenţial. Acesta le face neadecvate pentru scrierea programelor de control care implică paralelisme. Prin urmare, concurenţa poate fi realizată fie prin multitasking, fie prin considerarea programelor scrise în aceste limbaje ca blocuri funcţionale în programe scrise în alte limbaje care acceptă paralelismul (DBF sau DSS). DSS constituie un formalism care combină operaţiile secvenţiale şi paralele. Considerarea sa ca un al cincilea limbaj IEC sau ca o unealtă de structurare de nivel superior este o chestiune de terminologie.
3.2. Diagrama scară Primele AP, proiectate pentru industria automobilelor, au înlocuit schemele de de comandă cu relee. Simbolurile utilizate în DS, -] [- pentru contact normal deschis (ND), -]/[- pentru contact normal închis (NI) şi –( )pentru o ieşire a procesului, au constituit baza acestui limbaj. În continuare se va prezenta, prin intermediul a patru exemple simple, modul de programare cu DS, folosind adresarea I/E de la diferite AP prezentate în paragraful 2.3. Exemplul 1 Presupunem că la un bloc hidraulic dorim să comandăm o lampă de semnalizare pentru "Funcţionare normală" când:
62 1. Pompa merge (lucru arătat de un contact auxiliar al contactorului pompei). 2. Există ulei în rezervorul de ulei (lucru arătat de un indicator de nivel). 3. Există presiune de ulei (lucru arătat de un presostat). Utilizând relee convenţionale, se poate realiza un circuit ca în figura 3.1.a. Pentru utilizarea unui AP, se conectează semnalele de intrare la un modul de intrări, iar lampa de semnalizare la un modul de ieşiri, ca în figura 3.1.b. Pentru adresarea I/E s-a utilizat notaţia Allen Bradley.
Figura 3.1. De la circuitul cu relee la DS: a) Circuit cu relee; b) conexiune la AP; c) DS Programul care realizează funcţia este prezentat în figura 3.1.c. Linia din stânga poate fi considerata o sursă (fază c.a. sau + c.c.) iar linia din dreapta un nul (-). Ieşirea este reprezentată printr-o bobină -( )- şi este activată când există cale de curent de la stânga la dreapta. Ieşirea O: 22/01 va fi 1 logic când semnalele I: 21/00, I: 21/01, I: 21/02 vor fi toate 1 logic. Programul este introdus de la un terminal (sau consolă de programare [65]) prevăzut cu taste care reprezintă diversele simboluri utilizate. Terminalul poate fi utilizat de asemenea la monitorizarea stării semnalelor de I/E, cele activate fiind iluminate pe display.
63 Exemplu 2 În figura 3.2 un cilindru hidraulic poate fi avansat sau retras prin acţionarea a două butoane. Adresarea I/E utilizată în acest caz corespunde AP GEM-80.
Figura 3.2. DS în notaţia AP GEM-80: a) conexiunile la AP; b) DS Este nedorită activarea simultană a celor două bobine. Aceasta duce aproape întotdeauna la arderea unor siguranţe la sursele modulului de ieşire, astfel că este necesară o formă de protecţie. Programul care realizează acest lucru este prezentat în figura 3.2.b. Aici au fost utilizate contacte normal închise. Ieşirea B2.9, bobina de avansare, va fi activată atunci când butonul de avansare este apăsat, limitatorul faţă nu este atins şi bobina de retragere B2.10 nu este activată. Există două aspecte de remarcat în figura 3.2.b. Pot fi utilizate atât contacte ale intrărilor cât şi ale ieşirilor, iar contactele pot fi utilizate de câte ori este nevoie în program. Figura 3.2.b arată, de asemenea, de unde vine numele de "DS". Un program de această formă arată ca o scară, fiecare linie cu instrucţiuni formând o treaptă iar barele verticale ale alimentării formând suportul treptelor. Termenul "treaptă" este invariabil aplicat contactelor care contribuie la definirea unei ieşiri. Exemplu 3 Să ne întoarcem la lampa de semnalizare "Funcţionare normală" din figura 3.1 şi să adăugăm un buton de testare a lămpii (o tehnică utilă care ar trebui prevăzută în toate situaţiile similare; nu permite doar testarea lămpii, ci permite şi verificarea bunei funcţionări a AP). Pentru aceasta, conectăm la AP butonul de testare a lămpii şi modificăm programul ca în figura 3.3.
64
Figura 3.3. Adăugarea unei ramuri Aici am adăugat o ramură iar ieşirea se va activa dacă cele trei semnale de la proces sunt 1 sau dacă butonul de testare lampă este apăsat. Modul în care este programată ramura nu ne interesează acum, acesta variind de la producător la producător. Unii utilizează taste de "Început de ramură" şi de "Sfârşit de ramură". Alţii utilizează o abordare de forma "Ramură de la/la". Toate sunt simplu de utilizat. Exemplu 4 O altă utilizare a ramurii este prezentată în figura 3.4. Probabil este cel mai frecvent exemplu de circuit, comanda unui motor cu un contactor, care utilizează adresarea I/E de la firma Siemens. Operaţia este simplă. Apăsarea butonului Start determină activarea ieşirii Q 8.2 iar un contact al ieşirii este plasat în ramură pentru a menţine ieşirea activată până când se apasă butonul Stop. Programul, ca şi echivalentul său cu relee, ţine cont care este ultimul buton apăsat. Există o observaţie foarte importantă referitoare la conectarea butoanelor la AP şi la programul acestuia. Pentru siguranţă, a fost utilizat un buton de Stop normal închis, furnizând un semnal de intrare pe I 12.5 atunci când butonul Stop nu este apăsat. Pierderea alimentării unui buton, sau un defect de cablu, sau murdărie sub contacte la butonul Stop, vor cauza pierderea semnalului, făcând ca programul să acţioneze ca şi cum butonul Stop a fost apăsat, cauzând oprirea motoului. Dacă se utilizează un buton de Stop normal deschis, AP va lucra corect, dar un defect la butonul Stop sau la circuitul său va determina funcţionarea continuă a motorului, pentru oprirea lui fiind posibile două soluţii: oprirea AP sau oprirea alimentării motorului. Acest aspect este discutat în paragraful 9.2, dar observaţi efectul său în programul din figura 3.4. Acţiunea intrării I 12.5 a butonului de stop în interiorul programului este opusă celei dintr-o schemă clasică cu relee. Intrarea I 12.5 permite să meargă, mai degrabă decât să oprească.
65
Figura 3.4. Programul pentru comanda unui motor cu un contactor: a) conexiunile la AP; b) DS
3.3. Diagrama cu blocuri funcţionale Circuitele integrale logice din familiile TTL şi CMOS sunt larg utilizate în sistemele digitale (incluzând şi plăcile din interiorul AP). Aceste circuite sunt reprezentate prin blocuri funcţionale (sau simboluri logice). Aceste simboluri pot fi utilizate pentru a descrie operaţiile unui program de AP. Iniţial vom utiliza notaţia Siemens [3]. Ieşirea unei porţi ŞI, prezentată în figura 3.5.a este adevărată dacă (şi numai dacă) toate intrările sunt adevărate. Operarea porţii din figura 3.5.a poate fi reprezentată prin tabelul din figura 3.5.b. În figura 3.5.c avem lampa de semnalizare "Funcţionare normală" a pompei din figura 3.1 conectată la un AP al firmei Siemens programat utilizând blocuri funcţionale. Blocul ieşirii, notat prin "=", este activat când intrarea sa este 1, aşa că lampa Q 8.2 este activată când toate intrările în poarta ŞI sunt adevărate. Adeseori trebuie făcute teste pentru a vedea dacă un semnal nu este adevărat. Acest lucu este reprezentat printr-un cerc mic "o". Ieşirea Z a porţii ŞI din figura 3.5.d este adevărată dacă (şi numai dacă) A şi C sunt adevărate şi B nu este adevărat. În figura 3.2 am ilustrat comanda unui cilindru hidraulic cu un program care a evitat acţionarea simultană a bobinelor de avansare şi retragere. Aceasta este redesenată pentru un AP al firmei Siemens în figura 3.5.e.
66
Figura 3.5. Programe de AP utilizând blocuri funcţionale (bazate pe notaţia Siemens): a) o poartă ŞI; b) tabela de adevăr pentru poarta ŞI; c) lampa de "funcţionare normală" din figura 3.1 cu DBF; d) o intrare inversată; e) cilindrul hidraulic din figura 3.2 cu DBF
Figura 3.6. Utilizări ale blocului funcţional SAU: a) poarta SAU; b) poarta SAU cu intrare inversată; c) testul lămpii este prevăzut suplimentar faţă de figura 3.5.c
67
Figura 3.7. Porţile compuse ale AP Master al firmei ABB: a) poarta ŞI/SAU (echivalentă cu figura 3.6.c); b) poarta SAU/ŞI Ieşirea Z a unei porţi SAU, din figura 3.6.a, este adevărată dacă oricare din intrări sunt adevărate. Simbolul "≥" din poartă înseamnă "ieşirea este adevărată dacă una sau mai multe intrări sunt adevărate". Poate fi testat şi inversul semnalului, ca în cazul precedent, printr-un cerc mic. Ieşirea Z a porţii din figura 3.6.b. este adevărată dacă A este adevărat sau B este fals sau C este adevărat. În figura 3.6.c am utilizat o poartă SAU pentru a adăuga un test de lampă la becul de semnalizare "Funcţionare normală" a blocului hidraulic prezentat şi în figura 3.3. Circuitul din figura 3.6.c este o combinaţie ŞI/SAU. AP Master al firmei ABB are, pe lângă porţi logice de bază, şi blocuri de combinaţii logice. În figura 3.7.a este un bloc Master corespunzător celui din figura 3.6.c (cu un program Master care se referă la nume în baza sa de date). Similar, pentru o combinaţie SAU/ŞI poate fi utilizat în programul Master blocul SAU/ŞI din figura 3.7.b.
3.4. Lista de instrucţiuni O listă de instrucţiuni este un set de instrucţiuni care seamănă cu instrucţiunile unui limbaj de asamblare. Limbajul LI este cea mai flexibilă formă de programare pentru utilizatorul experimentat, şi este la fel de uşor de urmărit ca şi DS sau DBF. Figura 3.8 prezintă o operaţie simplă atât în formatul DS, cât şi în DBF pentru un AP al firmei Siemens (foarte asemănătoare cu secvenţele de program realizate pentru APC 700, corespunzător aceleiaşi operaţii).
68 LI echivalentă pentru un AP al firmei Siemens şi pentru un AP APC 700 este prezentată în tabelul 3.1. Aici A înseamnă AND, AN (ANDN) înseamnă AND NOT, iar "=" transferă rezultatul către ieşirea Q 4.1.
Figura 3.8. DS şi DBF în notaţia Siemens Tabel 3.1. LI echivalentă programelor din figura 3.8 Număr instrucţiune 00 01 02 03
Operaţie Siemens APC 700 :A AND :A AND :AN ANDN := =
Operand (Adresa) Siemens APC 700 I 3.7 I 3:7 I 3.2 I 3:2 Q 4.2 Q 4:2 Q 4.1 Q 4:1
Comentariu Buton înainte Limitator faţă OK Bobină retragere Bobină avansare
Figura 3.9 prezintă o operaţie SAU. LI echivalentă este dată în tabelul 3.2. Aici ON înseamnă OR NOT iar O înseamnă OR.
Figura 3.9. Echivalentul porţii SAU în notaţia Siemens Tabel 3.2. LI echivalentă programelor din figura 3.9 Număr instrucţiune 00
Operaţie Siemens APC 700 :ON ORN
Operand (Adresa) Siemens APC 700 I 2.7 I 2:7
01
:O
OR
F 3.6
M 3:6
02 03
:ON :=
ORN =
Q 4.2 Q 4.4
Q 4:2 Q 4:4
Comentariu Pompa locală auxiliară nu merge Fanion "merge pompa de la distanţă" Contactor pompa locală Bec "Funcţionare normală a pompei de la distanţă"
Când un set de instrucţiuni nu este clar, se pot utiliza paranteze pentru a defini precis operaţia. Acest lucru este similar cu utilizarea parantezelor în programarea convenţională, unde secvenţa 3+5/2 poate fi
69 scrisă (3+5)/2=4 sau 3+(5/2)=5,5. Deşi ultima variantă este cea implicită, parantezele fac ca operaţia să fie clară pentru cititor. Figura 3.10 arată o operaţie tipică în format DS şi DBF. Programul LI echivalent este dat în tabelul 3.3. Programatorii vor recunoaşte această operaţie ca fiind similară lucrului cu o stivă.
Figura 3.10. Program mai complex în limbajele DS şi DBF Tabel 3.3. LI echivalentă programelor din figura 3.10 Număr instrucţiune 00 01 02 03
Operaţie Siemens APC 700 :A( AND( :O OR :O OR :) )
Operand (Adresa) Siemens APC 700 F 3.3 F 3.4
M 3:3 M 3:4
04
:A(
AND(
05 06 07
:O :O :)
OR OR )
I 2.0 I 2.1
I 2:0 I 2:1
08 09 10
:A :AN :=
AND ANDN =
I 4.1 Q 5.5 Q 5.6
I 4:1 Q 5:5 Q 5:6
Comentariu Primul set de paranteze Înainte manual Înainte automat Rezultatul primului set de paranteze SI logic al rezultatului cu al doilea set de paranteze Motor 1 selectat Motor 2 selectat Acum suntem în punctul X Limitator faţă OK Contactor înapoi Contactor înainte
AP al firmei Mitsubishi utilizează de asemenea limbajul LI, deşi manualul de utilizare recomandă construirea într-o primă fază a DS şi apoi translaţia ei în LI. Programul DS al AP prezentat în figura 3.11 cu notaţia Mitsubishi corespunde programului LI din tabelul 3.4.
Figura 3.11. O DS a firmei Mitsubishi
70 Tabelul 3.4. LI echivalentă programului din figura 3.11 Linie 0 1 2 3 4 5 6 7
Instrucţiune LD X401 AND X402 ANI X403 LD Y430 ANI M100 OR B AND M101 OUT Y430
Comentariu LD începe o treaptă sau o ramură Xnnn sunt intrări ANI este ŞI-NU LD începe o nouă ramură Mnnn sunt memorii interne SAU între două ramuri Sfârşitul treptei
3.5. Textul structurat Limbajul TS prezintă o sintaxă şi o funcţionalitate asemănătoare limbajului PASCAL. Aşa cum reiese din cele discutate în paragraful 1.6, utilizarea limbajului TS în operaţiile logice şi de I/E pe bit nu oferă claritatea şi simplitatea necesare. Una din utilizările acestui limbaj o reprezintă declararea textuală a blocurilor funcţionale. Figura 3.12.b este un exemplu în acest sens.
Figura 3.12. Corespondenţa dintre DBF şi TS pentru un bloc funcţional DIVIDE: a) declararea grafică; b) declararea textuală Cuvintele-cheie FUNCTION şi END_FUNCTION delimitează declaraţia, în care DIVIDE este numele funcţiei iar REAL este tipul rezultatului produs de ea. Întrucât toate reprezentările de date sunt manipulate prin intermediul unor variabile, lista parametrilor acestui bloc funcţional este o listă a variabilelor de intrare. Acestea sunt specificate în secţiunea dintre cuvintele-cheie VAR_INPUT şi END_VAR. În cazul acestui exemplu, variabilele de intrare sunt A şi B, de tipul REAL, respectiv INT. Corpul blocului funcţional este definit prin invocarea altor două funcţii, şi anume "/" pentru împărţire şi INT_TO_REAL, care este o funcţie predefinită de conversie a tipului unei variabile, din întreg în real.
71 Reprezentarea grafică a blocului funcţional corespunzător exemplului din figura 3.12.b este dată în figura 3.12.a. Partea superioară a figurii defineşte interfaţa grafică a funcţiei, prin numele ei, numele şi tipul variabilelor de intrare şi tipul rezultatului. Partea inferioară defineşte în formă grafică corpul funcţiei. Ca şi în figura 3.12.b, toate declaraţiile sunt delimitate prin cuvintele-cheie FUNCTION şi END_FUNCTION. Deşi exemplul din figura 3.12 este unul simplu, el lasă să se întrevadă capabilităţile limbajului TS, care permite utilizatorului, printre altele, să-şi definească propriile blocuri funcţionale. Pe de altă parte, însă, există blocuri funcţionale pentru care se specifică clar că nu există un corespondent în TS [1, 26]. Având în vedere cele expuse în acest paragraf, se poate spune că limbajul TS este adecvat îndeosebi în aplicaţiile ce implică procesarea unui volum mare de date numerice, şirurilor de caractere, etc.
3.6. Diagrama de stare secvenţială În esenţă, o DSS constă într-un set de paşi interconectaţi prin legături direcţionate, pe baza unor tranziţii. Fiecare pas poate avea asociat un număr (nul sau nenul) de acţiuni şi fiecare tranziţie are asociată o condiţie de tranziţie. Controlul se desfăşoară prin parcurgerea paşilor în lungul legăturilor, atunci când condiţiile asociate tranziţiilor întâlnite sunt satisfăcute. Poate exista un singur pas iniţial, de la care începe controlul. Vom ilustra elementele tipice ale unei DSS pe baza unui exemplu. DSS din figura 3.13 este o parte a unui program mai mare, ce comandă deplasarea unui cărucior între două limite. El este pus în mişcare prin două semnale de comandă, Motor înainte şi Motor înapoi, care în programul de AP sunt reprezentate prin două variabile booleene cu acelaşi nume. Există două limitatoare de cursă care sesizează atingerea de către cărucior a capetelor de cursă din stânga şi din dreapta. Valorile citite de la aceste limitatoare sunt reprezentate prin variabilele booleene Limită dreapta şi Limită stânga. Rolul DSS din figura 3.13 este de a controla efectuarea unui singur ciclu stânga-dreapta şi dreapta-stânga. În figura 3.13 paşii sunt Aşteptare, Deplasare dreapta, Deplasare stânga şi Gata. Pasul iniţial este Aşteptare, lucru indicat prin dreptunghiul realizat cu linie dublă. Tranziţiile sunt reprezentate prin segmentele orizontale plasate pe legăturile direcţionate verticale. La pornire controlul este atribuit pasului Aşteptare. Deoarece acesta nu are asociate acţiuni, se comportă similar cu o "stare de aşteptare".
72 Controlul rămâne la acest pas până când este validată tranziţia de la pasul Aşteptare la pasul Deplasare dreapta. Condiţia asociată acestei tranziţii este ca valoarea variabilei Începere ciclu (ce reprezintă un semnal de la operator) să devină adevărată. La satisfacerea acestei condiţii controlul părăseşte pasul Aşteptare şi avansează în pasul Deplasare dreapta. Acest pas are ataşată o singură acţiune, aceea de trecere în "1" logic a valorii variabilei booleene Motor Înainte, lucru care se petrece atâta timp cât controlul rămâne la pasul Deplasare dreapta. Atunci când limitatorul dreapta detectează sosirea căruciorului, valoarea variabilei Limită dreapta devine adevărată. Acest lucru validează tranziţia de la pasul Deplasare dreapta la pasul Deplasare stânga. Secvenţa de evenimente ce urmează poate fi uşor dedusă pe baza celor prezentate. Un ultim aspect ce trebuie menţionat este acela că, la sfârşitul unui ciclu complet (reprezentat prin condiţia Sfârşit de ciclu), controlul revine la pasul Aşteptare, pentru a putea reîncepe un nou ciclu. Astfel de bucle sunt des întâlnite în programele în limbaj DSS.
Figura 3.13. DSS pentru comanda unui cărucior Exemplul prezentat permite introducerea unor noi elemente ale DSS. Deci, fiecare pas are asociate 0, 1 sau mai multe acţiuni. Un pas poate fi activ sau inactiv. În accepţiunea standardului IEC 1131-3, un pas este activ atunci când "are controlul", aşa cum s-a putut observa şi în exemplul
73 anterior. Pasul iniţial este singurul pas activ la începutul execuţiei şi în fiecare DSS poate exista un singur pas iniţial. Pentru fiecare pas există o structură de variabile corespunzătoare, care au acelaşi nume cu pasul. Această structură are două elemente: fanionul pasului şi timpul acumulat. Primul este un element boolean care indică dacă pasul este activ sau inactiv. Al doilea este un element de tip TIME (timp), care memorează timpul scurs de la ultima activare a pasului. De exemplu, dacă un pas este denumit S, atunci S.X este fanionul pasului S iar S.T este timpul acumulat al pasului S. La fiecare dezactivare a pasului S valoarea lui S.T este memorată. La o nouă activare a pasului S această valoare este resetată. În programele în limbaj DSS, legăturile direcţionate conectează paşii la tranziţii şi tranziţiile la paşi. Între un pas şi o tranziţie, respectiv între o tranziţie şi un pas, poate exista o singură conexiune. Orice alte conexiuni (pas cu pas, tranziţie cu tranziţie, etc.) sunt interzise. De exemplu, în figura 3.14.a există două legături: de la pasul S3 la tranziţia t şi de la tranziţia t la pasul S4. S3 este pasul predecesor al lui t iar S4 este pasul succesor al lui t. Deşi standardul IEC 1131-3 nu prevede utilizarea săgeţilor pentru a specifica direcţia unei legături, săgeţile pot fi folosite opţional pentru îmbunătăţirea clarităţii. Tranziţia ce separă doi paşi reprezintă condiţia pentru care are loc transferul controlului de la un predecesor la un succesor. De aceea, fiecare tranziţie are asociată o condiţie de tranziţie, care este o expresie booleană. Atunci când o condiţie este evaluată "1" logic, are loc execuţia tranziţiei corespunzătoare ei. Standardul IEC 1131-3 furnizează şi regulile pentru realizarea unor DSS corecte. Acestea sunt denumite reguli de evoluţie şi sunt reprezentate în figura 3.14. Cazul din figura 3.14.a este o secvenţă liniară simplă. Controlul evoluează de la S3 la S4 dacă S3 este activ şi dacă condiţia asociată tranziţiei t este adevărată. După execuţia tranziţiei t, S3 este dezactivat şi S4 devine pasul activ.
Figura 3.14. Reguli de evoluţie ale DSS
74 Combinaţia din figura 3.14.b este denumită divergenţă a selecţiei secvenţei. Controlul evoluează de la S5 la S6 dacă S5 este activ şi se execută tranziţia t1, sau de la S5 la S7, dacă S5 este activ şi se execută tranziţia t2. Opţional, ramurilor le pot fi alocate priorităţi. Dacă nu sunt specificate priorităţi, atunci programatorul trebuie să se asigure că toate condiţiile de tranziţie sunt mutual exclusive. Cazul ilustrat în figura 3.14.c se numeşte convergenţă a selecţiei secvenţei şi reprezintă sfârşitul unei selecţii de secvenţă. În acest caz, controlul evoluează de la S7 la S10 dacă S7 este activ şi se execută t1, sau de la S9 la S10 dacă S9 este activ şi se execută t2. În toate cazurile prezentate până acum evoluţia controlului trebuie să conducă la activarea unui singur pas. Structura din figura 3.14.d înlătură această restricţie, permiţând activarea simultană a mai multor paşi. Aceasta se numeşte divergenţă a secvenţelor simultane. Controlul trece de la S3 la S4, S5, ... dacă S3 este activ şi este executată tranziţia t. După activarea lor simultană, secvenţele ce încep cu S4, S5, ... evoluează independent. Structura din figura 3.14.e se numeşte convergenţă a secvenţelor simultane şi este utilizată pentru a încheia secvenţele simultane. Controlul trece de la S10, S11, ... la S12 dacă toţi paşii S10, S11, ... sunt activi şi este executată tranziţia t. Figura 3.15 prezintă două aplicaţii mai interesante ale acestor reguli. Cea din figura 3.15.a este un caz particular de selecţie a secvenţei, utilizat pentru a "sări" peste o anumită secvenţă. Situaţia din figura 3.15.b este un alt caz particular de selecţie a secvenţei, utilizat pentru readucerea controlului într-un pas precedent. Paşii în sine nu realizează funcţii de control. În esenţă, ei servesc la alocarea unor nume "stărilor" în care se află sistemul considerat. Funcţiile de control sunt realizate de către acţiunile asociate paşilor. În standardul IEC 1131-3 o acţiune poate fi: • o variabilă booleană, de tipul BOOL • un fragment de program scris în TS • o structură exprimată prin DBF sau DS • o DSS. În continuare, vom utiliza pentru acţiunile din primul tip denumirea de acţiuni booleene. Este posibil ca acestora să nu li se atribuie nume explicite atunci când sunt declarate, fie textual, fie grafic. Toate celelalte trei tipuri de acţiuni trebuie denumite explicit. Numele unei acţiuni booleene trebuie să fie acelaşi cu al variabilei pe care o conţine. Paşii care nu au asociate acţiuni pot fi consideraţi puncte în care sistemul aşteaptă îndeplinirea unei condiţii. În notaţia grafică, o acţiune
75 ACT este asociată pasului S prin intermediul unui bloc acţiune, ca în figura 3.16. Asocierea unor acţiuni multiple ACT1, ACT2, ... aceluiaşi pas S se realizează prin concatenarea blocurilor acţiune, ca în figura 3.16.b.
Figura 3.15. Cazuri particulare de reguli de evoluţie a DSS
Figura 3.16. Blocuri acţiune Acţiunile sunt entităţi complet separate de paşi. În consecinţă, o aceeaşi acţiune poate fi asociată la două sau mai mulţi paşi diferiţi. Din acest motiv, acţiunile nu pot fi "anonime". Dreptunghiul ce desemnează un bloc acţiune este împărţit în două, trei sau patru zone. Figura 3.16 arată cazul cel mai simplu, cu două zone. Literele din regiunile din extrema stângă se numesc calificatori. Fiecare asociere pas – acţiune poate avea un alt calificator. Standardul IEC 1131-3 defineşte setul de calificatori elementari. Aceştia sunt prezentaţi în tabelul 3.5. Calificatorii N, R şi S sunt fără parametri. Calificatorii L, D şi P acceptă un singur parametru, de tipul TIME (timp). Standardul defineşte şi următoarele combinaţii de calificatori: • SD: memorat şi întârziat în timp • DS: întârziat în timp şi memorat • SL: memorat şi limitat în timp. Rolul unui calificator în asocierea acţiunii A cu pasul S este de a determina când trebuie iniţiată sau terminată execuţia acţiunii A în raport cu activarea sau dezactivarea pasului S. Pentru a clarifica rolul fiecărui calificator, vom considera că acţiunea A nu este asociată nici unui alt pas înafară de S, dacă nu se specifică altfel.
76 Tabelul 3.5. Calificatorii elementari ai standardului IEC 1131-3 Calificator (Q) Semnificaţie Calificatorul nul (null qualifier) N Fără memorare (Non-stored) R Reset S Set (Stored-memorat) L Limitat în timp (time Limited) D Întârziat în timp (time Delayed) P Impuls (Pulse) •
R cauzează terminarea execuţiei acţiunii A la activarea pasului S, indiferent de asocierile acţiunii A cu alţi paşi. Aceasta explică de ce calificatorul R se mai numeşte şi "reset prioritar". • S specifică faptul că execuţia acţiunii A trebuie să continue şi după dezactivarea pasului S. Execuţia lui A este terminată ulterior, prin activarea unui alt pas în care A este asociată cu calificatorul R. • L(t) determină ca la activarea pasului S să se iniţieze execuţia acţiunii A, care va avea loc cel mult pe perioada de timp t. Dacă pasul S rămâne activ mai mult decât t, atunci execuţia lui A se opreşte înainte ca pasul S să devină inactiv. Dacă controlul pleacă din pasul S înainte de expirarea timpului t, se opreşte şi execuţia acţiunii A. • D(t) specifică faptul că execuţia acţiunii A va fi iniţiată numai la expirarea unui timp t de la activarea pasului S. • P arată că acţiunea A va fi executată pe durata unui singur ciclu program de la activarea pasului S. Calificatorii combinaţi DS, SD şi SL pot fi interpretaţi într-o manieră similară. Simplificarea iniţială că acţiunea A este asociată numai pasului S a permis exprimarea efectului fiecărui calificator al execuţiei acţiunii A într-o manieră strict separată. Lucrurile devin mult mai complicate atunci când A este asociată mai multor paşi. În general, în asemenea situaţii va exista o interacţiune între efectele diferiţilor calificatori. De exemplu, să considerăm că acţiunea A este asociată cu paşii S1 şi S2, cu calificatorii L(t), respectiv S. Să mai presupunem că mai întâi se activează S1 şi că S2 se activează înainte de expirarea timpului t. Deşi rolul lui L(t) este de a opri acţiunea A după timpul t, de fapt A va fi executată în continuare, datorită efectului calificatorului S din asocierea sa cu pasul S2. Pentru exemplificarea modului de utilizare a DSS să considerăm implementarea unei secvenţe de semnalizare a unui defect [66]. Apariţia
77 unui defect (materializat prin închiderea limitatorului L2) provoacă emiterea unui semnal sonor (printr-o hupă) şi aprinderea intermitentă a unei lămpi de semnalizare (prin comanda lămpii în conjuncţie cu un oscilator implementat, de regulă, software). DSS corespunzătoare este ilustrată în figura 3.17. Acţionarea butonului b3 determină anularea semnalizării acustice. Acţionarea butonului b4 determină: - aprinderea continuă a lămpii de semnalizare dacă defectul persistă (L2=1) - stingerea lămpii de semnalizare dacă defectul a dispărut (L2=0).
Figura 3.17. DSS pentru semnalizarea unui defect Acţionarea butonului b5 determină anularea semnalizării optice. Datorită utilizării convergenţei simultane, schema este reiniţializată numai dacă au fost acţionate ambele butoane b3 şi b5 (nu neapărat simultan). Din cele prezentate pe parcursul acestui paragraf reiese că DSS reprezintă un limbaj puternic, foarte util pentru procesele care combină aspectele secvenţiale şi paralele.
78
CAPITOLUL 4 FUNCŢII SPECIALE
4.1. Programarea memoriei interne de un bit Practic, toate programele AP necesită circuite de memorie de un bit. Un exemplu tipic este contactorul ce comandă un motor din figura 3.4, unde treapta de DS memorează care dintre butoanele Start sau Stop a fost apăsat ultima dată. Acestea sunt cunoscute, din motive evidente, ca şi circuite de memorie de un bit. Cea mai întâlnită formă este prezentată în DS şi în reprezentarea DBF din figura 4.1.a. Aici ieşirea C este activată când intrarea A este activată, şi rămâne activată până când intrarea B este dezactivată. Intrarea B este prevăzută din motive de securitate; ea "permite activarea semnalului", aşa cum s-a discutat în paragrafele 3.2 şi 9.2. Operaţia este reprezentată în diagrama temporală din figura 4.1.b. Aşa cum se poate observa, intrarea B condiţionează intrarea A, aceasta fiind funcţionarea necesară a unui circuit de start/stop. Totuşi, în anumite circuite, intrarea de start trebuie să fie prioritară faţă de intrarea de stop. Un exemplu tipic se poate întâlni la automobile: ştergătoarele de parbriz pornesc atunci când se dă comanda start, chiar dacă se află pe limitatorul de cursă. DS şi reprezentarea DBF echivalentă sunt date în figura 4.1.c, unde A este buton de start, B este limitatorul poziţiei de repaus iar C este motorul ştergătorului. Diagrama temporală aferentă este dată de figura 4.1.d. În logica cablată, memoria de un bit este realizată cu CBB, reprezentate în figura 4.2.a. Acestea au două intrări, S (pentru set) şi R (pentru reset). Circuitul memorează care intrare a fost ultima pe 1 logic. Dacă ambele intrări sunt 1 simultan, intrarea set este prioritară. Acest circuit este
79 numit CBB SR. Dacă circuitul este reprezentat cu intrarea R sus, ca în figura 4.2.b, intrarea R va fi prioritară faţă de S, dacă ambele sunt 1 simultan (numit CBB RS).
Figura 4.1. Circuite de memorare a biţilor: a) cel mai obişnuit circuit de memorare, unde intrarea de Stop B condiţionează intrarea de start A; b) diagrama temporală corespunzătoare; c) circuit de memorare unde intrarea de start A condiţionează intrarea de stop B; d) diagrama temporală aferentă circuitului din c)
Figura 4.2. Două tipuri de CBB: a) CBB SR; set este prioritar faţă de reset; b) CBB RS; reset este prioritar faţă de set CBB sunt utilizate în programarea AP în limbaj DBF. În figura 4.3.a este reprezentat un contactor comandat de un AP al firmei Siemens. Se
80 observă că a fost utilizată varianta RS pentru a avea siguranţa că logica de stop este prioritară faţă de logica de start, iar semnalul de stop realizează o validare a funcţionării.
Figura 4.3. Memorie cu CBB: a) programul cu DBF; b) programul cu DS; c) CBB SRAO la AP Master de la firma ABB Claritatea este de primă importanţă în scrierea programelor de AP. Funcţionarea circuitului din figura 4.1.c nu este clară la o primă verificare. Este de mare ajutor dacă contactul folosit pentru reţinere este plasat întotdeauna în ultima poziţie în ramură (pentru DS) sau în poartă (pentru DBF). Simbolul CBB este deseori întâlnit în DS. Figura 4.3.a este un exemplu de utilizare a simbolului CBB cu DBF de la firma Siemens, echivalent figurii 4.3.b, unde sunt folosite notaţii DS. În aceste circuite s-a preferat utilizarea unor butoane de STOP normal închise. Observaţi cum apar acestea în program şi faceţi o comparaţie cu DS din figura 4.1. Această diferenţă se datorează funcţionării CBB RS (figura 4.2.b – cu "1" se face reset) şi modului de legare a butonului de STOP la AP (s-a legat la AP contactul NI). AP Master al firmei ABB utilizează simboluri aproape identice pentru CBB, cu excepţia faptului că există 5 tipuri de CBB. Primul este CBB SR uzual, reprezentat în figura 4.2. Celelalte variante se bazează pe faptul că CBB sunt precedate de combinaţii ŞI/SAU (figura 4.3.c este un exemplu). CBB adiţionale sunt monobloc, constând dintr-un CBB şi porţi ŞI/SAU interne cu dimensiuni alese de utilizator. Figura 4.3.c, de exemplu, este CBB SRAO (AND/OR-ŞI/SAU) al firmei ABB cu o poartă ŞI pe intrarea Set şi o poartă SAU pe intrarea Reset. Alte tipuri sunt SRAA (AND/AND-ŞI/ŞI), SROA (OR/AND-SAU/ŞI) şi SROO (OR/ORSAU/SAU).
81 În DS a firmei Allen Bradley, claritatea programelor poate fi îmbunătăţită prin utilizarea unor ieşiri, reprezentate în figura 4.4.a. Acestea lucrează asupra aceluiaşi bit, setând bitul când pe –(L)- este prezent un 1 logic, şi resetând bitul când pe –(U)- este prezent un 1 logic. Când pe ambele se primeşte 0 logic, bitul rămâne la valoarea corespunzătoare ultimei stări.
Figura 4.4. Alte forme de memorie: a) Set/Reset la Allen Bradley; b) Set/Reset la Mitsubishi AP F2 al firmei Mitsubishi utilizează o idee similară, dar ieşirile sunt denumite S(et) şi R(eset), ca în figura 4.4.b. Aceasta poate fi transpusă într-o LI, ca în tabelul 4.1. Tabelul 4.1. Programul LI corespunzător programului din figura 4.4.b Linie Instrucţiune Comentariu 0 LD X400 1 OR X401 2 S Y432 Setează ieşirea 3 LDI X402 4 ORI X403 5 R Y432 Resetează ieşirea Atât cu Set/Reset (latch/unlatch) al firmei Allen Bradley, cât şi cu Set/Reset al firmei Mitsubishi, prioritatea aparţine ultimei trepte din program (dintre cele două), datorită ciclului program. Ambele exemple din figura 4.4 dau, în mod corect, prioritate semnalelor STOP. Căderea alimentării sau oprirea AP cauzează probleme memoriilor de un bit. La repornirea AP, memoriile de un bit îşi vor păstra valoarea
82 avută înainte de oprire sau memoria va fi ştearsă? Aceasta este întotdeauna o problemă de siguranţă şi ţine de particularităţile aplicaţiei. O pompă de apă situată la o distanţă de 5 km de consumator ar trebui, probabil, să repornească singură dacă a fost pornită în momentul căderii alimentării; o maşină automată de tipărit ar trebui (aproape sigur) să nu pornească singură. În consecinţă, producătorii de AP permit proiectanţilor să stabilească dacă o memorie de un bit îşi va păstra starea după o cădere a alimentării (numită memorie cu reţinere) sau se va şterge la repornirea AP (numită memorie fără reţinere). La PLC-5 al firmei Allen Bradley acest lucru este determinat de către program. Bobina din figura 4.1 este fără reţinere, iar latch/unlatch din figura 4.4 este cu reţinere. Alte AP diferenţiază memoriile de un bit prin adresele alocate lor. La AP SIMATIC S5-115 adresele flag-urilor F0.0-F127.7 pot fi făcute cu reţinere. La AP ale firmei Mitsubishi, releele auxiliare M200-277 sunt fără reţinere iar M300-377 sunt cu reţinere. La AP GEM-80, tabela generală de memorare a biţilor, G, este fără reţinere, în timp ce tabela similară R este cu reţinere, astfel că un circuit similar cu cel din figura 4.1, construit cu R 3.4 în loc de C (bobina şi automenţinerea), îşi va păstra starea după o cădere a alimentării. AP Master al firmei ABB utilizează un limbaj foarte structurat şi impune un stil de programare meticulos. Natura sub-elementelor, cum ar fi memoriile, şi comportamentul lor atunci când AP este la primul ciclu program, sunt definite la prima declarare a elementelor de program. Memoriile cu reţinere pot fi periculoase, deoarece pot prezenta oscilaţii la repornire după o cădere a alimentării. Proiectantul trebuie să aibă grijă ca programul să nu introducă din greşeală componente cu reţinere prin alocarea eronată a adreselor de bit. Utilizarea tabelei R la GEM-80 este în mod particular convenabilă, dar se recomandă o mare atenţie, în general, la alegerea adreselor.
4.2. Temporizatoare Timpul intervine aproape în toate sistemele de control. Un exemplu tipic este: "La oprirea liftului, aşteaptă 0,5 secunde pentru frânarea (încetinirea) liftului, avansează până la limitatorul de nivel şi opreşte motorul, aşteaptă o secundă şi aplică frâna" sau "Porneşte pompa hidraulică; dacă contactul auxiliar nu devine 1 în 0.7 secunde, semnalizează "defect la contactor"; dacă acesta este 1, aşteaptă 2 secunde şi acţionează robinetul de
83 admisie; dacă presiunea hidraulică nu este OK în 3 secunde, semnalizează "defect hidraulic" şi opreşte pompa". Din acest motiv un sistem AP trebuie să includă temporizatoare ca parte a limbajului său de programare. Există multe tipuri de temporizatoare, câteva dintre ele fiind ilustrate în figura 4.5.
Figura 4.5. Diferite temporizatoare: a) cu temporizare la anclanşare; b) cu temporizare la declanşare; c) un impuls de durata fixă De departe, cel mai utilizat este cel cu temporizare la anclanşare, din figura 4.5.a. Toate celelalte pot fi simulate cu acesta şi cu un bit al acestuia. O tranziţie 0→1 la intrare este întârziată la ieşire cu un timp prestabilit T, dar o tranziţie 1→0 la intrare nu este întârziată deloc. Un semnal de intrare mai scurt decât T este ignorat. AP GEM-80 are doar acest tip de temporizator, numit întârzietor. Temporizatorul la declanşare din figura 4.5.b trece ieşirea din 0 în 1 instantaneu cu intrarea, dar întârzie la ieşire tranziţia 1→0. O utilizare obişnuită a temporizării la declanşare este pentru înlăturarea vibraţiilor de contact ale unui semnal de intrare. Un temporizator la declanşare poate fi obţinut dintr-un temporizator la anclanşare prin utilizarea semnalului de intrare inversat şi luând în considerare inversul semnalului de ieşire al temporizatorului (deşi programul pierde din claritate). Figura 4.5.c este un temporizator declanşat pe front care generează un impuls de durată fixă pentru fiecare tranziţie 0→1 a intrării temporizatorului. AP PLC-5 are un temporizator de un ciclu program care produce un impuls la un ciclu program (o singură dată). Impulsurile sunt utile la resetarea numărătoarelor sau la transferul unor informaţii dintr-o locaţie în alta. În paragraful 8.4 este prezentat un exemplu tipic de utilizare a impulsurilor cu durata de un ciclu program. Un temporizator de orice tip are anumite valori care trebuie fixate de către utilizator. Prima din aceste valori este unitatea de timp (în ce unităţi se măsoară timpul). Unităţile uzuale sunt 10 ms, 100 ms, 1 s, 10 s şi 100 s.
84 Unităţile utilizate nu afectează precizia temporizatorului. În mod normal precizia este în legătură cu durata ciclului program. Următoarea valoare definită este durata temporizării (adeseori numită preset). Aceasta este dată, de obicei, în valori ale bazei de timp. De exemplu, un temporizator cu un preset de 150 şi o bază de timp de 10 ms va întîrzia 1,5 s. În AP mici preset-ul poate fi fixat de către programator; în AP mari durata temporizării poate fi modificată din interiorul programului. De exemplu, un temporizator la declanşare utilizat la frânarea unui lift poate avea diferite durate ale temporizării, după cum liftul se deplasează cu viteză mare sau cu viteză mică. Fiecare temporizator este prevăzut cu câteva semnale, ce pot fi utilizate în program. Figura 4.6 arată semnalele generate de către un temporizator la anclanşare al AP PLC-5 (numit TON) şi de către un temporizator la declanşare al AP PLC-5 (numit TOF): • EN (pentru enable=validat) simbolizează intrarea temporizatorului • TT (pentru durata temporizării) este activat pe durata măsurării timpului • DN (pentru done=sfârşitul temporizării) arată că temporizarea s-a încheiat.
Figura 4.6. Notaţiile firmei Allen Bradley pentru temporizatoare: a) temporizator TON; b) temporizator TOF În AP mari, timpul scurs (numit deseori timp acumulat) poate fi accesat prin program pentru utilizarea lui în altă parte (se poate întîmpla ca un program să trebuiască să înregistreze cât timp a durat o anumită operaţie). Tehnica programării temporizatoarelor este diferită de la producător la producător. Unii, cum ar fi la AP GEM-80, tratează temporizatorul ca un bloc de întârziere similar celui din figura 4.5.a, cu valoarea prestabilită memorată în blocul VALUE (valoare).
85
Figura 4.7. Diferite tipuri de temporizatoare folosite pentru aceeaşi aplicaţie: a) notaţia AP PLC-5; b) notaţia AP GEM-80; c) notaţia DBF a firmei Siemens
86 Firma Siemens utilizează o idee similară dar are diferite tipuri de temporizatoare. AP PLC-5 utilizează temporizatoarele la sfârşitul treptelor de program, semnalele temporizatoarelor fiind disponibile sub formă de constante, pentru a putea fi utilizate în altă parte. Figura 4.7 este o aplicaţie tipică programată pentru un AP PLC-5, un GEM-80 şi un SIMATIC S5-115U (cu DBF). Programul comandă contactorul unui motor care este pornit şi oprit prin butoane. Contactorul are un contact auxiliar care se închide atunci când contactorul anclanşat şi care spune efectiv când merge motorul. Dacă contactorul se declanşează datorită unei suprasarcini, sau datorită apăsării unui buton de Avarie-Stop, sau datorită căderii tensiunii de alimentare, semnalul de la contactul auxiliar va fi pierdut. Acest contact nu poate fi verificat mai devreme de 1,5 s după anclanşarea contactorului, pentru a lăsa timp pentru comutarea contactului. Figura 4.7 verifică contactul auxiliar şi semnalizează un defect de acţionare dacă sunt probleme. Observaţi diferenţele de utilizare a temporizatoarelor şi de procesare a semnalului de defect.
Figura 4.8. Temporizatoare: a) temporizator fără reţinere; b) temporizator cu reţinere; c) simbolurile firmei Allen Bradley pentru temporizatorul din figura b; d) simbolul firmei Siemens pentru temporizatorul din figura b Valoarea acumulată a temporizatoarelor discutate până acum devine 0 de fiecare dată când intrarea trece în 0, aşa cum s-a reprezentat în figura 4.8.a. Acesta este cunoscut sub numele de temporizator fără reţinere. Majoritatea temporizatoarelor AP sunt de acest fel. Uneori este util, însă, să
87 dispunem de temporizatoare care să păstreze valoarea curentă, chiar dacă semnalul de intrare este 0. Când intrarea este 1 din nou, temporizatorul continuă de la valoarea la care s-a oprit, ca în figura 4.8.b. Acesta se numeşte temporizator cu reţinere. Trebuie utilizat un semnal separat pentru aducerea temporizatorului la 0. Dacă la un anumit tip de AP nu sunt disponibile temporizatoare cu reţinere, această funcţie poate fi realizată cu un numărător, aspect discutat în paragraful următor. Un temporizator obişnuit poate număra până la 32767 de unităţi ale bazei de timp (corespunzător la 16 biţi). Câteva AP mai vechi, care lucrează în BCD, pot număra doar până la 999. Cu o bază de timp de 1 sec timpul maxim ce poate fi măsurat este de max 546 min sau aproximativ 9h (dacă temporizatorul numără până la 32767). Dacă trebuie măsuraţi timpi mai mari (sau timpi cu o rezoluţie mai mică de 1 s) pot fi utilizate împreună temporizatoare şi numărătoare, aspect descris în paragraful următor.
4.3. Numărătoare În multe programe de AP numărătoarele sunt componente fundamentale. AP trebuie să poată număra obiectele ce trec pe o bandă sau să numere de câte ori se petrece un eveniment. La motoarele mari, de exemplu, trebuie înregistrat numărul de porniri. În consecinţă, toate AP includ anumite tipuri de numărătoare. Un numărător poate fi reprezentat ca în figura 4.9, deşi nu toate AP vor avea aceleaşi facilităţi pe care le vom descrie. Vor fi două numere asociate fiecărui numărător. Primul este valoarea acumulată, care va fi incrementată la fiecare tranziţie 0→1 a intrării de numărare înainte sau va fi decrementată la fiecare tranziţie 0→1 a intrării de numărare înapoi. Valoarea acumulată poate fi adusă la 0 prin aplicarea unui 1 pe intrarea de Reset. Ca şi la un temporizator, valoarea acumulată poate fi citită şi utilizată în alte părţi ale programului. Al doilea număr este valoarea prestabilită, care poate fi considerată ca valoarea destinaţie a numărătorului. Dacă valoarea acumulată atinge valoarea prestabilită, este generat un semnal de "Numărare terminată". Valoarea prestabilită poate fi modificată prin program. De exemplu, într-un proces în care se efectuează transportul unor obiecte, poate fi necesar ca operatorul să modifice numărul obiectelor din proces prin tastatura unui calculator sau cu un terminal de programare. Similar, semnalul "valoarea zero" este deseori disponibil, comportându-se ca în figura 4.9.b. Producătorii de AP au realizat mai multe tipuri de numărătoare, la fel ca şi în cazul temporizatoarelor. AP PLC-5 şi ale firmei Mitsubishi
88 utilizează numărătoare cu numărare înainte (CTU), numărare înapoi (CTD) şi reset (RES) ca terminatori de treaptă în program. La atingerea valorii prestabilite numărătoarele generează un semnal de "Numărare încheiată" (de exemplu, C5:4.DN), care poate fi utilizat ca un contact.
Figura 4.9. Numărător reversibil: a) schema internă a numărătorului; b) operaţia de numărare AP SIMATIC-S5 al firmei Siemens, Master al firmei ABB şi GEM80 tratează un numărător ca un bloc intermediar într-o DBF sau treaptă în DS, de la care se pot utiliza semnalele de ieşire. Figura 4.10 prezintă o aplicaţie de numărare simplă , realizată cu AP PLC-5, GEM-80 şi SIMATIC-S5. Obiectele ce trec pe un conveior sunt detectate printr-o fotocelulă şi numărate. Când o încărcătură este completă,
89 conveiorul este oprit şi becul de încărcare completă "Gata" este aprins, pentru ca operatorul să deplaseze încărcătura. După ce operatorul face acest lucru, se poate apăsa un buton de restart şi astfel se porneşte secvenţa din nou. Deşi mai mici, programele de la AP GEM-80 şi SIMATIC-S5 prezintă amândouă o mică problemă care nu se observă la o primă vedere. Dacă este adăugat un buton de testare a becului, apăsarea lui va cauza oprirea conveiorului. În ambele cazuri acest lucru poate fi preîntâmpinat prin utilizarea unei memorii interne care să arate că "numărarea este completă". Atunci se va utiliza un contact -⎪/⎪- al acesteia pentru conveior şi un contact -⎪ ⎪- al acesteia pentru bec. Aceasta va adăuga o treaptă la fiecare program. Consideraţii ca aceasta sunt cunoscute sub numele de "inginerie software", acest titlu fiind discutat în capitolul următor. Ca şi temporizatoarele, numărătoarele permit numărarea până la 32767. Când se doresc valori mai mari, numărătoarele pot fi puse în cascadă, semnalul de "numărare încheiată" de la primul fiind utilizat ca intrare de numărare pentru al doilea şi ca reset pentru el însuşi. Presupunem că numărătorul 1 păstrează valorile 0-999 iar numărătorul 2 păstrează miile. Dacă numărătorul 2 conţine valoarea 23516 iar numărătorul 1 conţine valoarea 457, atunci valoarea finală este 23516457. Figura 4.11 este o variantă a ideii de legare în cascadă a numărătoarelor pentru a obţine o temporizare (contorizare) foarte mare. Programul este scris pentru un PLC-5, dar aceeaşi idee poate fi utilizată la orice AP. Prima treaptă generează un impuls ce permite începerea funcţionării, cu durata de un ciclu program, cu distanţa între impulsuri fixată printr-un temporizator. Dacă temporizatorul a fost pornit şi nu a ajuns la valoarea prestabilită, semnalul DN din treapta a doua nu este prezent. Când temporizatorul atinge valoarea prestabilită, este generat semnalul DN, care resetează şi reporneşte temporizatorul din treapta întâi iar în treapta a doua se formează un impuls cu durata de un ciclu program. Impulsurile rezultate sunt numărate de numărătoare legate în cascadă pentru a furniza secundele/minutele/orele/zilele. Când un numărător atinge valoarea prestabilită, generează un impuls pentru incrementarea numărătorului următor şi pentru resetarea sa. Această tehnică este des utilizată la înregistrarea orelor de mers ale pompelor, ventilatoarelor şi altor dispozitive similare, pentru programarea mentenanţei. În acest caz, evenimentul din treapta a doua este un contact auxiliar de la un contactor ce comandă un motor.
90
Figura 4.10. Aplicaţii ale numărătoarelor la: a) AP PLC-5; b) AP GEM-80: c) AP SIMATIC-S5
91
Figura 4.11. Numărătoare în cascadă Temporizatoarele pentru durate mari, construite cu numărătoare, sunt în mod normal cu reţinere (îşi păstrează valoarea atunci când evenimentul controlat nu este 1). Ele pot fi făcute fără reţinere prin resetarea numărătoarelor atunci când evenimentul de controlat este 0, dar acestea sunt rar utilizate.
4.4. Aplicaţii numerice 4.4.1. Reprezentarea numerelor Până acum s-a discutat despre operaţii pe bit. Numerele sunt, de asemenea, parte a schemelor de comandă. Uneori, un AP trebuie să calculeze ritmul producţiei în unităţi pe oră, pe zile, sau să furnizeze cantitatea de lichid existentă într-un rezervor. Asemenea operaţii necesită existenţa posibilităţii procesării datelor numerice.
92 Majoritatea AP lucrează cu cuvinte pe 16 biţi permiţând reprezentarea numerelor în gama 0÷65535 sau, în complement faţă de 2, în gama -32768 ÷ +32767. În ultimul caz bitul cel mai semnificativ reprezintă semnul, fiind 1 pentru numerele negative şi 0 pentru cele pozitive. Reprezentarea în complement faţă de 2 este cea mai utilizată în AP, dar nu singura. Numerele ca acestea se numesc întregi. Când este necesară procesarea unor întregi înafara domeniului menţionat, pot fi utilizate două cuvinte de 16 biţi care permit o gamă de –2147483648 ÷ +2147483647. Acest tip de întreg este disponibil la AP Master al firmei ABB (unde este denumit "întreg lung") şi la modelele SIMATIC-S5 135U şi 155U ale firmei Siemens (unde este utilizat termenul "cuvînt dublu"). Unde sunt necesare numere cu zecimale (de exemplu, pentru o temperatură de 45,6 °C) poate fi utilizată o formă de reprezentare similară celei utilizate într-un calculator. Acestea sunt numere în virgulă mobilă, numite şi numere reale. În general, acestea constau în două cuvinte de 16 biţi care conţin mantisa (partea numerică) şi exponentul. De exemplu, în baza 10 numărul 74057 va avea mantisa 7,4057 şi exponentul 4, care reprezintă 104. AP lucrează în binar şi reprezintă mantisa şi exponentul în complement faţă de 2. Există, inevitabil, diferenţe de prezentare între producători, dar există şi un standard care le reuneşte, şi anume IEEE format 32 biţi simplă precizie, prezentat în figura 4.12.c.
Figura 4.12. Reprezentări numerice: a) întreg pe 16 biţi standard; b) întreg lung pe 32 biţi; c) real IEEE 32 biţi
93 Aceasta dă o gamă de ±(1,175E-38 ÷ 3,402E38). Anumiţi producători au micşorat exponentul pentru o mai mare precizie în mantisă. La AP Master al firmei ABB, de exemplu, gama este ±(5,4E-20 ÷9,2E18), ceea ce permite precizie sporită. Numerele reale sunt foarte utile dar limitările lor trebuie clar înţelese. În general, există două probleme. Prima apare atunci când sunt utilizate împreună numere mari şi numere mici. Să presupunem că avem un sistem ce operează în baza 10 cu patru cifre semnificative, şi că dorim să adunăm 857800 (scris ca 8,578E5) şi 96 (scris ca 9,600 E1). Deoarece numărul mai mic este în afara gamei (0,00096E5), acesta va fi ignorat, dând rezultatul 857800+96=857800. A doua problemă apare atunci când testele (comparaţiile) sunt făcute cu numere reale. Conversia numerelor zecimale în numere binare poate fi făcută doar cu rezoluţia permisă de formatul în virgulă mobilă (1,175E-38 pentru IEEE simplă precizie). Majoritatea calculatoarelor păstreaza numerele în virgulă mobilă iar efectul conversiei din zecimal în virgulă mobilă poate fi demonstrat cu un program BASIC simplu : 100 A=3 110 B=6.4 120 C=9.4 130 IF (A+B)=C THEN PRINT ("3+6.4=9.4"): GOTO 150 140 PRINT ("3+6.4 nu face=9.4, FACE = "): PRINT C 150 PRINT ("AI GRIJĂ CU NUMERELE REALE!") Acest program simplu nu face ceea ce vă asteptaţi să facă (adică nu va executa linia 130 şi salt la 150, ci va executa linia 140, urmată de linia 150)! Dacă numerele reale trebuie utilizate pentru comparaţii, un simplu "=" este foarte riscant. Operatorii ≥ sau ≤ sunt siguri, dar în general este mai bine ca pentru a realiza testele să se utilizeze, pe cât posibil, numere întregi. Ultima reprezentare, în BCD, este utilizată pentru conectarea cu exteriorul a unor echipamente cum ar fi afişaje digitale sau comutatoare decadice. Aceste echipamente utilizează formatul BCD, cu 4 biţi/decadă. Această reprezentare produce o risipă de biţi, deoarece 6 numere (de la 10 la 15) nu se reprezintă, ci doar 0÷9. Este, totuşi,o formă convenabilă de conectare cu exteriorul. Majoritatea AP au, în consecinţă, instrucţiuni care convertesc formatul BCD în format binar intern şi invers. AP PLC-5, de exemplu, are instrucţiunile FRD (pentru BCD→binar) şi TOD (binar→BCD). Figura 4.13 arată schematic o operaţie tipică. Tipurile numerelor disponibile în fiecare AP variază considerabil în funcţie de model (şi de preţ). AP F2 al firmei Mitsubishi, de exemplu,
94 permite doar transferuri, comparări şi ieşiri ale datelor numerice de la numărătoare sau temporizatoare, aceasta făcând din el în esenţă un AP cu prelucrare de bit.
Figura 4.13. Aplicaţii ale BCD La firma Siemens, modelul SIMATIC-S5 115U utilizează numere întregi pe 16 biţi, dar următorul model în gamă, 135U, poate procesa numere întregi de 16 şi 32 biţi şi numere în virgulă mobilă. Posibilităţi asemănătoare pot fi întâlnite şi la firmele Allen Bradley şi ABB. 4.4.2. Transferul datelor Uneori este necesar ca numerele să fie transferate dintr-o locaţie în alta, valoarea prescrisă a unui temporizator să fie modificată în funcţie de condiţiile procesului, valoarea unui numărător să fie trimisă la un modul de ieşire pentru a fi indicată pe un afişaj digital, sau rezultatul unor calcule să fie utilizat în altă parte a programului. AP PLC-5 al firmei Allen Bradley utilizează o treaptă de DS pentru fiecare operaţie de transfer şi este, probabil, cel mai simplu de explicat pentru început. Acest mod de lucru este valabil şi pentru toate operaţiile aritmetice pe care le vom considera, dar poate conduce la utilizarea mai multor trepte de program pentru o operaţie dată, faţă de alte AP. Figura 4.14.a prezintă forma treptei. Aceasta începe cu câteva condiţii binare; dacă toate acestea sunt 1, ieşirea MOV (pentru transfer) este executată, transferând data de la sursă la destinaţie. Sursa şi destinaţia pot fi oricare din locaţiile unde pot exista date numerice, de exemplu:
95 •
Valoarea prestabilită pentru un numărător sau temporizator; de exemplu, C5:17.PRE sau T4:52.PRE • Valoarea acumulată a unui numărător sau temporizator; de exemplu, C5:22.ACC sau T4:6.ACC • Cuvânt de dată de I/E; de exemplu: I :23 (modulul 3 în SB 2, toţi cei 16 biţi) O :47 (modulul 7 în SB 4, toţi cei 16 biţi) • Memorie internă de întregi; de exemplu, N 7:24 • Memorie internă în virgulă mobilă; de exemplu, F 8:32 Observaţi că toate aceste date sunt interpretate ca fiind numere binare; dacă sunt necesare date în cod BCD, se pot utiliza instrucţiunile FRD şi TOD (vezi figura 4.13).
Figura 4.14. Transferul datelor la: a) AP PLC-5; b) AP SIMATIC-S5; c) AP GEM-80 Dacă datele sunt transferate între forme de numere întregi şi între forme de numere în virgulă mobilă, conversia este făcută automat. Trebuie avut însă grijă la transferarea numerelor din virgulă mobilă în întregi deoarece pot apare erori dacă numărul în virgulă mobilă este în afara domeniilor întregilor. O ultimă remarcă: o constantă poate fi utilizată doar ca sursă. Deci, exemplul din figura 4.14.a transferă numărul din locaţia N7:34 la valoarea prestabilită a temporizatorului T4:6 atunci când condiţiile din treaptă sunt îndeplinite. Firmele Siemens şi CEGELEC utilizează o abordare uşor diferită, care conduce la programe mai compacte şi cu mici îmbunătăţiri împotriva surselor de erori, utilizând, însă, o cale de lucru mai puţin directă. Amândouă tratează un transfer de date cu două instrucţiuni separate,
96 utilizând un acumulator separat (o locaţie de memorie de 1 cuvânt). Firma Siemens utilizează instrucţiunile Load (L) pentru a transfera data de la sursă în acumulator, şi Transfer (T) pentru a transfera date din acumulator la destinaţie, ca în figura 4.14.b. Data poate proveni (sau merge) din (în) orice zonă de memorie, câteva din ele fiind: IW - un cuvânt de intrare de 16 biţi QW - un cuvânt de ieşire de 16 biţi T - un cuvânt de temporizator C - un cuvânt de numărător DW - memorie de cuvinte pe 16 biţi Deci, figura 4.14.b poate fi programată în felul următor: : L T113 (cuvânt de temporizator în acumulator) : T DW45 (conţinutul acumulatorului în memoria de cuvinte 45) Utilizarea acumulatorului nu este evidentă la AP GEM-80 al firmei CEGELEC. Instrucţiunea -- transferă numărul binar din locaţia specificată în treapta DS iar instrucţiunea-- transferă valoarea din treaptă la adresa specificată. În figura 4.14.c valoarea binară de la cuvântul de intrare de 16 biţi A12 este plasată într-o memorie internă de 16 biţi G24. Se poate face conversia BCD/binar, cu instrucţiunea şi , sensul transferului fiind evident. Diferenţa între figurile 4.14.b,c şi figura 4.14.a va deveni mai clară când vom discuta despre operaţii aritmetice în paragraful 4.4.4. La AP Master al firmei ABB, punctele între care trebuie transferată data sunt conectate simplu în DS. 4.4.3. Compararea datelor Deseori este necesară compararea datelor în programele AP. Exemple tipice sunt: • un numărător de obiecte care arată dacă a fost livrat un anumit număr de obiecte • circuite de alarmă, care indică faptul că o temperatură a urcat peste un nivel de siguranţă. Aceste comparaţii sunt realizate de către elemente care au forma generală ca în figura 4.15, cu două intrări numerice corespunzătoare celor 2 valori ce vor fi comparate şi o ieşire binară, care devine 1 dacă este îndeplinită o condiţie specificată. Sunt posibile multe comparaţii. Majoritatea AP asigură: A>B, A ≥ B , A=B, A ≤ B, A
View more...
Comments