automat programabil

25
1 AUTOMATUL PROGRAMABIL PLC816C MANUAL DE UTILIZARE 1.1. Descriere generala. Modulul PLC816C este un automat programabil proiectat avandu-se in vedere urmatoarele cerinte: Maxima usurinta in exploatare Maxima flexibilitate, la resursele existente Costuri minime Modularitate Izolare galvanica on board Facilitati de comunicatie specifice sistemelor de achizitie de date Conectica robusta Simplitate hardware conducand la fiabilitate crescuta 1.2. Schema bloc.

Upload: florin-iftode

Post on 27-Jan-2016

46 views

Category:

Documents


3 download

DESCRIPTION

automat programabil

TRANSCRIPT

Page 1: AUTOMAT Programabil

1

AUTOMATUL PROGRAMABIL PLC816CMANUAL DE UTILIZARE

1.1. Descriere generala.Modulul PLC816C este un automat programabil proiectat avandu-se invedere urmatoarele cerinte:

• Maxima usurinta in exploatare• Maxima flexibilitate, la resursele existente• Costuri minime• Modularitate• Izolare galvanica on board• Facilitati de comunicatie specifice sistemelor de achizitie de date• Conectica robusta• Simplitate hardware conducand la fiabilitate crescuta

1.2. Schema bloc.

Page 2: AUTOMAT Programabil

2

Utilizatorul are posibilitatea sa defineasca orice interdependenta logica intre intrari,iesiri, timere, precum si sa execute comenzi sau sa transmita informatii de la, saucatre un computer conectat la interfata seriala RS232.

1.3. RESURSE LA DISPOZITIA UTILIZATORULUI

• Intrari digitale izolate optic, in numar de 8• Intrari analogice neizolate in numar de 8• Convertor A/D cu rezolutia de 8 biti• Iesiri digitale open collector 5A in numar de 16.• Interfata seriala RS232• Timere programabile in numar de 8, permitand practic realizarea, printr-o

singura instructiune a unor constante de timp intre 4 milisecunde si 255 minute.• 8 functii logice elementare definibile de utilizator, cu particularitatea ca acestea

se executa in "background", independent de program.• 16 memorii de uz general• 4 numaratoare de 8 biti, care pot fi incarcate/decrementate prin program, sau

decrementate pe ceas extern.• Un numarator de 16 biti de evenimente externe

Gestionarea resurselor se face prin intermediul unui "program".Un program este o secventa ordonata de "instructiuni" , care codifica anumiteoperatii de executat asupra resurselor sistemului.

Setul de instructiuni a fost astfel conceput incat sa asigure controlul deplinasupra resurselor enumerate mai sus, fiind in acelasi timp minimal si de osimplitate extrema.

Programarea automatului se face extrem de simplu, cu ajutorul unui computer, pelinia seriala RS232. Odata memorat, programul se pastreaza in memorie un timpnedefinit de lung. Memoria de program este de etip EEPROM poate fi stearsa sirescrisa de circa 100.000 de ori.

1.4. SOFTWARE.

Modulul este livrat insotit de urmatoarele componente software:

a. Compilatorul de macroinstructiuni - fisierul XPLC.EXEb. Emulator de terminal ASCII - fisierul TERM.EXE

Aditional sunt livrate urmatoarele fisiere:

a. Manualul de utilizare completb. EXAMPLES.ZIP - o arhiva continand cateva exemple practice de programe.

Page 3: AUTOMAT Programabil

3

1.5. DOMENII DE APLICABILITATE

- Automatizari industriale- Sisteme de alarma si supraveghere- Laboratoare- Sisteme de masura si supraveghere- Invatamant- Home automation si building control- Semaforizare

2. PROGRAMAREA AUTOMATULUI

O "instructiune" este o expresie care codifica in mod univoc o anumita operatieasupra resurselor sistemului.O secventa coerenta de instructiuni, constiuie un "program".

Programarea automatului implica urmatoarele etape:

- Scrierea programului sub forma unui fisier text.- Compilarea programului - "traducerea" in limbaj masina.- Incarcarea programului in memoria nevolatila a automatului.

2.1. Variabile si constante. Tipuri de variabile.

2.1.1. In contextul unui program, se intelege prin "variabila" o denumire simbolica,asociata cu o anumita valoare logica sau numerica, valoare care se poate modificape parcursul executiei programului.In mod similar, o constanta este o demunire simbolica, asociata cu o valoare logicasau intreaga, care ramane aceeasi pe durata executiei programului.

2.1.2. In functie de valoarea pe care o pot lua, distingen doua tipuri de variabile:

a. Variabile de tip boolean sau logice, care pot lua numai doua valori - 0 sau 1(adevarat T, sau fals F).b. Variabile numerice de tip intreg, care pot lua orice valoare intreaga intr-o plajadefinita. In particular, intregii cu care se lucreaza pentru programarea PLC816C sesitueaza in plaja 0-255.

2.1.3. La alegerea numelor variabilelor trebuie avute in vedere urmatoarelerestrictii:

a. Lungimea maxima admisa pentru numele variabilelor este de 8 caractere.b. Primul caracter din numele unei variabile trebuie sa fie o litera.c. Urmatoarele caractere sunt rezervate si nu pot face parte din numele variablelor:

* - asterisc

Page 4: AUTOMAT Programabil

4

; - semicolon: - colon, - comma. - period" - double quote' - single quote& - and+ - plus sign- - minus sign

Trebuie retinut de asemenea ca nu se admit nume de variabile sau constante carecoincid cu numele variabilelor implicite asociate cu resursele sistemului.De exemplu este interzis sa definim o constanta cu numele A0, sau T2, sau XCNT,etc. In aceste situatii, compilatorul va genera un mesaj de eroare.

2.1.4. Definirea constantelor.

Restrictiile enumerate privind numele variabilelor sunt valabile si pentru constante.Constantele se definesc cu ajutorul unor "ecuatii", avand forma generala:

KNAME EQU [format]value

Unde KNAME este numele simbolic al constantei.[format] - este un sir de caractere care indica in ce format este codificata valoarea"value" care se asociaza cu KNAME.

Sunt permise urmatoarele formate:

a. Formatul zecimal - este cel implicit si nu necesita un identificator de format. Deexemplu:K1 EQU 123asociaza valoarea zecimala 123 numelui simbolic K1.

b. Formatul hexazecimal

K2 EQU $9A

c. Formatul binar

K3 EQU %10010110

d. Formatul ASCII

K4 EQU "A"

Page 5: AUTOMAT Programabil

5

2.2 CODIFICAREA RESURSELOR

Pe parcursul unui program, indicarea resurselor se face prin asocierea cu un set devariabile, dupa cum urmeaza:

a. Intrarile digitale sunt notate I0-I7 si sunt de tip boolean.b. Intrarile digitale pot fi privite ca grup, formand un octet, asociat cu variabila de

tip intreg IG (input group).c. Intrarile analogice sunt notate A0-A7 si sunt de tip intreg (octet).d. Iesirile sunt in numar de 16, notate O0-O15 si sunt de tip boolean.e. Pentru cresterea vitezei si reducerea dimensiunilor programului, iesirile pot fi

controlate si in grupuri de cate 8. In acest scop, s-au definit variabilele de tipintreg OGL (Output Group Low O0-O7) si OGH (Output Group High O8-O15). Modificarea prin program a acestor variabile conduce la modificareaautomata a intregului grup de iesiri asociat cu variabila.

f. Memoriile de tip intreg (octet) sunt in numar de 16 si sunt notate M0-M15g. Timerele sunt in numar de 8, notate T0-T7. Acestea pot fi "incarcate" cu o

valoare intreaga intre 0 si 255, dupa care sunt automat decrementate, pana lazero, la intervale de timp precise, egale cu cuanta de timp asociata timerului.

Cuantele de timp sunt predefinite dupa cum urmeaza:

T0,4MST1,4MST2,4MST3,100MST4,100MST5,100MST6,2ST7,1M

h. Numaratoarele de 8 biti CNT0-CNT3. Pot fi incarcate cu o valoare intreaga inplaja 0-255 si decrementat pana la zero prin program.

Fiecare numarator CNT0-CNT3 are asociat un flag ZCNTi (i=0-3), care esteautomat setat la valoarea TRUE cand numaratorul contine zero.De asemenea, fiecarui numarator CNTi (i=0-3) i se asociaza o variabila XCLKi(i=0-3) cu urmatoarea semnificatie:Daca XCLKi=TRUE, CNTi numara pe ceas extern.Daca XCLKi=FALSE, CNTi poate fi decrementat numai prin program.

a. Flag-ul de conditie ZFLG, este o celula de memorie de tip boolean, cuurmatoarele particularitati:

1. Este automat modificata de instructiunile TEST, COMPARE si de instructiunilearitmetice. ZFLG=T daca rezultatul ultimei operatii este zero.

Page 6: AUTOMAT Programabil

6

2. Este testata inainte de executarea unor instructiuni de salt conditionat. Saltul seexecuta sau nu in functie de valoarea acestui flag.

3. Flag-ul de conditie NFLG este similar cu ZFLG, cu deosebirea ca este setatnumai daca rezultatul ultimei instructiuni de comparatie sau scadere estenegativ.

In afara de resursele enumerate mai sus, mai exista cateva resurse speciale:

Numaratorul de evenimente externe XCNT. Acesta poate fi adus la zero prinprogram, dupa care numara crescator impulsurile aplicate pe o intrare speciala amodulului. Valoarea maxima pe care o poate contine acest numarator este 65535.Cei doi octeti ai XCNT sunt asociati cu variabilele XCLTH si XCNTL, care suntresurse generale de sistem.

Interfata seriala SCI (Serial Communication Interface) este o resursa speciala alcarui mod de folosire va fi descris in paragrafele urmatoare.

Page 7: AUTOMAT Programabil

7

2.3. SETUL DE INSTRUCTIUNI

2.3.1. Instructiunile de tip STORE (memorare)

Au sintaxa generala: STORE <src> , <dest>

Unde <src> este identificatorul pentru sursa operatiei de memorare, iar <dest>este identificatorul pentru destinatia transferului.Aceste instructiuni au ca efect modificarea valorii variabilei indicate ca destinatie,care capata in urma instructiunii valoarea avuta in acel moment de variabilaindicata ca sursa. Sursa nu este afectata.

In principiu, <src> si <dest> pot fi oricare din resursele sistemului, sau oriceconstanta definita in cursul programului.Totusi trebuie avute in vedere urmatoarele aspecte:

a. Instructiunile de tip STORE in care sursa si destinatia sunt identice suntacceptate de compilator si se executa, dar nu au nici un efect.

b. Instructiunile de tip STORE in care destinatia specificata este o constanta, vorgenera mesaj de eroare.

c. Instructiunile de tip STORE in care destinatia este variabila asociata cu o intrarea sistemului, sunt acceptate de copilator si se vor executa, dar nu vor avea niciun efect, pentru ca valoarea memorata va fi imediat suprascrisa cu valoareaintrarii respective.

d. In principiu, sursa si destinatia specificate intr-o instructiune de tip STOREtrebuie sa fie de acelasi tip (ambele booleene sau ambele intregi). Sunt totusipermise (nu se genereaza mesaje de eroare) transferuri de valori intre variabilede tipuri diferite, cu precizarea ca o variabila booleana este considerata caavand valoarea logica T (TRUE) daca are orice valoare diferita de zero. Similar,daca se transfera valoarea logica T intr-o variabila de tip intreg, valoareaacesteia va fi 255.

e. Sursa si destinatia nu pot fi ambele constante.

Exemple:

STORE I0,O1 ;va transfera valoarea logica a intrarii I0 la iesirea I1 STORE 20,T0 ;incarca timer-ul T0 cu valoarea zecimala 20 STORE M0,20 ;va genera un mesaj de eroare STORE A0,M1 ;salveaza valoarea intrarii A0 in celula de memorie B1

2.3.2. Instructiunile de tip COMPARE

Au sintaxa generala COMPARE <src> , <dest>Unde src si dest au semnificatia descrisa mai sus.Efectul instructiunii COMPARE este urmatorul:

Page 8: AUTOMAT Programabil

8

Cele doua variabile/constante specificate ca sursa si destinatie sunt comparate,prin scadere, fara a fi modificate, si daca sunt egale se seteaza ZFLG. Simultanse seteaza un flag suplimentar NFLG care indica faptul ca sursa este mai micadecat destinatia, ceea ce este echvalent cu rezultat negativ.Sunt valabile toate restrictiile privind operanzii enumerate la instructinea STORE,cu exceptia faptului ca in cazul COMPARE sunt permise ca destinatie siconstantele.

2.3.3. Instructiunile de TEST

Acestea sunt un caz particular de COMPARE, care se executa mai repede siocupa un singur octet.Sintaxa generala a acestora este:

TEST dest

Ca destinatii ale instructiunilor de test se admit urmatoarele:

I0 - I7 - intrarile digitale T0 - T7 - timerele

Spre deosebire de COMPARE, instructiunile de TEST afecteaza doar flagul ZFLGin modul urmator:a. ZFLG este setat la valoarea TRUE, daca intrarea specificata este activa inmomentul testului.b. ZFLG este setat la valoarea TRUE, daca timerul testat a expirat (a ajuns la

zero).c. NFLG nu este afectat.

2.3.4. Instructiunile de salt

2.3.4.1. Saltul neconditionat JUMP <label>

Are ca efect trecerea neconditionata a controlului programului la instructiuneaindicata de eticheta <label>.Eticheta este un marker care individualizeaza o anumita linie de program, inscopul identficarii destinatiei unui salt.Numele etichetelor trebuie sa inceapa cu o litera.Sunt valabile restrictiile specifciate in cazul numelor de variabile si constante.In cazul in care numele etichetei spcificate intr-o instructiune de salt nu este gasitanicaieri in program, se genereaza un mesaj de eroare,

2.3.4.2. Saltul conditionat JEQSintaxa: JEQ <label>

Page 9: AUTOMAT Programabil

9

Spre deosebire de instructiunea de salt neconditionat JUMP, in cazul instructiuniiJEQ, saltul se executa numai daca flagul de conditie ZFLG este setat la valoarealogica 1 (TRUE). Daca ZFLG=0 (FALSE), atunci saltul nu se executa si programulcontinua cu instrctiunea care urmeaza dupa instructiunea JEQ.Reamintim ca flagul ZFLG este modificat de toate instructiunile COMPARE, TEST,de instructiunile aritmetice (vezi mai jos) si de instructiuni de tipulSTORE src,ZFLG.

2.3.4.3. Instructiunea JNE - Jump if Not Equal

Sintaxa: JNE <label>Este similara cu JEQ, dar saltul se executa daca ZFLG=0.

2.3.4.4. Instructiunea JPL - Jump if PLus.Sintaxa: JPL <label>Saltul se executa daca la ultima instructiune COMPARE src,dest sursa a fost maimare decat sau egala cu destinatia.

2.3.4.5. Instructiunea JMI - Jump if MInus.Sintaxa: JMI <label>Saltul se executa daca la ultima instructiune COMPARE src,dest sursa a fost maimica decat destinatia.Nota: Zero este numar pozitiv.

2.3.5. Instructiuni de apel si intoarcere din subrutina.

2.3.5.1. Instructiunea de salt la subrutina: CALL

Are sintaxa: CALL <label>

La recunoasterea instructiunii CALL, sistemul executa un salt neconditionat lainstructiunea indicata de marker-ul <label>. La intalnirea unei instructiuni RETURN(intoarcere din subrutina), se executa un salt in program, inapoi la instructiuneaaflata imediat dupa CALL.

2.3.5.2. Instructiunea de intoarcere din subrutina RETURN.Nu necesita operand. Adresa de intoarcere este automat salvata inainte deexecutarea unui CALL.

Observatii:

a. Nu sunt permise imbricari de apeluri la subrutine - apelul unei subrutine din alta.b. Este obligatoriu ca o subrutina sa se termine cu o instructiune RETURN.

Exemplu:Se cere sa se scrie o subrutina care sa activeze iesirea O0 timp de o secunda.

Page 10: AUTOMAT Programabil

10

Programul principal

T EQU 255 ;definim valorile pentru TRUE siFALSEF EQU 0.......... CALL PULSEXXX: ..... ;adresa de intoarcere dupaexecutia subrutinei.....PULSE: STORE T,O0 STORE 250,T0 ;Initializeaza timerul T0 cuvaloarea 250P05: TEST T0 JNE P05 ;asteapta expirarea timpului STORE F,O0 RETURN

2.4. Instructiuni aritmetice.

Au sintaxa generala OPER <op1>,<op2>,<dest>

Unde OPER este identificatorul operatiei aritmetice de executat, iar <op1> si<op2> sunt operanzii, care pot fi oricare din resursele sistemului, iar <dest> estedestinatia rezultatului operatiei.

Note importante:

a. In cazul in care se indica drept operand al unei instructiuni aritmetice o variabilade tip boolean, acasta va fi interpretata ca un intreg cu valoarea 0 pentru F si 255pentru T.

b. Rezultatul operatiilor aritmetice este intotdeauna pe 16 biti si se depune in douacelule de memorie consecutive MSBR si ,dest>De exemplu:

ADD A0,M0,M1

Rezultatul adunarii este un intreg de 16 biti (doi octeti) din care:Octetul cel mai semnificativ se depune intotdeauna la MSBR.Octetul mai putin semnificativ se depune la <dest>.

c. In cazul instructiunilor aritmetice destinatie nu poate fi decat una din memoriileM0-M15.

Page 11: AUTOMAT Programabil

11

d. Flagurile de conditie ZFLG si NFLG sunt afectate corespunzator cu rezultatuloperatiei.

2.4.1. Adunarea.

Sintaxa generala:

ADD <op1>,<op2>,<dest>

2.4.2. Scaderea

Sintaxa generala:

SUB <op1>,<op2>,<dest>

2.4.3. Inmultirea

Sintaxa generala:

MUL <op1>,<op2>,<dest>

3. Instructiuni de definire a unor functii logice.

PLC816C permite definirea unor functii logice intre variabilele de sistem.Particularitatea esentiala a functiilor este ca, odata definite, acestea se vor executapermanent in background, actualizand permanent valorile destinatiilor, independentde traseul de executie a programului.

Sintaxa generala a instructiunilor de definire a functiilor este urmatoarea:

FNAME <op1>,<op2>,<dest>

Unde <dest> este destinatia valorii intoarse de functie, <op1> si <op2> suntoperanzii functiei, iar FNAME este identificatorul functiei, care poate fi unul dinurmatorii:

AND - functie SINAND - functie SI-NUOR - functie SAUNOR - functie SAU-NUXOR - functie SAU EXCUSIVCOMP - comparatie cu rezultat binar

Page 12: AUTOMAT Programabil

12

Operand al unei functii poate fi oricare din resursele sistemului. Nu se admit dreptoperanzi constante.Destinatii pentru functii nu pot fi decat memoriile M0-M15, sau iesirile O0-O15.In cazul functiei de comparatie, destinatia este setata la valoarea logica TRUEdaca <op1> este mai mare sau egal cu <op2>.

Numarul maxim de functii care se pot defini intr-o aplicatie este 12. Informatiilenecesare pentru definirea functiei sunt stocate intr-un buffer circular, astfel incat,daca prin program se definesc mai mult de 12 functii, informatiile despre functiile cunumarul de ordine 13,14,15 etc., vor suprascrie informatiile depre functiile cunumarul de ordine 0,1,2 etc.Din acest motiv, nu este permisa definirea functiilor intr-o bucla a programului carese va executa in mod repetat.

4. ETAPELE ELABORARII UNUI PROGRAM

Vom analiza etapele elaborarii unui program pornind de la un exemplu simplu.

Formularea problemei: Se cere sa se scrie un program care sa testeze permanentstarea unei intrari analogice si sa afiseze valoarea sa binara folosind 8 din cele 16iesiri ale automatului.

3.1. Analiza problemei

Se observa ca programul se poate reduce la o singura instructiune, daca alegemsa folosim unul din grupurile de iesiri predefinite OGH sau OGL.

STORE A0,OGL

Alocarea resurselor.

Este evident ca in cazul in care vom alege sa afisam valoarea citita pe intrareaanalogica, pe alte iesiri decat OGL sau OGH, problema se complica destul de mult.

3.3. Scrierea fisierului sursa a programului.

Se foloseste un editor de text ASCII (de exemplu editorul EDIT.COM din MS-DOS,NOTEPAD.EXE din Windows, sau altul similar) pentru a crea un fisier cu extensiaSRC, avand urmatorul continut:

* Program de afisare binara a valorii analogice de la intrarea A0START STORE A0,OGL ;asta-i tot

JUMP START ;actualizarea trebuie sa fiepermanenta

Page 13: AUTOMAT Programabil

13

Observatii privind sintaxa:

Etichetele de salt au nume care incep cu o litera1. Etichetele incep intotdeauna de la capatul unei linii.

Caracterele ';' si '*' definesc o zona de comentarii care va fi ignorata decompilatorSingurii delimitatori valizi intre campurile unei instructiuni sunt SPACE sauvirgula.Acest program, ca si marea majoritate a programelor pentru automateleprogramabile, este de fapt o bucla infinita, ultima intructiune fiind un saltneconditionat la inceputul programului.

3.4. COMPILAREA PROGRAMULUI

Compilarea se face cu ajutorul unui program special livrat in fisierul XPLC.EXE,impreuna cu automatul.

In cazul exemplului de mai sus compilarea se face lansand din linia de comandaDOS comanda:

XPLC TESTIO [ENTER]

Observam ca extensia este considerata implicit ca fiind .SRCIn urma compilarii rezulta doua noi fisiere: TESTIO.LST si TESTIO.BIN.

Fisierul de listare avand numele identic cu al fisierului sursa si extensia .LSTcontine toate informatiile (inclusiv mesajele de eroare, daca exista) obtinute inurma compilarii intr-un format usor de urmarit. Acesta este deosebit de util pentrudepistarea si corectarea erorilor.

Fisierul binar, avand numele identic cu al fisierului susrsa si extensia .BIN, continede fapt programul propriu-zis intr-un format inteligibil pentru microprocesorul cucare etse echipat automatul.Acesta se genereaza NUMAI in cazul cand compilarea s-a facut fara erori.

3.5. INCARCAREA PROGRAMULUI

Incarcarea programului se face prin intermediul interfetei seriale cu care e prevazutautomatul, cu ajutorul unui utilitar denumit TERM.EXE.

Etapele incarcarii programului.

3.5.1 Se lanseaza utilitarul TERM.EXE

Se verifica prezenta comunicatiei cu automatul, apasand tasta [ENTER].Automatul raspunde afisand prompter-ul debugger-ului care este '>'.

Page 14: AUTOMAT Programabil

14

Se incarca fisierul binar continand programul prin apasarea tastei [F3] urmata despecificarea numelui fisierului, impreuna cu extensia.Se apasa tasta [F5] ceea ce initiaza procesul de transfer al datelor.

Se asteapta reaparitia prompter-ului de dialog cu debugger-ul.

3.5.2 TESTAREA PROGRAMULUI

Odata incarcat, programul se lanseaza automat in executie. Testarea consta inactivarea intrarilor si asteptarea raspunsului automatului, in cazul exemplului demai sus activarea iesirilor corespunzator valorii intrarii analogice.

Deosebit de util pentru testarea programelor este regimul de executie Single Step.In acest regim, programul se executa intructiune cu instructiune, si se afiseaza laconsola, conectata la interfata seriala, starea tuturor resurselor precum si valoareacurenta a numaratorului de instructiuni PCNT.

Note:

a. Programul este incarcat intr-o memorie nevolatila de tip EEPROM, deci NU estenecesara reincarcarea programului de fiecare data cind se porneste automatul.

b. Lungimea maxima admisa pentru fisierul binar care contine programul este de512 octeti. Daca se incearca incarcarea unui fisier mai lung de 512 octeti,acesta va fi trunchiat la lungimea de 512.

4. REGULI DE SINTAXA LA SCRIEREA UNUI PROGRAM

Structura generala a unei linii de program poate fi una din urmatoarele:

4.1. Ecuatii:

SYMBOL EQU value

Prima structura este o "ecuatie" prin care unui simbol i se asociaza o valoarenumerica, exprimata in zecimal, ASCII, sau hexazecimal. In toate situatiile, limitasuperioara a valorii numerice asociate unui simbol este 255.

Exemple de folosire a ecuatiilor:

Sa consideram urmatorul program:

Page 15: AUTOMAT Programabil

15

K12 EQU 100 ;decimal value

LETTER EQU "A" ;ASCII value

HEXVAL EQU $41 ;hex value

START STORE K12,M0 STORE LETTER,M1

STORE HEXVAL,M2......

Primele trei linii ale programului din exemplul de mai sus sunt ecuatii cu constantadefinita in toate modurile posibile.Prima ecuatie asigneaza simbolului K12 valoarea zecimala 100.

A doua ecuatie, asigneaza simbolului LETTER valoarea ASCII a literei A. Deretinut faptul ca simbolul ASCII trebuie inclus in ghilimele.

In final, a treia ecuatie, asigneaa simbolului HEXVAL valoarea hexazecimaa 41H.Si in acest caz este de retinut ca valoarea hexazecimala trebuie precedata de $.

Observatii:

1. Literele folosite in numele simbolului de la stanga a unei ecuatii pot fi litere marisau mici. Inainte de a le lua in consideratie, compilatorul le converteste automat lauppercase. Cu alte cuvinte, simbolurile LettER, leTTER, LETTER sunt identice.

2. O ecuatie de forma:

K12 EQU 1000

va genera un mesaj de eroare, pentru ca valoarea numerica specificata este maimare decat 255.

4. Nu se pot folosi constante de tip string. Tentativa de a asigna unui simbol oconstanta de tip sir, va genera un mesaj de eroare, ca in exemplul de mai jos:

LETTER EQU "SIR DE LITERE" ; eroare

4.2. Linii de program cu structura :

LABEL INSTRUCTIUNE OPERAND ;comentarii

Descrierea campurilor unei instructiuni:

Campul LABEL este un nume simbolic care se ataseaza liniei respective deprogram, pentru a permite referirile ulterioare in cazul instructiunilor de salt.

Page 16: AUTOMAT Programabil

16

Campul INSTRUCTIUNE contine numele simbolic al instructiunii, asa cum a fostdescris la capitolul 2. SETUL DE INSTRUCTIUNI.Campul OPERAND este prezent doar la cateva instructiuni cum ar fi TEST, JUMP,CALL. Operanzii pot fi sau valori numerice, exprimate direct, sau constante definiteanterior cu ajutorul unor ecuatii, cu precizarea ca in cazul salturilor nu se admitoperanzi constante.

Exemple:

Sunt permise expresii de genul:

STORE 100,T0 COMPARE A0,123

Nu sunt permise in schimb, valori numerice ale adreselor de salt:

JUMP 100 ;va genera un mesaj de eroare

Salturile vor face referire numai la o valoare simbolica definita printr-o eticheta.Omisiunea de a specifica operandul, atunci cand acesta este necesar, va genaramesaj de eroare.

STORE M0 ;va genera mesaj de eroareJUMP ;va genera mesaj de eroare

Campul comentarii este optional, si a fost prevazut, pentru comoditatea lecturii unuiprogram. Este necesar ca acest camp sa fie inceput cu unul din caracterele punctsi virgula, (colon) sau asterisc.Campul de comentarii este ignorat de compilator.Campul de comentarii poate cuprinde intreaga linie, sau se poate extinde pe maimulte linii, cu conditia ca fiecare din liniile de comentariu sa inceapa in coloana 0cu unul din caracterele enumerate mai sus.

4.3. CONCLUZII SI RECOMANDARI PRIVIND SINTAXA

a. Singurele caractere de delimitare valide intre campurile unei linii de programsunt SPACE, TAB, virgula.

b. Este obligatoriu ca ecuatiile sa fie definite la inceputul programuluic. Este obligatoriu ca simbolurile din membrul stang al ecuatiilor si etichetele de

salt sa fie definite incepand chiar cu capatul randului (coloana 0).d. Desi nu este obligatoriu, este recomandabil sa se foloseasca numai litere mari

la scrierea unui program.

5. DEBUGGER-ul sistemului. Functiuni si comenzi.

Pentru a facilita depanarea programelor, sistemul PLC816C a fost prevazut cu un

Page 17: AUTOMAT Programabil

17

debugger, plasat in ROM, care se executa in paralel cu programul utilizatorului sipoate furniza acestuia, prin intermediul interfetei seriale, informatii despre starea deexecutie a programului.

Activarea debugger-ului se face plasand jumper-ul J14 in pozitia ON. (jumperprezent).Comunicarea cu computer-ul se face pe linia seriala. Parametrii de comunicatiesunt fixati la 19200,N,8,1 - 19200 baud, 8 biti de date, fara paritate, un bit de stop.

Pentru a folosi debugger-ul sunt necesare urmatoarele:

- Un computer, avand un port serial disponibil.- Un program de comunicatie seriala. PLC816C este insotit de programul

TERM.EXE, care asigura intre altele si functia de emulator de terminal ASCII.- Un cablu de comunicatie seriala. Vezi in ANEXE descrierea acestui cablu.

La punerea sub tensiune functiunile debugger-ului sunt activate. In acest cazinterfata seriala va fi folosita de debugger in paralel cu programul utilizatorului. Insituatiile cand aplicatia foloseste interfata seriala, debugger-ul trebuie dezactivat.

Cand debugger-ul este activ el emite la consola un "prompter" - caracterul ">"afisat la capat de rand, dupa care asteapta o comanda de la utilizator.O comanda este un sir de caractere avand o anumita structura, ternimate cuapasarea tastei [ENTER].Debugger-ul admite mai multe comenzi, care sunt rezervate pentru testari lafabricant. Din punctul de vedere al utilizatorului, singura comanda de interes estecomanda SS.

SS [ENTER]

Este prescurtarea de la Single Step – pas cu pas.

Programul utilizatorului este executat pas cu pas, afisandu-se la fiecare pas starearesurselor sistemului. Pentru a executa un pas, sistemul astepta apasarea tastei[ENTER]. Comanda este parasita la apasarea tastei [.]

Lansarea comenzii SS cauzeaza intreruperea executarii normale a programului,care este reinceput de la prima adresa.

Page 18: AUTOMAT Programabil

18

6. EXEMPLE DE SITUATII TIPICE DE PROGRAMARE

a. Asteptarea confirmarii executiei unei comenzi.Foarte frecvent, in practica apare necesitatea verificarii daca o anumita comandalansata catre un element de executie, s-a executat intr-adevar. In caz contrarautomatul nu trebuie sa ramana blocat in asteptarea confirmarii respective, ci saavertizeze operatorul pentru remedierea situatiei si sa permita reluarea operatiunii.

Sa presupunem ca iesirea O0 este folosita pentru a comanda o pompa, iar intrareaI0 este conectata la un senzor de presiune. Instalatia nu trebuie sa porneascainainte de a se primi confirmarea faptului ca s-a realizat o anumita presiune.Programul care realizeaza aceasta secventa poate arata in felul urmator:

STORE 50,T3 ;50*0.1 sec=5 sec STORE T,O0 ; start pumpL0 TEST I0 ;check pressure

JEQ CONTTEST T3JEQ ERROR ;timer expired and no pressureJUMP L0

CONT .....................ERROR….......

Dupa cum se observa, s-a introdus un timer de 5 secunde, care este valoarealimita a timpului in care trebuie atinsa presiunea prescrisa. Se testeaza intaiconditia I0 si apoi timer-ul. Expirarea timerului fara a se fi realizat conditia I0,conduce la un salt la eticheta ERROR, unde se pot introduce semnalizari si conditiide reluare a ciclului.

b. Testarea unor conditii de avarie aparute ulterior pornirii sistemului.

Sa presupunem ca activarea oricareia din intrarile I4, I5 sau I7 pe durata catintrarea I2 este activa, reprezinta conditie de avarie, care necesita parasireaimediata a programului si oprirea masinii.Problema este deosebit de simplu de rezolvat, folosind instructiunile de definire sitestare a functiilor.

OR I4,I5,M0OR M0,I7,M1AND I2,M1,M2

Dupa cum se poate observa, M2 are valoarea logica 1 (TRUE) atunci cand esteactiva intrarea I2 si oricare din intrarile I4, I5, I7.Problema se rezolva definind functiile ca mai sus, undeva la inceputul programului,si testand valoarela luata de M2 in bucla de executie .

Page 19: AUTOMAT Programabil

19

c. Implementarea notiunii de STARE a unui automat finit.

Teoria matematica privind sinteza automatelor finite se bazeaza pe notiunea de'stare". Pentru usurinta intelegerii sa consideram un exemplu simplu.Se cere sa se proiecteze un automat cu trei stari si anume:

Starea S0 - de repaus, in care se asteapta o comanda de pornire pe intrarea I0.Starea S1 de mars, in care se actioneaza pe rand iesirile O0 si O1, cate osecunda. Starea S1 poate dura nedefinit de mult, pana la aparitia unei comenzi deoprire (intrarea I1) , sau pana la aparitia unei conditii de avarie definite ca inexemplul anterior.Starea S2 - de avarie, care se semnalizeaza prin activarea O7. Iesirea din strea deavarie se face prin actionarea de catre operator a intrarii I3

Iata programul care realizeaza aceste functiuni:OR I4,I5,M0OR M0,I7,M1AND I2,M1,M2

AND M2,T0,O0 ;daca nu e avarie si timerul e pornit ;seactioneaza iesireaAND M2,T1,O1NAND M2,M2,O7 ;daca e avarie se semnalizeaza pe O7

S0 TEST I0 ;asteptare nedefinita a comenzii de pornire JNE S0

S1 CALL REL0 ;activeaza iesirea O0 pentru o secunda CALL REL1 ;activeaza iesirea O1 pentru o secunda JUMP S1

S2 TEST I3 ;avarie - se astepta activarea I3 JNE S2 JUMP S0 ;iesirea din avarie prin starea S0

REL0 STORE 250,T0 ;valideaza actionarea iesirii O0.R0W COMPARE M2,0 ;verifica daca nu a aparut conditie deavarie JNE S2 TEST T0 JNE R0W RETURN

REL1 STORE 250,T1 ;valideaza actionarea iesirii O1.R1W COMPARE M2,0 ;verifica daca nu a aparut conditie deavarie JEQ S2 TEST T1 JNE R1W RETURN

Page 20: AUTOMAT Programabil

20

Observatii:

O "stare" a automatului programabil este o bucla de program, marcata de oeticheta. Trecerea dintr-o stare in alta se face printr-o instructiune de salt.

Page 21: AUTOMAT Programabil

21

7. Performante. Masuratori.

7.1. Timpul mediu de executie a unei instructiuni Tm.

Se considera urmatoarea secventa de program:

LOOP STORE 1,O0STORE 0,O0JUMP LOOP

Diagrama iesirii O0=f(t) este urmatoarea:

Valoarea masurata a Tm este 0.8 ms.

7.2. Timpul de mentinere a unei intrari Th.

Se considera urmatoarea secventa de program:

LOOP STORE I0,O0JUMP LOOP

Page 22: AUTOMAT Programabil

22

Rezulta urmatoarea diagrama de semnal:

Valoarea maxima masurata a timpului de mentinere Th este de 1 ms.Valoarea maxima masurata a intarzierii de prelucrare Td este egala cu Tm.

7.3. Timpul de executie a unei functii Tf.

Se considera urmatoarea secventa de program:

XOR M0,O0,O0…….

STORE $FF,M0

Page 23: AUTOMAT Programabil

23

Iesirea O0 va respecta urmatoarea diagrama de semnal:Valoarea maxima masurata pentru Tf este 0.4 ms.

8. Caracteristici electrice.

Tensiunea de alimentare Vpp=+12V +/- 5%.Curentul maxim absorbit, fara sarcina exterioara pe iesiri: 150 mA.Curentul maxim suportat de o iesire in regim stationar: Is=1A.Curentul maxim repetitiv (factor de umplere ½) suportat de o iesire: Ir=2A.Tensiunea maxima pe orice iesire: Vomax=20V.Tensiunea maxima pe orice intrare analogica Viamax: 5.1VTensiunea inversa maxima pe orice intrarea analogica Virmax: -0.6VCurentul minim pentru activarea unei intrari: Iimin=10mA.Frecventa maxima a semnalului aplicat pe intrarea de clock extern: Fxmax=1KHz.

Page 24: AUTOMAT Programabil

24

9. Protocolul de comunicatie seriala.

Cerinte pentru protocolul de comunicatie:1. Sa permita conectarea in retea pentru supraveghere/comanda a mai multormodule.2. Sa permita interogarea pe SCI a modulului asupra starii oricarei resurse.3. Sa permita controlul asupra tuturor resurselor.4. Din motive de simplitate accesul la resurse se va face la nivel de grup (octet) IG,OGL, OGH, A0-A7, XCNTH, XCNTL.5. Protocolul de comunicatie este destinat functionarii cu un computer master - sicu un program minimal pe PLC. Din acest motiv este inutil sa transmitem pe serialavalorile functiilor, a flagurilor etc.

Adresarea resurselor este urmatoarea:0-A01-A12-A23-A34-A45-A56-A67-A78-IG9-XCNTHA-XCNTLB-OGHC-OGL

Structura pachetelor de date transmise pe linia seriala.

Structura unui frame de comanda/interogare emis de MASTER

BUF+0 - STX - caracter de sincronizare BUF+1 - ADRA0 - adresa slave 1 digit ascii BUF+2 - ENQ/ESC - interogare/comanda BUF+3 - ADRR - adresa resursei BUF+4 - VH - noua valoare (upper half byte) BUF+5 - VL - noua valoare (lower half byte) BUF+6 - CRC-H cei doi semiocteti ai CRC BUF+7 - CRC-L BUF+8 - EOT

Cand [BUF+2]=ESC slave-ul recunsoaste un frame de comanda.O executa si trimite un frame de tip ACK.Cand [BUF+2]=ENQ slave-ul recunoaste un frame de interogare si trimite unframe de raspuns cu structura descrisa mai jos.

Page 25: AUTOMAT Programabil

25

NAK apare atunci cand in frame-ul de interogare s-a recunoscut adresa corecta darapare eroare CRC.CRC-ul este suma octetilor intre BUF+0 si BUF+5.

Structura unui frame de raspuns emis de SLAVE

BUF+0 - STX - caracter de sincronizare BUF+1 - ADRA0 - adresa slave 1 digit ascii BUF+2 - ACK/NAK BUF+3 - ADRR - adresa resursei BUF+4 - VH - valoarea ceruta (upper half byte) BUF+5 - VL - valoarea ceruta (lower half byte) BUF+6 - CRC-H cei doi semiocteti ai CRC BUF+7 - CRC-L BUF+8 - EOT

In cazul unui frame de comanda, VH si VL trimis de slave repeta comanda de lamaster.