Home - qdidactic.com
Didactica si proiecte didacticeBani si dezvoltarea cariereiStiinta  si proiecte tehniceIstorie si biografiiSanatate si medicinaDezvoltare personala
referate baniLucreaza pentru ceea ce vei deveni, nu pentru ceea ce vei aduna - Elbert Hubbard





Afaceri Agricultura Comunicare Constructii Contabilitate Contracte
Economie Finante Management Marketing Transporturi

Electrica


Qdidactic » bani & cariera » constructii » electrica
Automate programabile logice - APL - utilizarea automatelor programabile logice



Automate programabile logice - APL - utilizarea automatelor programabile logice


Automate programabile logice - APL - utilizarea automatelor programabile logice


Ce este un automat programabil


Un automat programabil este un instrument care a fost inventat pentru a inlocui circuitele de relee secventiale necesare pentru controlul instalatiilor. Un automat programabil functioneaza astfel : El se uita la intrarile sale si in functie de starea lor comuta iesirile pe activ sau inactiv. Utilizatorul introduce un program, de obicei prin intermediul unui program care ii da raspunsurile dorite.

Automatele programabile sunt folosite in multe aplicatii din “lumea reala”. Daca exista industrie sunt mari sanse ca sa existe si un automat programabil. Daca esti implicat in industria de masini, de ambalaje, manipulari de materiale, asamblare automata sau in nenumarate alte industrii probabil ca le utilizezi deja. Daca nu le folosesti, irosesti timp si bani. Aproape orice aplicatie care necesita un tip de control electric are nevoie de un automat programabil.



De exemplu, sa presupunem ca, atunci cand un intrerupator este inchis vrem sa invartim un solenoid pentru 5 secunde si apoi sa-l oprim indiferent de cat timp este inchis intrerupatorul. Putem face asta cu un simplu temporizator extern . Dar daca procesul include 10 intreruptoare si solenoide? Ne-ar trebui 10 temporizatoare externe. Ce ar fi ca procesul sa necesite numararea inchiderilor intreruptoarelor ? Ne trebuie o multime de numaratoare externe.

Asa cum puteti vedea cu cat mai mare este procesul cu atat mai multa nevoie avem de  un automat programabil. Putem simplu programa automatul sa numere intrarile si sa dea drumul la solenoid atunci cand este necesar.

Acest site va da suficiente informatii ca sa fiti in stare sa scrieti programe suficient de complicate. Ne vom arunca o privire la ceea ce este considerat a fi “top 20”-ul instructiunilor automatului programabil. Se poate estima cu usurinta ca intelegerea acestor instructiuni implica posibilitatea rezolvarii a mai mult de 80% din aplicatiile in existenta.

Chiar asa, mai mult de 80%! Bineinteles ca vom invata mai mult decat aceste instructiuni ca sa te ajutam sa rezolvi aproape toate aplicatiile tale.


Istoria automatului programabil


PLC History


La sfarsitul anilor 1960 automatele programabile au fost pentru prima oara introduse. Motivul principal pentru realizarea unui astfel de aparat a fost eliminarea costurilor mari necesare pentru a inlocui complicatul sistem de control al masinilor bazat pe relee. Bedford Associates (Bedford, Massachusets) au propus ceva intitulat Controler Modular Digital (MODICON) unui mare producator de autovehicule din SUA. Alte companii atunci au propus scheme bazate pe computere, una din ele fiind bazata pe PDP-8. MODICON 084 a fost primul automat programabil produs pentru comercializare.

Cand nevoile de productie s-au schimbat, acelasi lucru s-a intamplat si cu sistemul de control. Acesta devine foarte scump cand schimbarea este frecventa. Deoarece releele sunt dispozitive mecanice ele au o viata limitata ce necesita o respectare stricta a programelor de intretinere. Defectiunile erau destul de problematice cand atat de multe relee erau folosite. Imaginati-va un panou de comanda a unei masini ce include multe, poate sute sau mii de relee individuale. Dimensiunea poate intrece imaginatia. Ce ziceti de legarea initiala a atat de multe dispozitive! Existau probleme? Bineinteles!

Aceste “controlere noi” trebuiau sa fie usor de programat de inginerii fabricii si cei de intretinere. Durata de viata trebuia sa fie lunga si schimbarile de program sa fie usor de realizat. Trebuiau de asemenea sa reziste durului mediu industrial. Acestea sunt niste cerinte destul de mari! Rezultatul a fost utilizarea unei tehnici de programare cu care majoritatea oamenilor era deja familiarizata si inlocuirea partilor mecanice cu altele mai solide.

La mijlocul anilor 70 tehnologiile automatelor programabile au fost masinariile secventiale si bazate pe procesoare. AMD-urile 2901 si 2903 au fost foarte populare in automatele Modicon si A-B. Microprocesoarele conventionale nu aveau puterea sa rezolve rapid logica automatelor programabile in mare dar se puteau folosi la cele mai mici dintre ele. Cu evolutia microprocesoarelor conventionale au aparut automate programabile din ce in ce mai mari bazate pe ele. Oricum, chiar si azi cateva sunt inca bazate pe 2903(A-B PLC3). Modicon n-a construit un automat mai rapid decat 984A/B/X care a fost bazat pe 2901.

Abilitatile de comunicare au inceput sa apara cam in 1973. Primul astfel de sistem a fost Modbus de la Modicon. Automatele pot comunica cu alte automate programabile si puteau fi departe de masinaria pe care o controlau. Puteau fi folosite de asemenea pentru a trimite si primi voltaje variate pentru a le permite sa intre in lumea analogica. Din nefericire, lipsa standardizarii impreuna cu tehnologia in continua schimbare a facut ca comunicarea intre automate sa devina un cosmar de protocoale incompatibile si retele fizice. Si totusi a fost o decada foarte reusita pentru automatele programabile.

Anii 80 au adus o incercare de standardizare a comunicatiilor cu Protocolul Manufacturii Automatizate (MAP) de la General Motors. A fost si perioada in care s-au redus dimensiunile automatelor programabile si introducerea programarii soft-ului prin programarea simbolica pe PC-uri in loc de terminalele de programare sau dispozitivele de programare. Astazi, cel mai mic automat programabil este de dimensiunea unui singur releu de control!

Anii 90 au vazut o reducere graduala a introducerii de noi protocoale si modernizarea structurii fizice a catorva dintre cele mai populare protocoale care au supravietuit anilor 1980. Ultimul standard a incercat sa uneasca limbajul de programare a automatelor sub un standard international. Acum avem automate care sunt programabile cu ajutorul Grafcet-urilor, a listei de instructiuni, C-ului si textului structurat, toate in acelasi timp! PC-urile sunt de asemenea folosite pentru a inlocui automatele in anumite aplicatii. Compania initiala care a realizat MODICON 084 a trecut la realizarea unui sistem de control bazat pe PC.

Ce vor aduce anii 2000? Doar timpul ne va spune.


Teoria operatiei


The Guts Inside

Interiorul


Automatul programabil este compus in mare dintr-un procesor, memorie, si circuitele necesare pentru a receptiona datele. Putem considera automatul programabil ca fiind o cutie plina de sute sau chiar mii de relee, contoare, temporizatoare si depozite de date. Aceste contoare, temporizatoare, etc. chiar exista? Nu ele nu exista fizic ci sunt mai degraba simulate si pot fi considerate contoare, temporizatoare software. Aceste relee interne sunt simulate prin locatiile in registri.

Ce face fiecare parte?

RELEELE DE INTRODUCERE (contactele) Acestea sunt conectate la lumea de afara.. Ele exista fizic si receptioneaza semnale de la comutatoare, senzori, etc. De obicei nu sunt relee ci mai degraba tranzistori.

RELEELE UTILITARE INTERNE (contacte) Acestea nu primesc semnale din exterior si nici nu exista fizic. Ele sunt relee simulate si sunt ceea ce face un automat programabil sa elimine releele externe. Sunt de asemenea cateva relee speciale care sunt dedicate realizarii unei singure operatiuni. Cateva sunt intotdeauna pornite in timp ce sunt altele care sunt intotdeauna oprite. Cateva sunt pornite numai odata la pornirea automatului si sunt de obicei folosite pentru a initializa datele stocate.

CONTOARELE De asemenea acestea nu exista fizic. Ele sunt simulate si pot fi programate sa numere impulsurile. De obicei aceste contoare pot numara crescator, descrescator sau in ambele directii. Din moment ce sunt simulate sunt limitate in privinta vitezei de contorizare. Cativa manufacturieri includ de asemenea contoare de mare viteza care insa sunt hardware. Ne putem gandi la acestea ca existand fizic. De cele mai multe ori si aceste contoare pot contoriza crescator, descrescator sau in ambele directii.

TEMPORIZATOARELE Nici acestea nu exista fizic. Ele sunt de multe tipuri si incrementari. Cel mai comun tip este “pornirea intarziata”. Altele includ “oprirea intarziata” si ambele tipuri cu retinere si fara retinere. Incrementarile pot varia de la 1ms la 1s.

RELEELE DE IESIRE (spiralele) Acestea sunt conectate la lumea exterioara. Ele exista fizic si trimit semnale de pornire/oprire catre solenoide, lumini, etc. Ele pot fi tranzistoare, relee sau “triacs” in functie de modelul ales.

STOCAREA DATELOR De obicei de acest lucru se ocupa registrii desemnati sa stocheze datele.. Ele sunt folosite de obicei pentru o stocare temporara a datelor matematice sau de manipulare. De asemenea sunt folosite pentru a retine datele cand automatul programabil este oprit. La repornire ele vor avea acelasi continut ca inainte de oprire. Foarte convenabil si necesar!!

PLC Operation

Operatiile automatului programabil


Un automat programabil functioneaza facand in continuu apel la un program. Putem sa ne gandim la ciclul de apelare ca fiind format din 3 pasi importanti. De obicei sunt mai mult de 3 dar ne putem concentra pe partile importante fara sa ne facem griji in privinta celorlalte. In general, celelalte verifica sistemul si reinnoiesc contorul interior si valorile temporizatoarelor.

Pasul 1- VERIFICAREA STARII INTRARILOR –Primul automat programabil se uita la fiecare intrare ca sa determine daca este pornita sau nu. Cu alte cuvinte, senzorul este conectat la prima intrare sau nu? Dar a doua intrare ? Dar a treia… Inregistreaza aceste date in memorie pentru a fi utilizate in timpul pasului urmǎtor.

Pasul 2 – EXECUTIA PROGRAMULUI – Apoi automatul programabil executa programul dvs. o instructiune odata. Poate ca programul dumneavoastra spune ca daca prima intrare este pornita ar trebui sa porneasca prima iesire.Din moment ce cunoaste ce intrari sunt pornite/oprite de la pasul anterior va fi in stare sa decida daca prima iesire ar trebui pornita bazandu-se pe starea primei intrari. Va stoca rezultatele executiei pentru a fi utilizate mai tarziu in timpul pasului urmator.

Pasul 3 – REFACEREA STARII IESIRILOR - La sfarsit automatul programabil reface starea iesirilor. Le reface bazandu-se pe ce intrari au fost pornite in timpul primului pas si pe rezultatele executiei programului in timpul celui de-al doilea pas. Bazandu-se pe exemplul din pasul 2 acum ar trebui sa porneasca prima iesire pentru ca prima intrare a fost pornita si programul dumneavoastra i-a spus sa porneasca prima iesire cand aceasta conditie este adevarata.

Dupa al treilea pas automatul se reintoarce la pasul intai si repeta pasii in continuu.Un timp « de scanare » este definit ca fiind timpul care ii ia sa execute cei trei pasi enumerati mai sus.

Response Time

Timpul de raspuns

Timpul de raspuns total al unui automat programabil este de fapt ceea ce luam in considerare cand cumparam un automat programabil. Ca si creierul nostru, automatului programabil ii ia un timp ca sa reactioneze la schimbari. In multe aplicatii viteza nu conteaza, in altele insa…

Daca va ridicati privirea de pe text puteti vedea o pictura pe perete. Ochii vostrii vad o pictura pe perete inainte ca creierul vostru sa zica « Oh, este o pictura pe perete ».In acest exemplu ochii dumneavoastra pot fi considerati senzorul. Ochii sunt conectati cu circuitul de intrare al creierului dumneavoastra. Circuitului de intrare a creierului dumneavoastra ii ia un anumit timp sa realizeze ca ochii dumneavoastra vad ceva. (daca a-ti baut alcool, timpul de raspuns va fi mai lung!) Eventual creierul dumneavoastra realizeaza ca ochiiau vazut ceva si proceseaza datele. Trimite un semnal de iesire catre gura dumneavoastra. Gura dumneavoastra receptioneaza datele si incepe sa raspunda la ele. Eventual gura dumneavoastra va exclama « Ce pictura urata ! »

Observati in acest exemplu ca trebuie sa raspundem la 3 lucruri:

INTRAREA – Ne trebuie un anumit timp pentru ca creierul sa observe semnalul de intrare de la ochi.

EXECUTIA – Ne trebuie un anumit timp pentru ca sa procesam informatia receptata de la ochi. Sa consideram programul : Daca ochii vad o pictura urata atunci iesirea va fi exclamatia iesita din gura.

IESIRE – Gura primeste un semnal de la creier si eventual arunca vorbele « Ce pictura urata »

Response Time Concerns

Ce insemnǎ timpul de rǎspuns

Acum ca stim despre timpul de raspuns, iata ceea ce inseamna pentru aplicatii. Automatul programabil poate doar sa vada o intrare care este pornita/oprita cand se uita. Cu alte cuvinte, se uita doar la intrari in timpul partii de intrare a scanarii.

In diagrama, intrarea 1 nu este vazuta pana la scanul al 2-lea. Aceasta pentru ca atunci cand intrarea 1 este pornita, scanarea 1 a terminat de verificat intrarile.
Intrarea 2 nu este vazuta pana la scanarea 3. Aceasta si pentru ca atunci cand intrarea este pornita scanarea a 2-a s-a terminat deja.
Intrarea 3 nu este vazuta niciodata. Aceasta si pentru ca atunci cand scanarea a 3-a se uita la intrari, semnalul 3 nu a fost pornit inca. Se opreste inainte ca scanarea a 4-a sa se uite la intrari.


Pentru a evita aceasta vom spune ca intrarea trebuie sa fie pornita cel putin 1 timp de intarziere a intrarii+1 timp de scanare.

Dar daca nu a fost posibil ca intrarea sa fie pornita atat de mult timp? Atunci automatul programabil nu vede intrarea pornita. De aceea apare o problema! Nu este adevarat… bineinteles trebuie sa existe o cale de a solutiona aceasta. De fapt sunt doua cai.

Functia de lungire a semnalului. Aceasta functie extinde lungimea semnalului pana cand automatul se uita la intrari in timpul scanarii urmatoare. ( lungeste durata unui impuls)

Functia intrerupere. Aceasta functie intrerupe scanarea pentru a procesa o comanda speciala pe care a-ti scris-o. Imediat cum intrarea porneste, indiferent de locul in care se afla scanarea, automatul imediat opreste ceea ce face si executa o rutina de intrerupere. (O rutina poate fi gandita ca un mini program in afara programului principal). Dupa ce este executata comanda de intrerupere, se reintoarce la punctul unde a ramas si continua cu procesul normal de scanare.

Acum haideti sa consideram cel mai lung timp pentru ca o iesire sa fie pornita. Sa presupunem ca atunci cand un comutator este pornit, trebuie sa pornim o incarcatura legata la iesirea automatului programabil.
Diagrama de dedesubt arata cea mai lunga intarziere (cel mai rau caz pentru ca intrarea nu este vazuta pana la scanarea a 2-a) pentru ca o iesire sa fie pornita dupa ce o intrare a fost pornita.
Cel mai lung timp este de 2 cicluri de scanare – 1 timp de intarziere a intrarii.

Nu e greu, nu-I asa?

Relays

Relee

Acum ca am inteles cum automatul programabil proceseaza intrarile, iesirile si programul efectiv si suntem aproape gata sa scriem propriul nostru program. Dar mai intai sa vedem cum functioneaza un releu. De fapt, scopul principal al unui automat programabil este de a inlocui releele reale.

Putem sa ne gandim la un releu ca la un comutator electromagnetic. Aplicam un voltaj pe bobina si apare un camp magnetic. Acest camp magnetic atrage contactul releului realizand o legatura. Aceste contacte pot fi considerate a fi un comutator. Ele lasa curentul sa traca intre doua puncte deci se inchide circuitul.

Sa consideram urmatorul exemplu. Vom da drumul la un clopotel de fiecare data cand un intrerupator este inchis. Avem 3 parti reale: un intrerupator, un releu si un clopotel. De fiecare data cand intrerupatorul se inchide se aplica un curent ce cauzeaza sunetul clopotelului.

Observati ca in poza avem 2 circuite separate. Circuitul de jos este pe curent continuu, iar cel de sus este pe curent alternetiv.

Aici folosim un releu de curent continuu sa controlam un circuit de curent alternativ. Acesta este farmecul releelor! Cand intrerupatorul este deschis curentul nu poate circula prin bobina releului. Imediat cum intrerupatorul este inchis, insa, curentul trece prin bobina generand un camp magnetic. Campul magnetic atrage contactul releului care se inchide. Acum curentul alternativ curge prin clopotel si il auzim.

Un releu industrial tipic.

Replacing Relays

Inlocurea releelor

Acum, sa folosim un automat programabil in locul releului. (De retinut ca aceasta n-ar fi foarte rentabil, dar demonstreaza chestiunile de baza de care avem nevoie.) Primul lucru care este necesar este sa creem ceea ce numim o diagrama-scara. Dupa ce vedem cateva dintre acestea va deveni evident de ce se numesc diagrame-scara. Trebuie sa creem una dintre acestea deoarece, din nefericire, un automat programabil nu intelege o diagrama schematica. El recunoaste doar cod. Din fericire, cele mai multe automate programabile au software ce convertesc diagramele scara in cod. Asta ne protejeaza de invatarea codului automatului.

Primul pas – Trebuie sa traducem toate componentele pe care le utilizam in simboluri pe care automatul programabil le intelege. Automatul nu intelege termeni ca comutator, releu, clopotel, etc. El prefera intrari, iesiri, bobina, contact, etc. Nu-i pasa care sunt dispozitivele de intrare sau iesire, ci numai ca sunt intrari sau iesiri.

Prima oara inlocuim bateria cu un simbol. Acest simbol e comun tuturor diagramelor-scara. Desenam ceea ce se numesc bare “bus”, Acestea arata ca doua bare verticale. Una de fiecare parte a diagramei. Ganditi-va la cea stanga ca fiind + iar cea dreapta ca fiind pamantul. Si sa ne gandim la curent ca “curgand” de la stanga la dreapta.
Apoi dam intrarilor un simbol. In acest exemplu simplu avem doar o singura intrare reala. (intrerupatorul). Dam intrarii la care comutatorul va fi conectat simbolul de mai jos. Acest simbol poate fi folosit si ca un contact al unui releu.

Un simbol de contact

Apoi vom da iesirilor un simbol. In acest exemplu utilizam o iesire (clopotelul). Dam iesirii la care clopotelul va fi fizic conectat simbolul de mai jos. Acest simbol este folosit si pentru bobina unui releu.

Un simbol de bobina

Sursa alternativa este externa asa ca nu o punem in diagrama. Automatului programabil nu-i pasa decat ce iesire primeste semnal si nu de ceea ce este fizic conectata la ea.

Al doilea pas – Trebuie sa-i spunem automatului programabil unde sunt toate localizate. Cu alte cuvinte trebuie sa dam tuturor dispozitivelor o adresa, Unde va fi intrerupatorul fizic conectat la automat? Dar clopotelul? Incepem cu o harta alba in orasul automatului programabil si trebuie sa dam fiecarui element o adresa. A-ti putea sa va gasiti prietenii daca nu le-ati sti adresele? Stiti ca locuiesc in acelasi oras, dar in care casa? Orasul automatului are multe case (intrari si iesiri) dar trebuie sa ne dam seama cine locuieste acolo (ce dispozitiv este conectat si unde). Vom analiza mai in profunzime schema de adresare mai jos. Fabricantii de automate programabile o fac in moduri diferite! Pentru acum sa zicem ca intrarea noastra se va numi “0000”. Iesirea  va fi numita “0500”.

Pasul final – Trebuie sa convertim schema intr-o desfasurare logica a evenimentelor. Aceasta este mult mai simpla decat pare. Programul pe care il vom scrie spune automatului programabil ce sa faca atunci cand anumite evenimente se intampla. In exemplul nostru trebuie sa spunem automatului ce sa faca atunci cand un operator inchide intrerupatorul. Evident dorim ca clopotelul sa sunedar automatul nu stie asta. Este un dispozitiv destul de prost, nu-i asa?

Poza de mai sus este diagrama finala. Observati ca am eliminat necesitatea ca releului real sa ii trebuiasca un simbol.

Basic Instructions

Instructiuni de baza

Acum haideti sa examinam cateva dintre instructiunile de baza cu detalii despre ceea ce face fiecare.

Load

Instructiunea Load (LD) este un contact normal deschis. Cateodata mai este numita “vezi  daca este pornit” (sa vada daca intrarea este fizic pornita). Simbolul pentru instructiunea Load este aratat dedesubt.

Simbolul “Load” (contact)

Acesta este folosit atunci cand un semnal de intrare este necesar sa fie prezent pentru ca simbolul sa fie pornit. Cand intrarea fizica este pornita putem spune ca instructiunea are valoarea “Adevarat”.Examinam intrarea pentru un semnal de pornire. Daca intrarea este pornita atunci si simbolul este in functiune. Conditia de pornire mai este numita si stare de 1 logic.

Acest simbol poate fi folosit in mod normal pentru intrarile interne, intrarile externe si contactele externe de iesire. Reamintiti-va ca releele interne nu exista fizic. Ele sunt relee simulate software.

LoaDNot

Instructiunea LoaDNot este un contact normal inchis. Cateodata mai este numit “vezi daca este inchis”(XIC)(verifica daca intrarea este fizic inchisa). Simbolul pentru instructiunea LoadNot este aratata dedesubt.

Simbolul LoaDNot (contact normal inchis)

Acesta este utilizat atunci cand un semnal de intrare nu este necesar sa fie prezent pentru ca simbolul sa fie pornit.

Acest simbol in mod normal poate fi folosit pentru intrari interne, intrari externe si, cateodata, contacte externe de iesire. Va reamintim ca releele interne nu exista fizic. Ele sunt relee simulate software. Este exact opusa intructiunii LoaD.

Stare Logica

Load

LoadNot

0

Fals

Adevarat

1

Adevarat

Fals

Out

Instructiunea Out mai este numita cateodata o instructiune de “energizare a iesirii”. Instructiunea de iesire este ca o bobina de releu. Simbolul arata ca cel de mai jos:

Simbolul OUT (bobina)

Unde este o serie de instructiuni adevarate precedand-o pe aceasta pe scara, si ea va fi de asemenea adevarata. Cand instructiunea este adevarata, este fizic pornita. Putem sa ne gandim la aceasta instructiune ca la o iesire normal deschisa. Aceasta instructiune poate fi folosita pentru bobinele interne si iesirile externe.

Outbar

Instructiunea OutNot este similara cu o bobina de releu normal inchis. O parte din vanzatori nu includ aceasta instructiune. Simbolul sau arata ca cel de dedesubt.

Simbolul OutNot (bobina normal inchisa)

Cand este un drum de instructiuni false ce preced aceasta instructiune pe scara, ea va fi adevarata. Cand instructiunea este adevarata ea este fizic pornita. Putem sa gandim aceasta instructiune ca fiind o iesire normal inchisa. Aceasta instructiune poate fi folosita pentru bobinele interne si iesirile externe. Este exact opusul instructiunii Out.

Stare logica

Out

OutNot

0

Fals

Adevarat

1

Adevarat

Fals



A Simple Example

Un exemplu simplu

Acum sa comparam o diagrama scara simpla cu un circuit de relee ce exista fizic si sa vedem diferentele:

In circuitul de mai sus, bobina va fi alimentata atunci cand este o bucla inchisa intre plusul si minusul bateriei. Putem simula acest circuit cu o diagrama scara. O diagrama scara este formata din trepte individuale, la fel ca o scara adevarata. Fiecare treapta trebuie sa contina una sau mai multe intrari si una sau mai multe iesiri.

Observati in acest exemplu de diagrama scara simpla in care am recreat circuitul extern de mai sus. Aici am folosit instructiunile Load si Out. O parte din fabricanti cer ca fiecare diagrama scara sa includa o instructiune END pe ultima treapta. Cateva automate programabile mai cer si instructiunea ENDH pe scara dupa treapta END.

PLC Registers

Registrii automatului programabil

Vom lua exemplul anterior si vom schimba intrerupatorul 2 cu un intrerupator normal inchis (instructiunea LoadNot). SW1 va fi fizic deschis si SW2 va fi fizic inchis initial. Diagrama scara ar arata ca aceasta:

Observati de asemenea ca am dat fiecarui simbol (sau instructiune) o adresa. Aceasta adresa pune deoparte o mic loc de stocare in fisierele automatului programabil astfel incat starea instructiunii (Adevarat/Fals) poate fi stocata. Multe automate folosesc locuri de stocare pe 16 biti. In exemplul de mai sus folosim doua locuri de stocare sau registrii.

REGISTRUL 00

15

14

13

12

11

10

09

08

07

06

05

04

03

02

01

00















1

0


REGISTRUL 05

15

14

13

12

11

10

09

08

07

06

05

04

03

02

01

00
















0

In tabelele de mai sus putem vedea ca in registrul 00, bitul 00 (intrarea 0000) a fost un 0 logic si bitul 01 (intrarea 0001) a fost un 1 logic. Registrul 05 arata ca bitul 00(iesirea 0500) a fost un 0 logic. 0 si 1 logic indica daca o instructiune este Falsa sau Adevarata. Desi cele mai multe casute din tabelele de registri de mai sus sunt goale, fiecare trebuie sa contina un 0. Au fost lasate goale pentru a sublinia locatiile care ne intereseaza

CONDITIILE LOGICE ALE SIMBOLURILOR

BITI LOGICI

LD

LDN

OUT

0 Logic

Fals

Adevarat

Fals

1 Logic

Adevarat

Fals

Adevarat


Automatul programabil va alimenta o iesire cand toate conditiile de pe treapta sunt Adevarate. Asadar, uitandu-ne la tabelele de mai sus, vedem ca in exemplul anterior SW1 trebuie sa fie 1 logic si SW2 sa fie fie 0 logic. Atunci si numai atunci va fi bobina alimentata. Daca oricare din instructiunile de pe treapta inainte de iesire bobina) sunt false atunci iesirea (bobina) va fi falsa (nealimentata).

Sa ne uitam acum la tabela de adevar a programului nostru anterior ca sa continuam relevarea acestui important element. Tabela Noastra de adevar va arata toate combinatiile posibile a starii celor doua intrari.

Intrari

Iesiri

Bitii Logici ai Registrului

SW1(LD)

SW2(LDN)

BOBINA(OUT)

SW1(LD)

SW2(LDB)

COIL(OUT)

Fals

Adevarat

Fals

0

0

0

Fals

Fals

Fals

0

1

0

Adevarat

Adevarat

Adevarat

1

0

1

Adevarat

Fals

Fals

1

1

0

Observati din tabel ca, daca intrarile isi schimba starea in timp, si iesirea si-o va schimba. Iesirea este adevarata (alimentata) doar cand toate instructiunile precedente pe treapta sunt adevarate.

A Level Application

Acum ca am vazut cum functioneaza registrele, sa procesam un program asa cum fac automatele programabile ca sa marim intelegerea noastra a scanarii programului.

Sa consideram urmatoarea aplicatie:

Controlam uleiul lubrifiant care este distribuit dintr-un rezervor. Aceasta este posibil prin utilizarea a doi senzori. Vom pune unul aproape de fund si unul in apropierea varfului, cum este aratat in imaginea de mai jos.

Aici, dorim ca pompa de umplere sa alimenteze rezervorul cu ulei pana cand senzorul de nivel inalt este pornit. In acest punct dorim sa oprim pompa de umplere pana cand nivelul coboara sub nivelul senzorului de nivel minim. Atunci ar trebui sa pornim din nou pompa de umplere si sa repetam procesul.

Aici avem nevoie de 3 intrari si iesiri. Doua sunt intrari (senzorii) si unul este o iesire (pompa de umplere). Ambele intrari vor fi normal inchise (senzorii de nivel din fibra optica). Cand nu sunt imersati in lichid atunci vor fi porniti. Cand ei sunt imersati in lichid vor fi opriti.

Vom da fiecarei intrari si iesiri o adresa. Aceasta instiinteaza automatul programabil unde sunt fizic conectate. Adresele sunt aratate in tabelele urmatoare:

Intrari

Adresa


Iesiri

Adresa


Releu de utilitate interna

Jos

0000


Motor

0500


1000

Sus

0001






Dedesubt este realizata diagrama scara. Observati ca folosim un releu de utilitate interna in acest exemplu. Putem folosi contactele acestor relee de cate ori este necesar. Aici sunt utilizate de doua ori pentru a simula un releu cu doua seturi de contacte.

Amintiti-va, aceste relee nu exista fizic in automatul programabil ci sunt mai degraba biti intr-un registru pe care il folosim sa simulam un releu.


Ar trebui sa ne amintim mereu ca cel mai comun motiv pentru a folosi automatul programabil in aplicatiile noastre este pentru a inlocui releele din lumea reala.. Releele de utilitate interna fac aceasta actiune posibila. Este imposibil sa indicam cate relee interne sunt incluse de fiecare marca de automat programabil. Unele includ sute, alte includ mii in timp ce altele includ zeci de mii! In mod normal dimensiunea automatului programabil (nu dimensiunea cutiei ci mai degraba cea a intrarilor si iesirilor) este factorul decisiv. Daca utilizam un micro automat cu cateva intrari si iesiri nu ne trebuiesc multe relee interne. Daca insa folosim un mare automat cu sute sau mii de intrari si iesiri ne vor trebui cu siguranta mult mai multe relee interne.

Daca apare vreo intrebare privitoare la numarul de relee interne consultati specificatiile automatului. De obicei, in afara de cele mai mari aplicatii numarul ar trebui sa fie mai mult decat suficient.

The Program Scan

Rularea programului

Sa urmarim ce se intampla in acest program instructiune cu intructiune.

Initial rezervorul este gol. De aceea intrarea 0000 este Adevarata si intrarea 0001 este de asemenea Adevarata.


Scan 1


Scan 2-100

Treptat rezervorul se umple pentru ca 500(pompa de umplere) este pornita.

Dupa 100 de scanari nivelul lichidului se ridica deasupra nivelului senzorului de nivel minim si intrarea acestuia devine Falsa..



Observati ca, chiar atunci cand senzorul de nivel minim este”Fals” exista totusi o cale de “Adevar” logic de la stanga la dreapta. De aceea am utilizat un releu intern.. Releul 1000 pastreaza iesirea (500) pornita. Va sta in acest fek pana cand nu va mai exista o cale de adevar logic de la stanga la dreapta (cand 0001 devine fals).

Dupa 1000 de scanari nivelul uleiului se ridica deasupra senzorului de nivel maxim iar intrarea acestuia devine falsa.


Scan 1001


Scan 1002

Din moment ce nu mai exista o cale de adevar logic, iesirea 500 nu mai este alimentata (adevarata) si deci motorul pompei va fi oprit.

Dupa 1050 de scanari nivelul lichidului coboara sub nivelul maxim dat de senzor si acesta devine din nou adevarat.


Scan 1050

Observati ca, chiar daca senzorul de nivel maxim devine adevarat inca nu exista un drum de adevar logic si de aceea bobina 1000 ramane falsa!

Dupa 2000 de scanari nivelul lichidului scade sub nivelul minim dat de senzor si acesta va deveni de asemenea adevarat. In acest punct logica va fi aceeasi ca si la scanarea intai de mai sus si logica se va repeta asa cum este ilustrata mai sus.

Latch Instructions

Instructiunile de inchidere (zavorare)

Acum ca intelegem cum intrarile si iesirile sunt procesate de automatul programabil, sa ne uitam la o variatie a iesirilor noastre obisnuite. Bobinele de iesire normale sunt bineinteles o parte esentiala a programelor noastre dar trebuie sa ne amintim ca ele sunt adevarate doar atunci cand toate instructiunile inaintea lor sunt adevarate. Ce se intampla daca nu sunt? Atunci, bineinteles, iesirea va deveni falsa (va fi oprita).

Sa ne amintim de exemplul cu clopotelul de mai sus. Ce s-ar fi intamplat daca nu am fi putut gasi un intrerupator de “pornit/oprit”? Atunci ar fi trebuit sa tinem butonul apasat cat timp am fi vrut ca clopotelul sa sune. (Buton cu revenire). Instructiunile de zavorare ne lasa sa folosim butoanele cu revenire si programeaza automatul ca atunci cand apasam unul iesirea este pornita si cand apasam altul iesirea este oprita.

Poate acum va ziceti “Despre ce vorbeste?”. Sa luam un exemplu real.

Imaginati-va telecomanda televizorului dumneavoastra. Are un buton pentru “Pornit” si altul pentru “Oprit”. Cand apasam butonul “Pornit” televizorul incepe sa functioneze. Cand apasam butonul “Oprit” aparatul inceteaza sa mai functioneze. Nu trebuie sa tin apasat butonul “Pornit” ca televizorul sa functioneze. Acesta este rolul instructiunilor de zavorare.

The latch instruction is often called a SET or OTL (output latch). The unlatch instruction is often called a RES (reset), OUT (output unlatch) or RST (reset). The diagram below shows how to use them in a program.

Instructiunea de zavorare mai este numita SET sau OTL (output latch). Instructiunea de deschidere este de obicei numita RES (reset), OUT (output unlatch) sau RST (reset). Diagrama de mai jos ne arata cum sa le utilizam intr-un program.

Here we are using 2 momentary push button switches. One is physically connected to input 0000 while the other is physically connected to input 0001. When the operator pushes switch 0000 the instruction 'set 0500' will become true and output 0500 physically turns on. Even after the operator stops pushing the switch, the output (0500) will remain on. It is latched on. The only way to turn off output 0500 is turn on input 0001. This will cause the instruction 'res 0500' to become true thereby unlatching or resetting output 0500.

Aici utilizam 2 butoane cu revenire. Unul este fizic conectat la intrarea 0000 in timp ce al doilea este fizic conectat la intrarea 0001. Cand operatorul apasa butonul 0000, instructiunea “set 0500” va deveni adevarata si iesirea 0500 va fi pornita fizic. Chiar cand operatorul nu mai apasa pe buton, iesirea (0500) va ramane pornita. Este zavorata astfel. Unicul mod ca sa oprim iesirea 0500 este sa pornim intrarea 0001. Aceasta va cauza schimbarea instructiunii “res 0500” in adevarat deci deschizand (resetand) iesirea 0500.

Click here and view the animation to really learn!

Here's something to think about. What would happen if input 0000 and 0001 both turn on at the exact same time.

Iata ceva la care trebuie sa meditam. Ce se va intampla daca intrarea 0000 si 0001 sunt pornite in acelasi timp.

Will output 0500 be latched or unlatched?

Va fi iesirea 0500 zavorata sau nu?

To answer this question we have to think about the scanning sequence. The ladder is always scanned from top to bottom, left to right. The first thing in the scan is to physically look at the inputs. 0000 and 0001 are both physically on. Next the plc executes the program. Starting from the top left, input 0000 is true therefore it should set 0500. Next it goes to the next rung and since input 0001 is true it should reset 0500. The last thing it said was to reset 0500. Therefore on the last part of the scan when it updates the outputs it will keep 0500 off. (i.e. reset 0500).

Pentru a raspunde la aceasta intrebare trebuie sa ne gandim la secventa de scanare. Scara este intotdeauna scanata de sus in jos. Primul lucru in scanare este sa ne uitam fizic la intrari. 0000 si 0001 sunt ambele fizic pornite. In continuare automatul executa programul. Incepe din stanga sus, intrarea 0000 este adevarata deci trebuie sa porneasca iesirea 0500. Apoi trece pe treapta urmatoare si cum intrarea 0001 este adevarata atunci trebuie sa opreasca iesirea 0500. Ultimul lucru pe care il face este sa opreasca iesirea 0500. Deci ultimul lucru pe care il face este refacerea iesirilor si mentinerea lui 0500 oprita.

Counters

Numaratoare

Un numarator este un simplu dispozitiv ce trebuie sa faca un singur lucru – sa numere. Utilizarea lor, insa, poate fi cateodata destul de dificila deoarece fiecare fabricant (din diferite motive) pare sa foloseasca o modalitate diferita. Insa ceea ce urmeaza se poate aplica la toate numaratoarele, indiferent de marca.

Ce fel de numaratoare exista? Ei bine, exista numaratoare crescatoare (numara numai crescator 1,2,3…). Mai exista numaratoare descrescatoare (numara numai descrescator 9,8,7…). Mai exista numaratoare mixte (ce pot numara si crescator si descrescator 1,2,3,4,3,2,3,4,5…).

Multi fabricanti ne propun doar unul sau doua modele de numaratoare dar ele pot fi utilizate sa numere crescator, descrescator sau ambele. Nu exista standardizare? Nu va speriati, teoria este aceeasi indiferent de numele pe care le dau fabricantii. Un numarator este un numarator…

Parca pentru a mari confuzia, majoritatea fabricantilor includ si un numar limitat de numaratoare de mare viteza.
In mod normal un numarator de mare viteza este un dispozitiv “hardware”. Numaratoarele normale de mai sus sunt de obicei numaratoare “software”. Cu alte cuvinte, ele nu exista fizic in automatul programabil ci sunt simulate in softul acestuia. Numaratoarele hardware exista in automat si nu sunt dependente de timpul de scanare.
O buna regula de numarare este sa folosim numaratoarele normale (software) daca impulsurile pe care le numaram nu vin mai rapid decat 2X timpul de scanare. (de ex. daca timpul de scanare este 2ms si impulsurile vin la 4ms sau mai tarziu atunci folosim numaratoare software. Daca insa sosesc mai rapid de 4ms (3ms de exemplu) atunci folosim numaratoare hardware (de mare viteza). (2xtimpul de scanare = 2x2ms = 4ms).

To use them we must know 3 things:

Ca sa le folosim trebuie sa cunoastem 3 lucruri:

1. De unde vin impulsurile pe care dorim sa le numaram. De obicei vin de la una din intrari (un senzor conectat la intrarea 0000 de exemplu).

2. Cate impulsuri dorim sa numaram inainte sa reactionam. Sa numaram 5 mingii, inainte sa le ambalam, de exemplu.

3. Cand/cum vom reseta numaratorul ca sa numere din nou. Dupa ce numaram 5 mingii sa resetam numaratorul, de pilda.

Cand programul ruleaza in automatul programabil de obicei afiseaza valoarea curenta sau “acumulata” pentru ca sa vedem valoarea curenta din numarare.

Numaratoarele tipice pot numara de la 0 la 9999, de la -32768 la +32767 sau de la 0 la 65535. De ce aceste numere? Pentru ca majoritatea automatelor programabile au numaratoare pe 16 biti. Ce inseamna aceasta vom vedea mai incolo, dar acum este suficient sa spunem ca 0-9999 este “zecimale codate binar pe 16 biti” si ca -32768 la +32767 si 0 la 65535 este “binar pe 16 biti”.

Iata cateva dintre simbolurile instructiunilor pe care le vom intalni (depinzand de fabricantul pe care il alegem) si cum sa le utilizam. Amintiti-va ca, chiar daca arata diferit, toate se utilizeaza in principiu in acelasi mod. Daca stim sa folosim unul, vom stii sa le folosim pe toate.

La acest contor avem nevoie de doua intrari.
Primul este linia de resetare. Cand aceasta intrare este pornita valoarea curenta (acumulata) de numarare se va intoarce la zero.
A doua intrare este adresa de unde vin impulsurile pe care le numaram. De exemplu, daca numaram cate mingii trec prin fata senzorului care este fizic conectat la intrarea 0001 atunci trebuie sa punem contacte normal deschise cu adresa 0001 in fata liniei de impulsuri.

Cxxx este numele numaratorului. Daca vrem sa-l numim numaratorul 000 atunci vom pune “C000” acolo.

yyyyy este numarul de impulsuri pe care vrem sa le numaram inainte de a face ceva. Daca dorim sa numaram 5 mingii inainte de a porni o iesire fizica pentru a le ambala, atunci acolo vom pune 5. Daca am fi dorit sa numaram 100 de mingii atunci am fi trecut 100 aici, etc. Cand numaratorul a terminat (a numarat yyyyy mingi) va porni un se de contacte separate pe care le vom numi tot Cxxx.

Observati ca valoarea acumulata a numaratorului se schimba la sfarsitul transmisiei impulsului de intrare.

Aici este simbolul pe o scara ce ne arata cum sa setam un numarator (pe care il vom numi numaratorul 000) sa numere 100 de mingii de la intrarea 0001 inainte de a porni iesirea 0500. Senzorul 0002 reseteaza numaratorul.

Vom folosi aceleasi abrevieri pe care le-am folosit in exemplul de mai sus. (UDCxxx si yyyyy) (UDC vine de la Up-Down Counter).

La acest contor crescator-descrescator ne trebuie sa stabilim 3 intrari. Intrarea de resetare are aceeasi functie ca mai sus. Insa, in loc sa avem doar o intrare pentru numararea impulsurilor acum avem 2. Una este pentru numararea crescatoare iar cealalta este pentru numararea descrescatoare. In acest exemplu ii vom zice numaratorului UDC000 si ii vom da o valoare presetata de 1000. (Vom numara 1000 de impulsuri). Pentru intrari vom folosi un senzor ce porneste intrarea 0001 cand vede o tinta si un alt senzor la intrarea 0003 care de asemenea o porneste cand vede o tinta. Cand intrarea 0001 este pornita numaram crescator iar cand intrarea 0003 este pornita numaram descrescator. Cand ajungem la 1000 de impulsuri vom porni iesirea 500. Din nou tineti minte ca valoarea acumulata se schimba doar atunci cand se termina tranzitia impulsului de intrare. Diagrama scara este aratata mai jos.

Un lucru important de retinut este ca numaratoarele si temporizatoarele nu pot avea acelasi nume (in majoritatea automatelor programabile). Aceasta pentru ca de obicei folosesc aceleasi registre. N-am spus nimic despre temporizatoare inca dar putem retine acest lucru pentru ca este destul de important.

Ei bine, numaratoarele de mai sus pot parea dificil de inteles dar sunt insa destul de usor de inteles de indata ce ne invatam sa le utilizam. In mod sigur sunt o unealta esentiala. De asemenea sunt una din cele mai putin standardizate instructiuni de baza pe care le vom vedea. Insa retineti, teoria este aceeasi de la fabricant la fabricant!

imers

Temporizatoare

Sa vedem acum cum functioneaza un temporizator. Ce este un temporizator? Este exact ceea ce spune numele sau… este o instructiune ce asteapta un timp predefinit inainte de a face ceva. Suna simplu nu-i asa?

Cand ne uitam la diferitele tipuri de temporizatoare disponibile incepe distractia. Ca de obicei, diferite tipuri de temporizatoare sunt disponibile de la diferiti fabricanti. Iata-le pe majoritatea:

  • Temporizator On-Delay – Acest tip de temporizator porneste “un timp de intarziere”. Cu alte cuvinte, dupa ce senzorul nostru (intrarea) porneste asteptam x secunde inainte de a activa un solenoid (iesire). Acesta este cel mai comun temporizator.
  • Temporizator Off - Delay – Acest tip de temporizator este opusul temporizatorului on-delay de mai sus. Acest temporizator “amana oprirea”. Dupa ce senzorul (intrarea) vede o tinta porneste un solenoid (iesire). Cand senzorul nu mai vede tinta, tinem solenoidul pornit pentru inca x - secunde inainte de al opri. Acest tip este mai putin utilizat decat cel “on-delay” de mai sus.
  • Temporizator cu retinere sau cu acumulare – Acest tip de temporizator necesita 2 intrari. O intrare porneste cronometrarea si cealalta o reseteaza. Temporizatoarele de mai sus vor fi resetate daca senzorul de intrare nu este pornit/oprit pentru intreaga durata a temporizarii. Acest temporizator insa tine sau retine timpul cumulat cand senzorul este oprit in timpul lucrului. De exemplu, dorim sa stim cat timp un senzor este pornit pe timpul unei ore. Daca folosim unul din temporizatoarele de mai sus acestea se vor reseta de fiecare data cand senzorul se opreste/porneste. Acest temporizator insa, ne va da un timp cumulat total.

Sa vedem acum cum sa le utilizam. Ne trebuie sa cunoastem 2 lucruri:

1. Ce va porni temporizatorul. De obicei aceasta este una din intrari (un senzor conectat la intrarea 0000 de exemplu)

2. Cat timp dorim sa stam inainte de a reactiona. Sa asteptam 5 secunde inainte sa pornim un solenoid, de exemplu.

Cand instructiunile dinainte de simbolul temporizatorului sunt adevarate, temporizatorul incepe sa functioneze. Cand timpul se acumuleaza temporizatorul isi inchide contactele. Cand programul ruleaza in automatul programabil, acesta de obicei afiseaza timpul acumulat pentru ca noi sa vedem valoarea curenta. In mod normal temporizatoarele pot “ticai” de la 0 la 9999 sau de la 0 la 65535 de ori. Din nou aceasta pentru ca cele mai multe automate programabile au temporizatoarele pe 16 biti. Fiecare tact este echivalent cu x secunde.

De obicei fiecare fabricant ofera mai multe tipuri de tacturi. Majoritatea fabricantilor ofera incrementari de 10 si 100ms (tacturi de ceas). Cativa fabricanti ofera de asemenea incrementari de 1 ms ca si de o secunda. Aceste temporizatoare cu incrementare diferita functioneaza ca cele de mai sus dar cateodata au nume diferite pentru a descrie baza lor de timp. Unele sunt temporizatoare de mare viteza, altele de foarte mare viteza sau temporizatoare rapide cu acumulare.

Mai jos este aratat un simbol de temporizator tipic pe care il vom intalni (depinzand de ce fabricant vom alege) si cum il vom folosi. Amintiti-va ca, in timp ce ele arata diferit sunt folosite in principiu in acelasi fel. Daca putem regla unul, le putem regla pe toate.

Acest temporizator este de tipul “on delay” si este numit Txxx. Cand intrarea este pornita, temporizatorul incepe sa ticaie. Cand a ticait de yyyyy (valoarea presetata) ori, va porni contactele sale pe care le folosim mai tarziu in program. Amintiti-va ca durata unui tact variaza in functie de vanzator si de baza de timp utilizata. (un tact de 1ms sau de o secunda)

Mai jos este simbolul aratat intr-o diagrama scara:

 

In aceasta diagrama asteptam intrarea 0001 sa fie pornita. Cand este pornita, temporizatorul T000 (un temporizator de 100ms) incepe sa ticaie. Va ticai de 100 de ori. Fiecare tact (incrementare) este de 100ms astfel incat temporizarea va fi de 10000ms (10 secunde). 100 de tacturi x 100ms = 10000ms. Cand 10 secunde au trecut, contactele T000 se inchid si 500 este pornit. Cand intrarea 0001 se opreste (fals) temporizatorul T000 va fi resetat la 0 cauzand deschiderea contactelor sale (fals) deci pricinuind inchiderea iesirii 500.

Un temporizator cu acumulare va arata similar cu aceasta:

Acest temporizator este numit Txxx. Cand intrarea de activare este in functiune temporizatorul incepe sa ticaie. Cand ticaie de yyyyy ori (valoarea presetata), va inchide contactele sale pe care le vom folosi mai tarziu in program. Amintiti-va ca durata unui tact (incrementarea) variaza cu vanzatorul si cu baza de timp utilizata. Daca totusi, intrarea de activare se opreste inainte ca temporizarea sa se termine, valoarea curenta va fi retinuta. Cand intrarea este din nou pornita, temporizatorul va continua de unde a ramas. Singura cale ca sa fortam temporizatorul inapoi la valoarea sa presetata este sa pornim intrarea de resetare.

Simbolul este aratat in diagrama scara de mai jos.

 

In aceasta diagrama asteptam ca intrarea 0002 sa fie pornita. Cand acest lucru se intampla temporizatorul T000 (un temporizator cu incrementare de 10ms) incepe sa ticaie. Va ticai de 100 de ori. Fiecare tact (increment) este de 10ms astfel incat temporizarea va fi de 1000ms (o secunda). 100 tacturi x 10ms = 1000ms. Cand o secunda a trecut, contactele T000 se inchid si 500 este pornit. Daca intrarea 0002 este oprita timpul scurs va fi retinut. Cand 0002 este din nou pusa in functiune temporizatorul va continua de unde a ramas. Cand intrarea 0001 va fi pornita (adevarata) temporizatorul T000 va fi resetata inapoi la 0 cauzand deschiderea contactelor sale (fals) rezultand oprirea iesirii 500.

Un lucru important de retinut este ca numaratoarele si temporizatoarele nu pot avea acelasi nume (in majoritatea automatelor programabile). Aceasta pentru ca ele de obicei folosesc aceleasi registre.

Intotdeauna amintiti-va ca, desi simbolurile pot arata diferit ele actioneaza in acelasi fel. De obicei diferenta majora se afla in durata tacturilor de incrementare.

Timer Accuracy

Acuratetea temporizatoarelor

Acum ca stim cum sunt create si utilizate temporizatoarele, sa invatam cate ceva despre precizia lor. Cand cream un temporizator care dureaza cateva secunde, sau mai mult, nu suntem foarte preocupati de precizia lor deoarece este de obicei nesemnificativa. Insa, deoarece cream temporizatoare care au durate in milisecunde (1ms = 1/1000 secunde) trebuie sa fim preocupati de precizia lor.

In general, exista doua tipuri de erori cand utilizam un temporizator. Primul tip este eroarea de intrare. Celalalt este eroarea de iesire. Eroarea totala este suma ambelor erori.

  • Eroarea de intrare – O eroare apare depinzand de momentul din ciclul de scanare in care intrarea temporizatorului este pornita. Cand intrarea este pornita imediat dupa ce automatul programabil verifica starea intrarilor in timpul ciclului de scanare, eroarea de intrare va fi cea mai mare (mai mult de un timp de scanare). Aceasta deoarece, dupa cum va veti aminti, intrarile sunt verificate o singura data in timpul unei scanari. Daca n-a fost pornita cand automatul se uita la intrari ci este pornita mai tarziu avem evident o eroare. Mai departe trebuie sa asteptam pana cand instructiunea de temporizare este executata in timpul partii de rulare a programului din scanare. Daca instructiunea de temporizare este ultima instructiune de pe treapta poate fi o eroare destul de mare?
  • Eroarea de iesire - O alta eroare apare depinzand locul pe scara in care temporizatorul “expira” si cand automatul termina de executat programul ca sa ajunga la partea din ciclu in care reface intrarile. Aceasta pentru ca temporizarea se termina in timpul executiei programului dar automatul trebuie sa termine de executat restul programului inainte de a porni iesirea care trebuie activata.

Dedesubt este o diagrama ce ilustreaza cea mai mare eroare de intrare posibila. Veti observa din ea ca cea mai mare eroare posibila este de 1 timp de scanare complet + 1 timp de executie a programului. Amintiti-va ca timpul de executie a programului variaza de la program la program (depinde cat de multe instructiuni sunt intr-un program!)

Mai jos este o diagrama ce ilustreaza cea mai mare eroare de iesire posibila. Puteti vedea din ea ca cea mai mare eroare de iesire posibila ar fi un timp de scanare complet.

Bazandu-ne pe informatia de mai sus putem vedea ca cea mai mare eroare de temporizare posibila ar fi egala cu:
1 timp de scanare + 1 timp de executie a programului + 1 timp de scanare

= 2 timpi de scanare + 1 timp de executie a programului.

Ce inseamna de fapt asta? Inseamna ca, chiar daca majoritatea fabricantilor au temporizatoare cu incrementari de 1ms ele n-ar trebui folosite pentru durate mai mici de cateva milisecunde. Asta presupunand ca timpul de scanare este de 1ms. Daca timpul de scanare este de 5ms n-ar trebui sa utilizam temporizatoare cu o durata mai mica de 15 ms. Oricum noi trebuie sa stim la ce erori trebuie sa ne asteptam. Daca stim la ce sa ne asteptam, atunci putem sa estimam daca eroarea este acceptabila sau nu pentru aplicatia noastra. In majoritatea aplicatiilor aceasta eroare este nesemnificativa dar in anumite aplicatii de mare viteza si foarte precise aceasta eroare poate deveni foarte importanta.

Ar trebui sa mai luam aminte la faptul ca erorile de mai sus sunt “erori software”. Mai exista de asemenea o eroare de intrare hardware ca si o eroare de iesire hardware.

Eroarea de intrare hardware este cauzata de timpul care ii trebuie automatului programabil sa-si dea seama ca intrarea este pornita cand verifica intrarile. De obicei aceasta durata este de 10ms. Aceasta pentru ca multe automate necesita ca o intrare sa fie fizic pornita  timp de cateva scanari inainte de a stabili ca este pornita (pentru a elimina”zgomotul”)

Eroarea de iesire hardware este cauzata de timpul necesar automatului de la transmiterea semnalului catre iesirile sale ca sa porneasca pana la momentul in care vor fi fizic pornite. Uzual unui tranzistor ii ia 0,5 ms in timp ce unui releu mecanic ii ia aproximativ 10ms.

Eroarea continua sa creasca, nu-i asa? Daca devine prea mare pentru aplicatie luati in considerare folosirea unui temporizator hardware extern.

One-shots

O trecere

“O trecere” este o interesata si de nepretuit unealta de programare. La prima vedere poate fi dificil sa ne dam seama de ce o astfel de instructiune este necesara. Dupa ce vom intelege ce face aceasta instructiune si cum sa o folosim insa necesitatea va deveni evidenta.

“O trecere” este utilizata pentru a face ceva sa se intample timp de o singura scanare. Majoritatea fabricantilor au “o trecere” ce reactioneaza la o tranzitie oprit catre pornit si un tip diferit ce reactioneaza la o tranzitie pornit catre oprit. Exista mai multe nume pentru aceste instructiuni insa toate dau acelasi rezultat indiferent de nume.

Instructiune “o trecere”

Deasupra este simbolul pentru o instructiune difu (“o trecere”). O instructiune difd arata la fel dar in interiorul simbolului scrie “difd”. O parte din fabricanti il au in forma de cutie insa indiferent de simbol toate functioneaza la fel. Pentru acei fabricanti ce nu includ o instructiune diferentiata pornit catre oprit, putem obtine acelasi efect prin introducerea unui intreruptor normal inchis inainte in locul unuia normal deschis (inversarea logicii inaintea instructiunii difu).

Sa luam o aplicatie pentru a vedea cum aceasta instructiune functioneaza de fapt intr-o scara. Aceasta instructiune este cel mai des utilizata cu cateva dintre instructiunile mai avansate unde facem anumite lucruri care trebuie sa se intample o singura data. Insa, din moment ce n-am ajuns inca atat de departe, sa setam un circuit flip/flop. In termeni simpli, un circuit flip/flop intoarce ceva de fiecare data cand ceva se intampla.. Aici vom utiliza un simplu buton de apasat. Prima oara cand operatorul il apasa dorim ca o iesire sa fie pornita. Va ramane asa pana data viitoare cand operatorul apasa butonul. Cand o face iesirea este oprita.

Iata diagrama scara care face asta:

Acum arata confuz! De fapt nu este daca o luam cu inceputul.

  • Treapta 1 – Cand intrarea normal deschisa 0000 devine adevarata DIFU 1000 devine adevarata.
  • Treapta 2 – ND1000[1] este adevarat, ND1001 ramane fals, NI1001 ramane adevarat, NI1000 devine fals. Din moment ce avem o cale de adevarat (ND1000 si NI1001) OUT1001 devine adevarata.
  • Treapta 3 – ND 1001 este adevarat deci OUT 500 devine adevarata.

Next Scan

Scanarea urmatoare

  • Treapta 1 – ND 0000 ramane adevarata. DIFU1000 acum devine fals. Aceasta pentru ca instructiunea DIFU este adevarata doar timp de o scanare.
  • Treapta 2 – ND1000 este fals, ND1001 ramane adevarat, NI1001 este fals, NI1000 devine adevarat. Din moment ce inca avem o cale “de adevar” (ND1001 si NI1000) OUT1001 ramane adevarata.
  • Treapta 3 – ND 1001 este adevarat deci OUT 500 ramane adevarata.

Dupa 100 de scanari, ND0000 este inchis (devine fals). Logica ramane in acelasi stadiu ca si “scanarea urmatoare” de deasupra. (difu nu reactioneaza de aceasta deci starea logica ramane aceeasi pe treptele 2 si 3).

La scanarea 101 ND0000 este repornit (devine adevarata).

  • Treapta 1 – Cand intrarea ND0000 devine adevarata DIFU1000 devine adevarata.
  • Treapta 2 – ND1000 este adevarat, NO 10001 ramane adevarat, NI1001 devine fals, NI1000 devine de asemenea fals. Din moment ce nu mai avem o cale de adevarat, OUT1001 devine falsa.
  • Treapta 3 – ND1001 este fals deci OUT 500 devine fals.

Executand programul o instructiune dupa alta il face pe acesta si orice alt program usor de urmarit. De fapt un program mare ce sare de la una la alta poate fi dificil de urmarit dar o desenare a registrelor sigur ajuta!

Master Controls

Instructiunile “master control” sunt in mod obisnuit utilizate in pereche cu un “master control reset”. Insa aceasta variaza de la fabricant la fabricant. Unii folosesc MCR[2]-uri in perechi in loc sa le foloseasca in echipa cu alt simbol. Abrevierile comune sunt MC/MCR (master control/master control reset), MCS/MCR (master control set/master control reset) sau doar simplu MCR (master control reset).


Iata un exemplu de cum arata un simbol de “master control”

.

Mai jos este un exemplu de master control reset.

Pentru a face lucrurile interesante, multi fabricanti le fac sa actioneze diferit. Sa ne aruncam o privire la cum sunt utilizate intr-o diagrama scara. Sa consideram exemplul urmator:

Iata cum automate programabile diferite vor rula acest program:

Fabricantul X – In acest exemplu, treptele 2 si 3 sunt executate doar cand intrarea 0000 este pornita (adevarata). Daca intrarea 0000 nu este adevarata atunci automatul pretinde ca logica intre instructiunile mc si mcr nu exista. De aceea va trece peste acest bloc de instructiuni si imediat se va duce la treapta de dupa instructiunea mcr.

Insa, daca intrarea 0000 este adevarata, automatul va executa treptele 2 si 3 si va reinnoi starea iesirilor 0500 si 0501. Asadar, daca intrarea 0000 este adevarata, executia programului trece la treapta 2. Daca intrarea 0001 este adevarata 0500 va fi adevarata si deci va fi pornita cand automatul isi reinnoieste iesirile. Daca intrarea 0002 este adevarata (fizic oprita) 0501 va fi adevarata si deci va fi pornita cand automatul isi reface iesirile.

MCR spune automatului programabil “acesta este sfarsitul blocului mc/mcr”

In acest automat, timpul de scanare nu este extins cand blocul mc/mcr nu este executat pentru ca automatul pretinde ca logica din bloc nu exista. Cu alte cuvinte, instructiunile din interiorul blocului nu sunt vazute de automat si deci nu le executa.

Fabricantul Y – In acest exemplu, treptele 2 si 3 sunt intotdeauna executate indiferent de starea intrarii 0000. Daca intrarea 0000 nu este adevarata automatul executa instructiunea MC (MC devine adevarata). Apoi forteaza toate instructiunile de intrare din interiorul blocului sa fie oprite. Daca intrarea 0000 este adevarata instructiunea MC devine falsa.

Atunci, daca intrarea 0000 este adevarata, executia programului trece la treapta 2. Daca intrarea 0001 este adevarata 0500 va fi adevarata si va fi pornita atunci cand automatul isi va reface starea iesirilor. Daca intrarea 0002 va fi adevarata (fizic oprita) 0501 va fi adevarata si va fi pornita atunci cand automatul isi va reface starea iesirilor. MCR doar spune automatului programabil “acesta este sfarsitul blocului mc/mcr”. Cand intrarea 0000 este falsa, intrarile 0001 si 0002 sunt fortat false indiferent daca sunt fizic pornite sau oprite. De aceea, iesirile 0500 si 0501 vor fi false.

Diferenta intre fabricantii X si Y de mai sus este ca in schema lui Y timpul de scanare va fi acelasi (sau aproape acelasi) indiferent daca blocul este pornit sau oprit. Aceasta deoarece automatul vede fiecare instructiune indiferent daca blocul este pornit sau nu.

Majoritatea fabricantilor vor face ca o instructiune dinainte zavorata (una care este in interiorul blocului mc/mcr) sa-si retina conditia anterioara.

A fost adevarat inainte, va ramane adevarat.

A fost fals inainte, va ramane fals.

Temporizatoarele n-ar trebui folosite in interiorul blocului mc/mcr pentru ca anumiti fabricanti le vor reseta in momentul in care blocul este fals in timp ce altii vor retine situatia lor curenta.

Numaratoarele de obicei retin valoarea curenta.

Iata partea pe care trebuie sa o retinem foarte bine. Cand blocul mc/mcr este oprit (intrarea 0000 este falsa in exemplul de mai sus) o instructiune OutNot nu va fi fizic pornita. Este fortata sa fie fizic oprita.

Instructiunea OutNot

Pe scurt, fiti atenti! Majoritatea fabricantilor folosesc schema de executie a fabricantului Y de mai sus. Cand sunteti in dubiu insa cititi manualul de instructiuni.

Shift Registers

Registrele de deplasare

In multe aplicatii este necesar sa retinem starea unui eveniment care s-a intamplat anterior. Cum am vazut mai sus acesta este un proces simplu. Dar ce se va intampla daca trebuie sa retinem multe evenimente anterioare si sa actionam asupra lor mai tarziu.

Atunci vom apela la instructiunea de deplasare a registrelor.

Folosim un registru sau un grup de registre ca sa formeze un tren de biti pentru a stoca starea anterioara. Fiecare noua schimbare este stocata in primul bit si restul bitilor hun mutati in tren.

Registrele de deplasare au multe nume: SFT (ShiFT), BSL (Bit Shift Left), SFR (Shift Forward Register) sunt cateva din cele mai comune nume. Aceste registre muta bitii catre stanga. BSR (Bit Shift Right) si SFRN (Shift Forward Register Not) sunt cateva exemple de instructiuni care deplaseaza bitii catre dreapta. Ar trebui sa retinem ca nu toti fabricantii au registre de deplasare care muta datele catre dreapta dar toti au registre de deplasare catre stanga.

Un registru de deplasare tipic are un simbol ca cel de mai sus. Observati ca simbolul necesita 3 intrari si are cateva date in interiorul simbolului.

Motivele pentru fiecare intrare sunt dupa cum urmeaza:

  • Data- Intrarea de date aduna starile adevarat/fals care vor fi deplasate in tren. Cand intrarea de date este adevarata primul bit(vagon) in registru (tren) va fi 1. Aceasta informatie este introdusa in registru (tren) in partea de crestere a intrarii de ceas.
  • Clock- Intrarea de ceas spune registrelor de deplasare “fa acest lucru”. Pe partea crescatoare a acestei intrari, registrul de deplasare muta datele cu o locatie in interiorul registrului si introduce starea intrarii de date in primul bit. Pe partea crescatoare a acestei intrari procesul se va repeta.
  • Reset- Intrarea de reset face exact ceea ce zice. Reface toti bitii in interiorul registrului pe care il folosim (ii facem 0).

1000 din interiorul registrului de deplasare este locatia primului bit al registrului de deplasare. Daca ne gandim la registrul de deplasare ca la un tren atunci acest bit este locomotiva. 1003 din interiorul simbolului de mai sus este ultimul bit din registrul de deplasare. Deci putem spune ca 1001 si 1002 sunt biti intermediari. Deci, acest registru de deplasare are 4 biti (1000,1001,1002,1003)

Sa examinam o aplicatie pentru a vedea de ce avem nevoie si cum folosim un registru de deplasare.

Imaginati-va o masina de facut inghetata la cornet, Avem 4 pasi. Mai intai verificam daca conul nu este stricat. Apoi punem inghetata in interiorul conului (dam drumul la iesirea 500). Apoi adaugam alune (pornim iesirea 501). Si in final adaugam ciocolata (pornim iesirea 502). Daca cornetul este stricat bineinteles ca nu vom dori sa adaugam inghetata si restul accesoriilor. De aceea trebuie sa depistam cornetul stricat de pe linia de fabricatie astfel incat sa spunem masinii sa nu iroseasca materia prima. Folosim un senzor pentru a ne uita la fundul fiecarui cornet. (intrarea 0000). Daca este pornita  atunci cornetul este perfect iar daca este oprita atunci cornetul este stricat. Un codificator urmareste cornetul pe linia de transport (intrarea 0001). Un buton oe masina va curata registrul (intrarea 0002).

Iata cum trebuie sa arate diagrama scara:

Sa urmarim registrul de deplasare in momentul desfasurarii operatiunii. Iata cum va arata registrul 1000 pe care il deplasam) initial:

Registrul 10xx

15

14

13

12

11

10

09

08

07

06

05

04

03

02

01

00













0

0

0

0

Un cornet bun trece prin fata senzorului (intrarea 0000). Senzorul (intrarea de date) este pornit 1000 nu va fi pornit pana la partea crescatoare a codificatorului (intrarea 0001). In final codificatorul genereaza un impuls si starea intrarii de date (intrarea 0000) este transferata bitului 1000. Registrul arata acum astfel:

Registrul 10xx

15

14

13

12

11

10

09

08

07

06

05

04

03

02

01

00













0

0

0

1

Cum sistemul de transport continua sa functioneze, un alt cornet apare in fata senzorului. De aceasta data este un cornet stricat si senzorul ramane oprit. Acum codificatorul genereaza un alt puls. Vechea stare a bitului 1000 este transferata in bitul 1001. Vechea stare a lui 1001 este mutata in 1002. Vechea stare a lui 1002 este mutata in 1003. Si noua stare a intrarii de date va fi transferata bitului 1000. Registrul arata acum astfel:

Registrul 10xx

15

14

13

12

11

10

09

08

07

06

05

04

03

02

01

00













0

0

1

0

Din moment ce registrul arata ca 1001 este acum pornit, scara spune ca iesirea 0500 va fi pornita si inghetata va fi pusa in cornet.

Din moment ce sistemul de transport continua sa functioneze, un alt cornet ajunge in fata senzorului. De data aceasta este un cornet bun si senzorul este pornit. Apoi codificatorul genereaza un alt impuls. Vechea stare a bitului 1000 este transferata bitului 1001. Vechea stare a lui 1001 se muta la 1002. Vechea stare a lui 1002 se muta la 1003. Si noua stare a intrarii de date (senzorul de cornet) este transferata bitului 1000. Registrul arata acum astfel:

Registrul 10xx

15

14

13

12

11

10

09

08

07

06

05

04

03

02

01

00













0

1

0

1

Din moment ce registrul arata ca 1002 este acum pornit, scara spune ca iesirea 0501 va fi pornita si alunele sunt puse in cornet. Din moment ce 1001 retine acum starea unui cornet stricat, 500 ramane inchis pe treapta de mai sus si in cornet nu curge inghetata. Din moment ce sistemul de transport continua sa functioneze, un alt cornet ajunge in fata senzorului. De aceasta data este tot un cornet bun si senzorul este pornit. Codificatorul genereaza un alt impuls. Vechea stare a bitului 1000 este transferata bitului 1001. Vechea stare a lui 1001 se muta in 1002. Vechea stare a lui 1002 se muta in 1003. Si noua stare a intrarii de date este transferata bitului 1000. Registru arata astfel:

Registrul 10xx

15

14

13

12

11

10

09

08

07

06

05

04

03

02

01

00













1

0

1

1

Din moment ce registrul arata ca 1003 este acum pornit, scara spune ca iesirea 0502 va fi pornita si ciocolata este pusa in cornet. Din moment ce 1002 retine acum starea unui cornet stricat, 501 ramane inchis pe treapta de mai sus si in cornet nu sunt puse alune. Din moment ce registrul arata ca 1001 este pornit scara spune ca si iesirea 0500 va fi pornita si inghetata este pusa in acel cornet.

As the conveying system continues to move on, another cone comes in front of the sensor. This time it's another broken cone and the sensor turns off. Now the encoder generates another pulse. The old status of bit 1000 is transferred to bit 1001. The old status of 1001 shifts to 1002. The old status of 1002 shifts to 1003. And the new status of the data input (cone sensor) is transferred to bit 1000. The register now looks like:

Din moment ce sistemul de transport continua sa functioneze, un alt cornet ajunge in fata senzorului. De data aceasta este un alt cornet stricat si senzorul este oprit. Codificatorul genereaza un alt impuls. Vechea stare a bitului 1000 este transferata bitului 1001. Vechea stare a lui 1001 se muta in 1002. Vechea stare a lui 1002 se muta in 1003. Si noua stare a intrarii de date este transferata bitului 1000. Registru arata astfel:

Registrul 10xx

15

14

13

12

11

10

09

08

07

06

05

04

03

02

01

00













0

1

1

0

Observati ca starea primului nostru cornet a disparut. In realitate sta in locatia 1004 dar este inutil pentru noi sa desenam o aplicatie cu 16 procese aici. Este suficient sa spunemca dupa ce bitul este deplasat tot drumul catre stanga dispare si nu mai este vazut niciodata. Cu alte cuvinte, a fost mutat in afara registrului si a fost sters din memorie. Desi nu este desenata, operatia continua, fiecare bit deplasandu-se pe partea crescatoare a semnalului codificatorului.

Registrele de deplasare sunt in mod curent utilizate in sisteme de transport, etichetare si in aplicatii de imbuteliere. Cateodata sunt convenabil de utilizat cand operatia trebuie amanata pe o linie de imbuteliere rapida. De exemplu, un solenoid nu poate elimina imediat o cutie de bere pe care senzorul o depisteaza cu defectiuni. Pana cand solenoidul ar reactiona, cutia ar fi trecut. In mod obisnuit solenoidul se afla mai jos pe linia de transport si un registru de deplasare urmareste cutia pentru a fi eliminata mai tarziu cand este mai convenabil.

A shift register is often very difficult to understand. When in doubt, re-read the above and you'll understand it soon enough.

Un registru de deplasare este de obicei destulde dificil de inteles. Cand sunteti in dubiu recititi si veti intelege curand.

Getting and Moving Data

Achizitia si mutarea datelor

Sa incepem sa lucram cu niste date. Aceasta este ceea ce poate fi considerat ca intrarea in functiunile avansate a unui automat programabil. De asemenea acesta este punctul de unde se vor vedea diferentele de functionare si implementare intre marci. In randurile ce urmeaza vom explora doua dintre cele mai populare cai de a achizitiona si manipula date.

De ce dorim sa achizitionam date? Raspunsul este simplu. Sa spunem ca folosim unul dintre modulele optionale ale fabricantului. Poate un convertor analog/digital. Acest modul achizitioneaza semnale analogice din lumea exterioara (o variatie de voltaj sau curent) si converteste semnalul in ceva ce automatul poate intelege (un semnal format din 0 si 1). Fabricantii depoziteaza automat aceste date intr-o locatie de memorie pentru noi. Insa trebuie sa luam datele de acolo si sa le mutam in alt loc, altfel urmatorul semnal analog il va inlocui pe cel achizitionat inainte. Cu alte cuvinte, muta-l sau pierde-l! Altceva ce am putea dori sa facem este sa stocam o constanta (un numar), sa achizitionam cateva date binare de la terminalele de intrare, sa facem ceva matematica si sa stocam rezultatele intr-o locatie diferita etc…

Dupa cum am zis mai sus exista 2 instructiuni comune “setate” sa faca asta. Cativa fabricanti folosesc o singura instructiune pentru a face toata operatia in timp ce altii folosesc doua instructiuni separate. Cele doua sunt folosite impreuna pentru a obtine rezultatul final. Sa ne aruncam o scurta privire la fiecare instructiune.

Instructiunea singulara este de obicei numita MOV (move). Cativa vanzatoriinclud de asemenea o instructiune MOVN(move not). Are aceeasi functiune ca si MOV dar transfera datele in forma inversata (daca un bit a fost 1, un 0 este stocat/mutat sau daca bitul a fost 0, un 1 este stocat/mutat). MOV arata de obicei ca mai jos:

MOV instruction symbol

Instructiunea pereche este numita de obicei LDA (LoaD Acumulator) si STA (Store Accumulator). Acumulatorul este un simplu registru in interiorul procesorului unde automatul stocheaza datele temporar in timp ce functioneaza. Instructiunea LDA in mod normal arata ca mai jos in stanga, in timp ce STA arata ca jos, in dreapta:

Regardless of whether we use the one symbol or two symbol instruction set (we have no choice as it depends on whose plc we use) they work the same way.

Indiferent daca folosim un set de instructiuni cu un simbol sau doua simboluri (depinde doar de automatul pe care il folosim, nu ne alegem noi) ele functioneaza in acelasi fel.

Let's see the single instruction first. The MOV instruction needs to know 2 things from us.

  • Sursa (xxxx)- Aceasta este locul unde se afla datele pe care dorim sa le mutam. De exemplu putem scrie o constanta aici (2222). Aceasta inseamna ca sursa noastra de date este numarul 2222. Vom putea de asemenea sa scriem locatia sau adresa datelor pe care dorim sa le mutam. Daca scriem DM100 aceasta va muta datele din memoria de date (data memory)100.
  • Destinatia (yyyy)- Aceasta este locatia unde datele vor fi mutate. Aici scriem o adresa. De exemplu, daca scriem DM201 aici datele vor fi mutate in memoria de date 201. Putem scrie de asemenea 0500 aici. Aceasta inseamna ca datele vor fi mutate la iesirile fizice. 0500 va avea bitul cel mai putin semnificativ, 0501 va avea urmatorul bit… 0515 va avea bitul cel m ai semnificativ. Aceasta poate fi folositor daca am avea un afisaj binar conectat la iesiri si am dori sa afisam valoarea din interiorul unui numarator pentru operatorul unei masini, (de exemplu).

.

Diagrama scara pentru a face aceasta ar trebui sa arate similar cu cea de mai sus.

Observati ca folosim de asemenea o instructiune “difu” aici. Motivul este simplu pentru daca nu am face-o datele vor fi mutate la fiecare scanare. Cateodata acesta este un lucru bun (de exemplu daca achizitionam date de la un modul analog/digital) dar in alte dati nu este (de exemplu un afisaj extern ar fi imposibil de citit din cauza ca date se schimba foarte des). Scara arata ca de fiecare data cand intrarea 0000 devine adevarata.difu devine adevarat doar pentru o singura scanare. In acest timp LoaD 1000 va fi adevarat si automatul va muta datele din memoria de date 200 in memoria de date 201.
Simple but effective. If, instead of DM200, we had written 2222 in the symbol we would have moved (written) the number (constant) 2222 into DM201.

Simplu dar eficient. Daca, in loc de DM200, am fi scris 2222 in simbol am fi mutat (scris) numarul (constanta)2222 in DM201[3].

Cele doua simboluri de instructiuni functioneaza la fel dar arata diferit. Pentru a le folosi trebuie sa oferim doua lucruri, unul pentru fiecare instructiune:

  • LDA – aceasta instructiune este similara cu sursa unei instructiuni MOV. Aici este locul in care se afla datele pe care dorim sa le mutam. Am putea scrie o constanta aici (2222 de exemplu). Aceasta inseamna ca sursa noastra de date este numarul 2222. Am putea de asemenea sa scriem o adresa a locului unde datele pe care dorim sa le mutam sunt localizate. Daca scriem DM100 aceasta ar muta datele ce sunt localizate in memoria de date 100.
  • STA – aceasta instructiune este similara cu destinatia unei instructiuni MOV. Scriem o adresa aici. De exemplu daca scriem DM201 aici, datele vor fi mutate in memoria de date 201. Putem de asemenea scrie 0500 aici. Aceasta inseamna ca datele vor fi mutate la iesirile fizice. 0500 va avea bitul cel mai putin semnificativ, 0501 va avea urmatorul bit… 0515 va avea bitul cel m ai semnificativ. Aceasta poate fi folositor daca am avea un afisaj binar conectat la iesiri si am dori sa afisam valoarea din interiorul unui numarator pentru operatorul unei masini, (de exemplu).

Diagrama scara pentru a face aceasta ar trebui sa arate similar cu cea de mai sus. Si aici observam ca folosim “o trecere” astfel incat mutarea se intampla o singura data pentru fiecare data cand intrarea 0000 devine adevarata. In acesta scara mutam constanta 2222 in memoria de date 200. # este folosit de anumiti fabricanti pentru a simboliza un numar in baza zece. Daca am fi folosit 2222 automatul ar fi crezut ca ne referim la adresa 2222. Automatele programabile sunt toate la fel, dar sunt toate diferite.

Ne putem gandi la aceasta instructiune ca fiind poarta catre instructiunile avansate. Sunt sigur ca o veti gasi folositoare si de nepretuit dupa cum vom vedea in viitor. Multe functiuni avansate sunt imposibile fara aceasta instructiune!

Math Instructions

Instructiuni matematice

Sa ne uitam la folosirea unor intructiuni matematice de baza. De multe ori in aplicatiile noastre trebuie sa executam un tip de formula matematica asupra datelor noastre. Este destul de rar ca datele noastre sa fie exact ceea ce avem nevoie.

Ca un exemplu, sa presupunem ca fabricam garnituri. Nu dorim sa afisam numarul total pe care l-am fabricat azi, ci mai degraba dorim sa afisam cate mai trebuie sa facem astazi pentru a ne realiza planul. Sa spunem ca planul nostru pentru azi este de 1000 de bucati. Vom spune ca X este productia noastra curenta. De aceea ne dam seama ca mai sunt 1000-X=garnituri de facut. Pentru a implementa aceasta formula evident ca ne trebuie ceva capacitate matematica.

In general, automatele programabile aproape intotdeauna includ aceste functiuni matematice:

  • Adunarea- Capabilitatea de a aduna o parte de date cu alta. Este in mod curent numita ADD.
  • Scaderea- Capacitatea de a scadea o parte de date din alta. Este in mod curent numita SUB.
  • Inmultirea-Capacitatea de a inmulti o parte de date cu alta. Este in mod curent numita MUL.
  • Impartirea-Capabilitatea de a imparti o parte de date cu alta. Este de obicei numita DIV.

As we saw with the MOV instruction there are generally two common methods used by the majority of plc makers. The first method includes a single instruction that asks us for a few key pieces of information. This method typically requires:

Dupa cum am vazut la instructiunea MOV sunt in general doua metode comune utilizate de majoritatea fabricantilor de automate programabile. Prima metoda include o instructiune ce ne cere cateva informatii cheie. Aceasta metoda de obicei cere:

  • Sursa A- Aceasta este adresa primei parti de date pe care o vom folosi in formula  noastra. Cu alte cuvinte este locatia din memorie unde se afla primul “numar” din formula noastra.
  • Sursa B- Aceasta este adresa celei de-a doua parti de date pe care o folosim in formula noastra. Cu alte cuvinte este locatia din memorie in care se afla al doilea “numar” pe care il folosim in formula. Cu alte cuvinte nu putem lucra direct cu o formula ca 1+2+3. Trebuie sa o spargem in bucati. Ca 1+2=X apoi X+3=rezultatul nostru.
  • Destinatia- Aceasta este adresa in care rezultatul formulei noastre va fi pus. De exemplu, daca 1+2=3, 3-ul va fi automat pus in aceasta locatie de destinatie din memorie.

Simbolul ADD

Instructiunile de mai sus in mod normal au un simbol ce arata ca cel de deasupra. Bineinteles, cuvantul ADD va fi inlocuit cu SUB, MUL, DIV, etc. In acest simbol, sursa A este DM100, sursa B este DM101 si destinatia este DM102. Deci, formul este simplu ce valoare este in DM100 + ce valoare este in DM101. Rezultatul este automat stocat in DM102.

Mai sus este demonstrata utilizarea functiilor matematice in diagrama scara. Luati aminte ca inca o data folosim instructiunea “o trecere”. Dupa cum am vazut mai sus, aceasta pentru ca daca nu am fi folosit-o am fi executat formula la fiecare scanare. Sansele sunt bune sa dorim sa executam functia o data cand intrarea 0000 devine adevarata. Daca am fi pus inainte numarul 100 in DM100 si 200 in DM101, numarul 300 va fi stocat in DM102 (100+200=300)

Simbolul ADD (metoda duala)

Metoda cu instructiunea duala foloseste un simbol similar cu cel de mai sus. In aceasta metoda, dam acestui simbol doar locatia sursei B. Locatia sursei A este data de instructiunea LDA. Destinatia este inclusa in intructiunea STA.

Mai sus este diagrama scara ce ne arata despre ce vorbeam.

Rezultatele sunt aceleasi ca si la instructiunea singulara de mai sus.

Ce s-ar intampla daca am avea un rezultat mai mare decat valoarea ce poate fi stocata intr-o locatie de memorie?

In mod normal locatiile de memorie sunt pe 16 biti. Cu alte cuvinte aceasta inseamna ca daca numarul este mai mare de 65535 (216=65536) este prea mare pentru a intra. Atunci avem ceea ce se numeste “overflow”. In mod normal automatul porneste un releu intern ce ne spune ca un “overflow” s-a intamplat. Depinzand de automatul programabil, vom avea date diferite in locatia de destinatie (DM102 in exemplu). Majoritatea automatelor programabile pun un avertisment acolo.

Cateva folosesc matematica pe 32 de biti ce solutioneaza problema (exceptand numerele foarte mari!) Daca facem impartire, de exemplu, si impartim la 0 bitul de “overflow” este pornit de asemenea. Este suficient sa spunem, verificati bitul de overflow in scara voastra si daca este adevarat, actionati in consecinta.

Multe automate includ de asemenea alte capacitati matematice. O parte din aceste functiuni pot include:

  • Radacini patrate
  • Valoarea absoluta
  • Sinus
  • Cosinus
  • Tangenta
  • Logaritm natural
  • Logaritm zecimal
  • XY
  • Arcsinus(tangent, cotangent)
  • si mai multe… verificati la fabricant pentru a fi siguri

Cateva automate pot folosi matematica cu virgula mobila. Matematica cu virgula mobila insemna folosirea virgulei[4]. Cu alte cuvinte putem spune ca 10 impartit la 3 este 3,333333 (virgula mobila). Sau putem spune ca 10 impartit la 3 este 3 si rest 1. Multe micro/mini automate programabile nu includ matematica cu virgula mobila. Majoritatea sistemelor mari o includ. Trebuie sa intelegem teoria si ne putem usor adapta la ceea ce ne propune fabricantul.

Number Systems

Sisteme de numeratie

Inainte sa ajungem prea departe, sa ne uitam la variatele sisteme de numeratie folosite de automatul programabil.

Multe sisteme de numeratie sunt folosite de automatul programabil. Binar si Zecimalul Codat Binar sunt populare in timp ce sistemele octale si hexazecimale sunt de asemenea comune.

Sa ne uitam la fiecare:

Astfel sa consideram urmatoarea formula:

Nbase= Ddigit * Runit + . D1R1 + D0R0

unde D=valoarea digitului si R= numarul de simboluri digitale folosite in sistemul de numeratie dat.

  • Zecimal- Acesta este sistemul de numeratie pe care il folosim in viata de zi cu zi. Ne putem gandi la acesta ca fiind numeratia in baza 10. Mai poate fi numit baza10 pentru ca fiecare digit poate avea 10 stari diferite (0-9). Din moment ce acesta nu este usor de implementat intr-un sistem electronic, este extrem de rar folosit. Daca vom folosi formula de mai sus vom putea afla ce este numarul 456. Din formula:

Nbase= Ddigit * Runit + . D1R1 + D0R0

vom avea (din moment ce avem baza 10, R=10)

N10= D4*102 + D5*101 + D6*100

= 4*100 + 5*10 + 6*1

= 400 + 50 + 6

= 456.

  • Binar- Acesta este sistemul de numeratie pe care calculatoarele si automatele programabile il folosesc. A fost mult mai usor de realizat un sistem in care doar 2 numere (0 si 1) sunt manipulate (folosite). Sistemul binar foloseste acelasi principiu de baza ca si cel zecimal. In zecimal avem 10 digiti (0-9). In binar avem doar 2 digiti (0 si 1). In zecimal numaram: 0,1,2,3,4,5,6,7,8,9 si in loc sa ne intoarcem inapoi la zero, pornim un nou digit si apoi plecam de la 0 in locatia originala a digitului.
    Cu alte cuvinte, incepem prin a plasa un 1 in a doua locatie de digit si incepem sa numaram din nou in locatia originala astfel: 10,11,12,13,… Cand ajungem din nou la 9 incrementam al doilea digit si incepem sa numaram de la 0 din nou in locatia originala a digitului. Ca 20,21,22,23… si bineinteles aceasta continua sa se repete. Si cand terminam digitii in a doua locatie de digit cream al treilea digit si pornim din nou de la inceput (99, 100, 101, 102,…)
    Binarul functioneaza in acelasi fel. Incepem cu 0 apoi 1. Dat fiind cu nu exista 2 in binar trebuie sa creem un nou digit
    De aceea avem 0, 1, 10, 11 si din nou nu mai avem loc. Atunci creem un nou digit ca 100, 101, 110, 111. Din nou nu mai avem loc si mai adaugam un nou digit. A-ti inteles ideea?

Formula de conversie generala poate clarifica lucrurile:

Nbase= Ddigit * Runit + . D1R1 + D0R0
Din moment ce folosim sistemul binar sau baza 2, R=2. Sa incercam sa convertim numarul binar 1101 inapoi in zecimal.

N10= D1 * 23 + D1 * 22 + D0 * 21 + D1 * 20

= 1*8 + 1*4 + 0*2 + 1*1

= 8 + 4 +0 +1

= 13

Iata un simplu tabel de binare pentru referinta. Randul de sus arata puterile lui 2 pe cand randul de jos arata valoarea zecimala echivalenta.

Conversiile numerelor binare

215

214

213

212

211

210

29

28

27

26

25

24

23

22

21

20

32768

16384

8192

4096

2048

1024

512

256

128

64

32

16

8

4

2

1

  • Octal- Sistemul de numeratie binar cere o multitudine de digiti pentru a reprezenta un numar mare. Luati in considerare numarul binar 11111111 este doar zecimalul 257. Un numar zecimal ca 1000000 ar necesita o multitudine de digiti binari! In plus este de asemenea dificil pentru oameni sa manipuleze asemenea numere fara sa faca greseli. De aceea cativa producatori de calculatoare/automate programabile au inceput sa implementeze sistemul de numeratie octal.

Acest sistem poate fi gandit ca baza 8 din moment ce consista din 8 digiti. (0, 1, 2, 3, 4, 5, 6, 7). Asadar vom numara astfel: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12 17, 20, 21, 22 27, 30,

Folosind formula din nou, putem converti un numar octal intr-un numar zecimal destul de usor.

Nbase= Ddigit * Runit + . D1R1 + D0R0
Astfel 654 octal va fi (amintiti-va ca R=8):


N10= D6 * 82 + D5 * 81 + D4 * 80

= 6*64 + 5*8 + 4*1

= 384 +40 +4

= 428

Here's a simple octal chart for your reference. The top row shows powers of 8 while the bottom row shows their equivalent decimal value.

Iata un simplu tabel de octale pentru referinta. Randul de sus arata puterile lui 8 pe cand randul de jos arata valoarea zecimala echivalenta.


Conversiile numerelor octale

87

86

85

84

83

82

81

80

2097152

262144

32768

4096

512

64

8

1

In final, sistemul octal este o cale convenabila pentru noi de a exprima sau scrie numere binare in sistemele de automatele programabile. Un numar binar cu un mare numar de digiti poate fi in mod convenabil scris intr-o forma octala cu mai putini digiti. Aceasta pentru ca un digit octal reprezinta de fapt 3 digiti binari.

Credeti-ma ca atunci cand vom incepe sa lucram cu date din registre sau cu locatiile adreselor mai tarziu va deveni o cale foarte buna de a exprima datele. Tabelul urmator arata ceea ce doream sa spunem:

Numar binar cu echivalentul sau octal

1

1

1

0

0

1

0

0

1

1

1

0

0

1

0

1

1

6

2

3

4

5

Din tabel putem vedea ca numarul binar 1110010011100101 este in octal 162345 (58597 in zecimal). Dupa cum vedem, cand ne gandim la registre este mai simplu sa se gandim in octal decat in binar. Cum vom vedea imediat, hexazecimalul este cea mai buna metoda de gandire.

Hexazecimal- Sistemul de numeratie binar cere o multitudine de digiti pentru a reprezenta un numar mare. Sistemul octal aduce imbunatatiri. Sistemul hexazecimal este insa cea mai buna solutie, pentru ca ne permite sa folosim si mai putini digiti. De aceea este cel mai popular sistem de numeratie utilizat in calculatoare si in automatele programabile.
Sistemul hexazecimal mai este cunoscut ca baza16 sau simplu hex. Cum spune si numele, are 16 digiti. Digitii sunt: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.

Asadar numaram astfel:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,10,11,12,13,
1A,1B,1C,1D,1E,1F,20,21 2A,2B,2C,2D,2E,2F,30

Folosind formula din nou, putem converti un numar hexa in zecimal destul de usor.
Nbase= Ddigit * Runit + . D1R1 + D0R0
So hex 6A4 would be:(remember here that R=16)

Asadar 6A4 in hexa va fi ( amintiti-va ca R=16)


N10= D6 * 162 + DA * 161 + D4 * 160

= 6*256 + A(A=zecimal10)*16 + 4*1

= 1536 +160 +4

= 1700

Iata un simplu tabel de hexazecimale pentru referinta. Randul de sus arata puterile lui 16 pe cand randul de jos arata valoarea zecimala echivalenta.Observati ca numerele cresc relativ repede!

Conversiile numerelor hexa

168

167

166

165

164

163

162

161

160

4294967296

268435456

16777216

1048576

65536

4096

256

16

1

In final, sistemul hexa este poate cea mai convenabila cale pentru noi sa exprimam sau sa scriem numerele binare in sistemele de automate programabile. Un numar binar cu un mare numar de digiti poate fi scris convenabil in forma hexa cu mai putini digiti decat in forma

Credeti-ma ca atunci cand vom incepe sa lucram cu date din registre sau cu locatiile adreselor mai tarziu va deveni cea mai buna cale de a exprima datele. Tabelul urmator arata ceea ce doream sa spunem:

Numar binar cu echivalentul sau Hexa

0

1

1

1

0

1

0

0

1

0

1

0

0

1

0

1

7

4

A

5

Din tabel putem vedea ca numarul binar 0111010010100101 este 74A5 in hexa (29861 in zecimal). Cum putem vedea, cand ne gandim la registre, este mai usor sa gandim in hexa decat in binar sau in octal.

Boolean Math

Algebra booleana

Sa ne aruncam o privire la o simpla algebra booleana. Matematica binara ne lasa sa aplicam cateva functii de baza bitilor din registrele noastre. Aceste functii de baza includ in mod obisnuit functiile AND (SI), OR(SAU) si XOR (Sau exclusiv). Fiecare este descrisa mai jos.

  • AND- Aceasta functie ne lasa sa folosim tabela de adevar de mai jos. Aici putem vedea ca functia AND este inrudita cu inmultirea. Vedem aceasta pentru ca singura data cand rezultatul este adevarat (1) este atunci cand ambii operatori A si B sunt adevarati (=1).

Instructiunea AND este folositoare atunci cand automatul vorstru nu are o functie de mascare. O functie de mascare da voie unui bit intr-un registru sa fie “lasat in pace” cand lucram la nivel de bit. Aceasta pentru ca fiecare bit care este AND-at cu sine insusi va ramane la valoarea care o are initial. De exemplu, daca dorim sa stergem (sa-i facem 0) doar 12 biti intr-un registru de 16 biti putem AND-a registrul cu 0 peste tot in afara celor 4 biti unde dorim sa mentinem starea initiala.

Observati tabela de adevar de mai jos pentru a intelege aceasta (1 AND 1 = 1, 0 AND 0 = 0)

Rezultat = A AND B

A

B

Rezultat

0

0

0

1

0

0

0

1

0

1

1

1

  • OR- Aceasta functie se bazeaza pe tabela de adevar de mai jos. Aici putem vedea ca functia OR este foarte mult inrudita cu adunarea. Vedem aceasta pentru ca singura data cand rezultatul este adevarat (=1) este cand operatorul A sau B este adevarat (=1). Evident, cand sunt ambii adevarati rezultatul este adevarat.

Rezultat = A OR B

A

B

Rezultat

0

0

0

1

0

1

0

1

1

1

1

1

  • XOR- Aceasta functie ne lasa sa folosim tabela de adevar de mai jos. Astfel putem vedea ca functia XOR nu este inrudita cu nici o operatie matematica uzuala. O modalitate usoara de a retine rezultatele acestei functii este sa ne gandim ca A si B trebuie sa fie inversa celeilalte. Daca sunt ambele la fel (A=B) atunci rezultatul este fals (=0).

Aceasta este cateodata folositor cand dorim sa comparam bitii din 2 registre si sa subliniem ce biti sunt diferiti. Mai este necesar atunci cand calculam diferite sume de control. O suma de control este de obicei folosita ca o verificare de erori in protocoalele de transmisiuni.

Rezultat = A XOR B

A

B

Rezultat

0

0

0

1

0

1

0

1

1

1

1

0

Instructiunile logice de pe scara sunt in mod uzual numite AND, ANDA, ANDW, OR, ORA, ORW, XOR, EORA XORW.

Dupa cum am vazut la instructiunea MOV sunt in general 2 metode comune utilizate de majoriatatea producatorilor de automate programabile. Prima metoda include o singura instructiune ce ne intreaba cateva informatii cheie. Aceasta metoda de obicei necesita:

  • Sursa A- Aceasta este adresa primei parti de date pe care o vom utiliza. Cu alte cuvinte este locatia memoriei unde se afla A.
  • Sursa B- Este adresa celei de-a doua parti de date pe care o vom folosi. Cu alte cuvinte este locatia memoriei unde se afla B.
  • Destinatia – Aceasta este adresa unde rezultatul va fi pus. De exemplu, daca A And B = 0 rezultatul (0) va fi automat pus in acesta locatie de memorie destinatie.

simbolul AND

Instructiunile de deasupra in mod obisnuit au un simbol ca cel aratat aici. Bineinteles, cuvantul AND va fi inlocuit de OR sau XOR. In acest simbol, sursa A este DM100, sursa B este DM101 si destinatia este DM102. Deci am creeat pur si simplu ecuatia DM100 AND DM101 = DM102. Rezultatul este automat stocat in DM102.

Functiile boolene intr-o diagrama scara sunt prezentate dedesubt

Observati ca inca o data folosim instructiunea “ o trecere”. Dupa cum am vazut inainte, aceasta pentru ca daca n-am folosi-o, ar trebui sa executam instructiuni la fiecare scanare. Sansele sunt bune sa dorim sa executam functia o singura data cand intrarea 0000 devine adevarata.

 simbolul AND(metoda instructiunii duale)

Metoda instructiunii duale foloseste un simbol similar cu ceea ce am vazut mai sus. In aceasta metoda, dam acestui simbol doar locatia sursei B. Locatia sursei A este data de intructiunea LDA. Destinatia este inclusa in instructiunea STA.

Dedesubt este diagrama scara ce ne arata ce inseamna aceasta:

Trebuie intotdeauna sa ne amintim ca teoria este foarte importanta. Daca nu putem intelege teoria si de ce lucrurile se intampla cum se intampla, nu putem utiliza nici un automat programabil, indiferent de fabricant. Daca cercetam documentatia de la producator putem afla detaliile automatului programabil pe care il folosim.

DC Inputs

Intrarile de curent continuu

Sa ne aruncam o privire la cum functioneaza circuitele de intrare a unui automat programabil. Aceasta ne va permite o mai buna intelegere a cum sa le legam.

De obicei, modulele de intrare de curent continuu care sunt disponibile functioneaza cu 5, 12, 24 si 48 de volti. Fiti siguri ca cumparati pe cel care se potriveste nevoilor dumneavoastra, bazandu-va pe dispozitivele de intrare pe care le veti folosi. Ne vom uita mai intai cum functioneaza intrarile de curent continuu. Modulele de intrare de curent continuu ne permit sa conectam atat dispozitive de tranzistori de tip PNP cat si de tip NPN la este. Daca folosim un comutator normal de obicei nu trebuie sa ne facem griji daca l-am conectat ca NPN sau ca PNP. Trebuie sa tinem seama ca majoritatea automatelor programabile nu ne lasa sa amestecam dispozitive NPN si PNP in acelasi modul. Cand folosim un senzor insa, trebuie sa ne facem grijicu privire la configuratia iesirii acestuia. Intotdeauna trebuie verificat daca este PNP sau NPN.

Diferenta intre cele doua tipuri este daca incarcarea (in cazul nostru automatul este incarcarea) este conectat la pamant sau la +. Un senzor de tip NPN are incarcarea conectata la pamant, in timp ce un dispozitiv PNP are incarcarea pusa la +.

Mai jos sunt descrise iesirile pentru senzorii NPN si PNP.

La senzorul NPN am conectat o iesire la intrarea automatului programabil si cealalta iesire la pamant. Daca senzorul nu este alimentat de la aceeasi sursa ca si automatul programabil, ar trebui sa conectam ambele impamantari impreuna. Senzorii NPN sunt folositi in mod curent in America de Nord.

Multi ingineri vor spune ca PNP este mai bun (mai sigur) pentru ca incarcarea este conectata la pamant insa ceea ce va trebuie este cel mai bun. Numai sa va asteptati la cei mai rau. La senzorul PNP am conectat o iesire la voltaj pozitiv si cealalta iesire la intrarea automatului programabil. Daca senzorul nu este alimentat din aceeasi sursa ca automatul programabil, ar trebui sa conectam ambele borne pozitive impreuna. Senzorii PNP sunt mai folositi in Europa.

In interiorul senzorului, tranzistorul actioneaza ca un intrerupator. Circuitul intern al senzorului spune tranzistorului de iesire sa porneasca daca o tinta este prezenta. Tranzistorul apoi inchide circuitul intre cele 2 conexiuni de mai sus (+ si intrarea automatului programabil).

Singurele lucruri accesibile utilizatorului sunt terminalele etichetate COMMON, INPUT 0000, INPUT 0001, INPUTxxxx.. Terminalul comun este conectat fie la + fie la pamant. Unde este conectat depinde de tipul senzorului utilizat. Cand utilizam un senzor NPN acest terminal este conectat la +. Cand folosim un senzor PNP acest terminal este conectat la pamant.

Un intrerupator obisnuit va fi conectat la intrari intr-o maniera similara. O parte a intrerupatorului va fi conectata direct la +. Cealalta duce la terminalul de intrare al automatului programabil. Asta presupune ca terminalul comun este conectat la pamant. Daca comunul este conectat la + atunci pur si simplu conectati o parte a intrerupatorului la pamant si cealalta la terminalul de intrare al automatului programabil.

Fotocuplurile sunt folosite pentru a izola circuitele interne ale automatului programabil de intrari. Aceasta elimina sansa ca un zgomot electric sa patrunda in circuitele interne. Ele functioneaza prin convertirea unui semnal de intrare in lumina si apoi prin convertirea luminii inapoi in semnal electric pentru a fi procesat de circuitul intern.

AC Inputs

Intrari de curent alternativ

Acum ca am inteles cum functioneaza intrarile de curent continuu, sa ne uitam si la intrarile de curent alternativ. Un curent alternativ este nepolarizat. Spus simplu, aceasta insemna ca nu trebuie sa ne mai face griji de pozitiv si negativ. Insa curentul continuu poate fi foarte periculos daca suntem neglijenti. De obicei un modul de curent alternativ este disponibil sa lucreze cu 24, 48, 110, si 220 volti. Fiti convinsi ca-l achizitionati pe cel care corespunde nevoilor dumneavoastra bazandu-ne pe dispozitivele de intrare (voltajul) pe care le vom utiliza.

OUCH use care!!

Modulele de intrare de curent alternativ sunt mai putin comune in zilele noastre decat modulele de intrare de curent continuu. Motivul este ca senzorii de azi au in mod normal iesiri pe tranzistori. Un tranzistor nu functioneaza cu curent alternativ. In mod obisnuit, curentul alternativ este schimbat printr-un limitator, sau alt tip de comutator. Daca aplicatia noastra foloseste un senzor probabil ca foloseste curentul continuu.

De obicei conectam un dispozitiv de curent alternativ dupa cum este aratat mai sus. De obicei firul de curent alternativ este conectat la intreruptor, in timp ce automatul programabil este conectat la neutru. Impamantarea trebuie conectata la impamantarea automatului programabil. La fel ca la curentul continuu, conexiunile de curent alternativ sunt de obicei codate pe culori astfel incat sa recunoastem firele. Codarea variaza de la tara la tara dar in Statele Unite este alb(neutrul), negru (faza) si verde (impamantarea). In afara Statelor Unite codarea comuna este maro (faza), albastru (neutru) si verde cu o dunga galbena pentru impamantare.

Modulul de intrare a automatelor programabile arata de obicei astfel:

Singurele lucruri accesibile pentru utilizator sunt terminalele etichetate COMMON, INPUT 0000, INPUTxxxx Terminalele comune sunt conectate la firul neutru.

Un intrerupator comun va fi conectat la terminalele de intrare direct. O parte a intrerupatorului va fi conectata direct la INPUT xxx. Cealalta parte merge la faza. Aceasta presupunand ca terminalul comun este conectat la neutru. Intotdeauna trebuie sa verificam specificatiile fabricantului inainte de a cabla pentru a fi siguri si in siguranta.

Fotocuplurile sunt folosite pentru a izola circuitele interne ale automatului programabil de intrari. Aceasta elimina sansa ca un zgomot electric sa patrunda in circuitele interne. Ele functioneaza prin convertirea unui semnal de intrare in lumina si apoi prin convertirea luminii inapoi in semnal electric pentru a fi procesat de circuitul intern.

O ultima remarca, de obicei o intrare de curent alternativ este vazuta mai tarziu de automatul programabil decat o intrare de curent continuu. In majoritatea cazurilor nu conteaza pentru programator pentru ca o intrare de curent alternativ este de obicei un intrerupator mecanic si dispozitivele mecanice sunt lente. Este destul de obisnuit pentru un automat programabil sa ceara intrarii sa fie pornite pentru 25 sau mai multe milisecunde inainte de a fi vazuta. Aceasta intarziere este necesara pentru ca este necasara o filtrare inainte de intrarea semnalului in circuitele interne ale automatului programabil. Sa ne amintim ca circuitele interne ale automatului programabil functioneaza de obicei cu 5 sau mai putini volti.

Relay Outputs

Iesiri analogice

Pana acum ar trebui sa avem o buna intelegere a folosirii intrarilor. Urmeaza circuitele de iesire.

Unul dintre cele mai comune tipuri de iesiri disponibile este iesirea analogica. Aceasta poate fi folosita atat cu incarcari de curent alternativ cat si cu incarcari de curent continuu. O incarcare este o descriere sumara a ceea ce este conectat la iesirile noastre. O numim incarcare pentru ca “incarcam iesirea” cu ceva. Daca nu conectam nici o incarcare la iesire (ci o conectam direct la sursa de energie) vom distruge cu siguranta iesirile. Cateva  forme de incarcare sunt solenoidele, lampile, motoarele, etc. Aceste “incarcari” sunt de toate dimensiunile. Dimensiunile electrice, adica. Intotdeauna verificati specificatiile incarcarii voastre inainte de a-l conecta la iesirea automatului programabil. Trebuie sa fim intotdeauna siguri ca curentul maxim pe care il va consuma este cuprins in specificatiile iesirii automatului programabil. Daca nu este cuprins in specificatii probabil ca va deteriora iesirea. Cand sunteti in dubiu, verificati la fabricant daca poate fi conectat fara pericol.

Cateva tipuri de incarcari sunt foarte inselatoare. Aceste incarcari inselatoare sunt numite “incarcari inductive”. Acestea au tendinta sa trimita un “curent de raspuns” cand sunt pornite. Acest curent este ca un varf ce trece prin sistem.

Un bun exemplu de incarcare inductiva este aparatul de aer conditionat. Se poate observa ca, atunci cand aparatul de aer conditionat porneste luminile palpaie pentru o secunda sau doua. Apoi se reintorc la stralucirea lor normala. Aceasta penru ca atunci cand aparatul de aer conditionat este pornit incearca sa traga mult curent din instalatia noastra electrica. Dupa aceasta “lovitura” initiala necesita mai putin curent si luminile se intorc la normal. Aceasta poate fi periculos pentru iesirile analogice ale automatului nostru. Poate fi estimat ca aceasta lovitura este de aproximativ de 30 de ori curentul nominal. De obicei o dioda sau un varistor poate fi folosit la combaterea defectiunilor iesirilor. Sa vedem acum cum putem folosi aceste iesiri in “lumea reala”.

Mai sus este aratata o metoda tipica de a conecta incarcarile la iesirile analogice ale automatului. Desi diagrama noastra arata iesirea conectata la o sursa de curent alternativ, curentul continuu poate fi folosit de asemenea. Aici comunul este conectat la o iesire a sursei de curent, iar cealalta iesire este conectata la incarcare. Cealalta jumatate a incarcarii este conectata la iesirea din automat desemnata in diagrama scara.

Releul este in interiorul automatului. Diagrama circuitelor sale arata de obicei ca cea de mai sus. Cand diagrama scara spune iesirii sa porneasca, automatul va aplica un voltaj bobinei releului. Acest voltaj va permite contactului respectiv sa se inchida. Cand contactul se inchide, unui curent extern ii este permis sa treaca prin circuitul nostru extern. Cand diagrama scara spune automatului sa opreasca iesirea, pur si simplu va intrerupe curentul din circuitul intern deci dand drumul contactului de iesire. Incarcatura noastra va avea in acel moment un circuit deschis si de aceea va fi oprit.

Transistor Outputs

Iesirile digitale

Urmatorul tip de iesire pe care ar trebui sa-l studiem este iesirea digitala. Este important de stiut ca un tranzistor poate lucra doar cu curent continuu. Pentru acest motiv nu poate fi folosit cu un curent alternativ.

Putem sa ne gandim la un tranzistor ca fiind un intrerupator in stare solida. Sau, mai simplu, un intrerupator electric. Un curent mic aplicat bazei trenzistorului ne lasa sa manevram un curent mai mare prin iesirile sale. Automatul programabil aplica un mic curent pe baza tranzistorului si iesirea tranzistorului se inchide. Cand este inchisa, un dispozitiv conectat la iesirea automatului programabil va fi pornit. Mai sus este o foarte simpla explicatie a unui tranzistor. Sunt bine inteles, mai multe detalii immplicate insa nu ne trebuie momentan.

De asemenea trebuie sa retinem ca, asa cum am vazut mai devreme cu circuitele de intrare, sunt in general mai multe tipuri de tranzistoare disponibile. De obicei un automat programabil va avea iesiri bazate fie pe tipul NPN fie pe tipul PNP. Tipul fizic de tranzistor utilizat variaza de asemenea de la fabricant la fabricant. Cateva din tipurile comune disponibile sunt BJT si MOSFET. Un tip BJT[5] are de obicei o capacitate mai mica de inchidere decat un tip MOS-FET[6]. BJT-ul are de asemenea un timp mai rapid de inchidere. Din nou, trebuie verificate specificatiile iesirilor automatului programabil pe care dorim sa-l folosim. Nu trebuie sa depasim niciodata curentul maxim specificat de fabricant.

Mai sus este aratat cum conectam de obicei dispozitivele de iesire la iesirile digitale. Observam ca acesta este un tranzistor de tip NPN. Daca ar fi de tip PNP, terminalul comun ar fi conectat la + si – va fi conectat la unul din capetele incarcarii noastre. Observati ca din moment ce acesta este o iesire de curent continuu trebuie sa observam intotdeauna polarizarea corecta pentru iesire. Un capat a incarcaturii este conectat direct la + asa cum se vede mai sus.

Sa stam un moment si sa vedem ce se intampla in interiorul unui circuit de iesire. Mai jos estediagrama unui circuit de iesire tipic pentru o iesire de tip NPN.

Observati ca, asa cum am vazut cu intrarile de tip tranzistor, exista un fotocuplu izoland lumea reala de circuitele interne. Cand diagrama scara o cere, circuitul intern porneste fotocuplul prin aplicarea unui mic voltaj partii de LED a fotocuplului. Aceasta face ca LED-ul sa emita lumina, iar partea de receptie a fotocuplului o va vedea si va permite curentului sa treaca. Micul curent va porni baza tranzistorului de iesire conectat la iesirea 0500. De aceeea, ceaac ce este conectat intre COM si 0500 va fi pornit. Cand scara spune ca 0500 trebuie oprit, LED-ul nu va mai emite lumina si tranzistorul conectat intre 0500 si COM va fi oprit.

Un alt lucru important de retinut este ca un tranzistor in mod normal nu poate suporta o incarcare la fel de mare ca un releu. Trebuie sa verificam in specificatiile fabricantului pentru a afla cea mai mare incarcare pe care o poate suporta. Daca curentul de incarcare este peste specificatiile iesirii, putem conecta iesirea automatului cu ajutorul unui releu extern. De ce nu folosim de la inceput un releu? Pentru ca un tranzistor ne da oportunitatea sa utilizam releele externe cand si cum este necesar.

Rezumand, un tranzistor este rapid, foloseste un curent mic, are o viata lunga si lucreaza doar cu curent continuu. Pe cand un releu este lent, poate lucra cu curenti mari, are o durata de viata scurta si lucreaza cu curent alternativ si cu curent continuu. Trebuie sa alegem pe cel folositor bazat pe cerintele aplicatiei noastre.




[1] ND = normal deschis; NI = normal inchis.


[2] master control reset

[3] DM = Data memory (memoria de date)

[4] Sau punctul zecimal in sistemele englezesti de numerotatie

[5] Bipolar Junction Transistor

[6] Oxide Semiconductor- Field Effect Transistor



Contact |- ia legatura cu noi -| contact
Adauga document |- pune-ti documente online -| adauga-document
Termeni & conditii de utilizare |- politica de cookies si de confidentialitate -| termeni
Copyright © |- 2024 - Toate drepturile rezervate -| copyright