Sunteți pe pagina 1din 26

2.7.

Seturi de instruciuni pentru automate programabile


Pentru programarea automatelor programabile exist dou modaliti importante: 1. programarea utiliznd setul de instruciuni al automatului programabil; 2. programarea grafic, care la rndul ei se bazeaz pe una din metodele: metoda ladder metoda Grafcet. Mai nou productorii de automate programabile au dezvoltat sau dezvolt limbaje de programare apropiate de limbajele de programare a calculatoarelor sau apropiate de limbajul natural.

Modalitatea de programare a unui automat programabil bazat pe setul de instruciuni al automatului programabil. Orice automat programabil prelucreaz informaii conform setului su de instruciuni. Alegerea acestui set este o operaie foarte important n proiectarea i realizarea unui automat programabil, trebuind pe de o parte s nu ridice utilizatorului probleme de asimilare, iar pe de alt parte s asigure performanele propuse de prelucrarea i transferul datelor, cu minimizarea hardware-ului necesar implementrii.

Automatul programabil nu poate executa dect programe ale cror instruciuni sunt codificate n binar, adic n cod main. Deoarece ar fi extrem de incomod i greoi s se programeze n cod main, au fost dezvoltate limbaje de programare. Totodat, exist programe disponibile care convertesc instruciunile din limbaj de programare n cod main, interpretabile de automatul programabil. Un tip de limbaj de programare este limbajul de asamblare. Fiecrei instruciuni dintr-un set al unui automat programabil, i se asociaz o mnemonic (reprezentare alfanumeric) unic a limbajului de asamblare. Programatorul poate s scrie un program (denumit program surs) utiliznd aceast mnemonic i operanzii sau adresele asociate. Programul surs este convertit n instruciuni main (denumit cod obiect). Fiecare instruciune din limbajul de asamblare este convertit n una sau mai multe instruciuni n cod main, de un program de asamblare.

Formatul general al unei instruciuni n cod obiect este:


Cod instruciune DATE / ADRES

m bii m + p = n bii

p bii

El conine dou cmpuri: codul instruciunii reprezentat pe m bii (valori uzuale pentru m: 4, ..., 8) i valoarea decodificat a adresei operandului curent (de intrare, ieire, memorat temporar) sau a locaiei din memoria program la care se execut un salt sau o dat imediat (de tipul valorii temporizrii). Cele dou cmpuri sunt exprimate pe n bii (valori uzuale pentru n = 16, 18, 19, 20).

Cmpul Cod instruciune (sau cod operaie) poate conine i

referiri la modul de adresare specific instruciunii curente, adic la modul n care adresa pe cei p bii s fie interpretat (adresare direct sau adresare indexat). La unele automate programabile este posibil extensia

domeniului de adresabilitate peste valoarea 2p prin structurarea


memoriei program n pagini.

Execuia unei instruciuni este definit de un ciclu instruciune, care conine uzual un singur ciclu main (sau mai multe n cazul APB cu UL microprogramate). Pe durata unui ciclu main sunt executate urmtoarele subcicluri: 1. Ciclul de extragere (FETCH) Unitatea central a automatului programabil furnizeaz adresa unei instruciuni aflate ntr-o locaie a memoriei program prin intermediul unui registru de adrese al memoriei, denumit i numrtor program NP. Adresa este decodificat i instruciunea este citit (extras) din memorie i depus n registrul de date al memoriei, denumit i registru de instruciuni RI. 2. Ciclul de execuie Instruciunea este decodificat i operaiunea cerut este executat.

2.7.1. Instructiuni de procesare de bit


Seturile de instruciuni de procesare de bit difer ntre automatele programabile de la diferii productori, dar sunt similare din punct de vedere al aciunilor realizate. De asemenea codificarea variabilelor (de intrare, de ieire, de memorie etc.) difer de la productor la productor. Instruciunile de procesare de bit ale unui automat programabil sunt, n general, urmtoarele: a) Instruciuni de testare i transfer Instruciunile de testare detecteaz schimbrile de stare ale semnalelor de intrare, ieire sau memorate temporar i preiau aceste schimbri prin memorarea valorii testate n registrul acumulator. Pe magistrala I/E a automatului programabil poate fi vehiculat starea normal sau complementat a semnalului testat, pentru ca ntr-un singur ciclu instruciune s poat fi preluat aceast valoare.

Cmpul de adres al instruciunilor de testare, transfer i prelucrri logice este format din doi bii ce specific sursa sau destinaia operandului (intrare, ieire, memorie RAM de date, bloc numrare/temporizare) i dintr-un numr de bii ce codific adresa fizic a operandului. Pentru aceste instruciuni formatul n cod main poate fi de forma:
Cod instruciune Sursa sau destinaia operandului Adresa operand

m biti

2 biti

(p-2) biti

De exemplu, pentru automatul programabil AP-MICRO realizat de Automatica S.A. Bucureti: m = 4 bii, p=12 bii, sursa sau destinaia operandului sunt codificate astfel: 00 - definesc o variabil de intrare; 01 - definesc o variabil de ieire; 11 - definesc o variabil intern din memoria RAM de date; 10 - definesc o variabil de numrare/temporizare.

AP-MICRO are un set de 16 instruciuni. Fiecare instruciune este


format dintr-un simbol (mnemonica) i un operand. Mnemonica definete coninutul operaiei, iar operandul definete variabila cerut de operaie. Operandul va fi de forma: I nnn - pentru variabile de intrare; nnn este ntre 000 i 063

E nnn - pentru variabile de ieire; nnn ntre 000 - 023 i 032 - 055
- pentru variabile de memorie; nnn ntre 024-031 i 056-063 M nnn - pentru variabile de memorie; nnn ntre 000 - 511 T nnn - pentru variabile de temporizare; nnn este ntre 000 - 007 i 032.

Instruciunile de testare pentru AP-MICRO sunt: LD, LDC. Instruciunile de transfer: STO, STOC, S, R.
LD X nnn LDC X nnn Aceste instruciuni ncarc starea direct (LD) sau negat (LDC) a operandului Xnnn n bistabilul de stare (acumulatorul A) al unitii logice. Operandul Xnnn poate fi un canal de intrare, temporizare, variabil de memorie sau imaginea unei ieiri. STO X nnn STOC X nnn Aceste instruciuni realizeaz transferul acumulatorului A, starea direct (STO) sau negat (STOC) la operandul Xnnn care poate fi o variabil de ieire, temporizare sau variabil de memorie.

S X nnn R X nnn Prin aceste instruciuni operandul X nnn este forat n starea "1" logic (S), respectiv "0" logic (R) dac acumulatorul A este n starea "1" logic. Dac A este n starea "0" logic, instruciunile S i R sunt ignorate, determinnd incrementarea numrtorului de adres la adresa urmtoare. b) Instruciuni de prelucrare logic Instruciunile de prelucrare logic pentru AP-MICRO sunt: AND, ANDC, OR, ORC, XOR, ZA, CMA AND X nnn ANDC X nnn Instruciunile realizeaz funcia logic I ntre coninutul acumulatorului A i operand (AND) sau complementul operandului (ANDC). Operandul poate fi un canal de intrare, temporizare, o variabil de memorie sau o imagine a ieirii. Rezultatul operaiei este transferat n acumulator.

OR X nnn ORC X nnn Instruciunile realizeaz funcia logic SAU ntre coninutul acumulatorului A i operand (OR) sau complementul acestuia (ORC). Operandul poate fi un canal de intrare, de temporizare, o variabil a memoriei de date sau imaginea unei ieiri. Rezultatul operaiei este transferat n acumulator. CMA ZA Sunt instruciuni asociate bistabilului de stare A (acumulatorului). CMA complementeaz coninutul acumulatorului. Instruciunea ZA aduce acumulatorul n starea "0" logic.

XOR X nnn Instruciunea realizeaz funcia "SAU-EXCLUSIV" ntre coninutul acumulatorului i operandul X nnn. Rezultatul operaiei este transferat n acumulator.

c) Instruciuni de salt Instruciunile de salt pentru AP-MICRO sunt: JMP, JC. JMP mmmm JC mmmm Instruciunile JMP i JC provoac salt n desfurarea programului la adresa mmmm. JMP provoac saltul necondiionat, iar JC este condiionat de acumulator. Dac A este n "1" logic, se execut saltul la adresa mmmm, iar dac A este "0" logic, se execut instruciunea urmtoare. Saltul condiionat se poate face ctre adrese de program mai mari fa de cea la care este scris instruciunea JC (adic permite salt nainte). Adresa de salt pentru instruciunea JMP trebuie s fie mai mic ca adresa la care se gsete instruciunea JMP (adic permite salt napoi).

Ultima instruciune a automatului programabil AP-MICRO este instruciunea NOP. Aceast instruciune este inoperant, ea determinnd incrementarea numrtorului de adrese i pregtind execuia instruciunii urmtoare.

2.7.2. Implementarea funciilor combinaionale de comand


Una dintre cele mai simple sarcini de rezolvat pentru un automat programabil este implementarea funciilor de comand combinaionale. n continuare se va exemplifica acest lucru. Fie un proces simplu, combinaional ale crui funcii de comand F1 i F2 sunt date de urmtoarele expresii (fiind dependente de patru variabile a, b, c, d):

Pentru nceput se vor implementa aceste funcii cu ajutorul

automatului programabil AP-MICRO. Se aloc variabile specifice


acestui automat pentru intrrile a, b, c, d i pentru ieirile F1 i F2.

Intrri Cod AP Ieiri Cod AP

a I1 F1 E10

b I2 F2 E20

c I3

d I4

Pentru memorarea unor rezultate intermediare se vor folosi variabile de memorie M1, M2 .a. Urmeaz realizarea programului care implementeaz funciile de comand combinaionale:

Adres Instruciune 0000 LD 0001 AND 0002 STO 0003 LDC 0004 AND 0005 OR 0006 STO

Operand Comentariu I1 acumulator (A) variabila I1 I2 (A) (A) I2 M1 M1 (A) I1 (A) variabila I1 negat I3 (A) (A) I3 M1 (A) (A) + M1 M2 M2 (A)

0007 0008 0009 0010 0011 0012 0013 0014 0015 0016 0017 0018 0019

LDC AND OR STO LD ANDC OR STO LD OR AND STO JMP

I2 I4 M2 E10 I2 I3 I1 M10 I1 I4 M10 E20 0

E10 (A)

E20 (A) salt necondiionat la adresa 0

Variabila de memorie M1 a fost folosit pentru a memora primul


produs logic al funciei F1, iar variabila de memorie M2 pentru a memora suma logic a primelor dou produse logice din F1. Variabila de memorie M10 a fost folosit pentru a memora rezultatul sumei logice din prima parantez a funciei F2.

Rularea ciclic este asigurat prin faptul c programul se ncheie


cu instruciunea JMP 0, unde adresa 0 reprezint adresa de nceput a programului (echivalent cu 0000).

2.7.3. Implementarea funciilor secveniale de comand


O alt sarcin posibil de rezolvat pentru un automat programabil este implementarea funciilor de comand secveniale. n

continuare se va exemplifica acest lucru.


Implementarea unui circuit secvenial presupune realizarea programului astfel: realizarea subprogramului de iniializare, care presupune iniializarea tuturor variabilelor de memorie cu valorile date;

realizarea programului de simulare propriu-zis a circuitului


secvenial (se implementeaz funciile secundare i ieirile i se reactualizeaz variabilele secundare).

Exemplu. Fie circuitul secvenial cu dou intrri (x1 i x2) i o ieire E (structura circuitului secvenial este prezentat n figura urmtoare):

Fie condiiile iniiale pentru variabilele secundare:


y1 (0) = "0" i y2 (0) = "1".

Din circuitul secvenial dat se pot scrie expresiile funciilor secundare i funciei de ieire.

Pentru intrri, ieire, variabile secundare i funcii secundare se vor aloca variabile specifice automatului programabil FA-1J:
Intrri x1 1 i x2 2 Ieirea E 200 Variabile secundare y1 401 i y2 402 Funcii secundare Y1 410 i Y2 420 Variabila de iniializare 10

Programul de simulare a circuitului logic secvenial specificat arat asfel:


0 LOD 10 se ncarc n (A) variabila de ini. 10 1 FUN 300 dac (A) = "1" se face salt 2 7 la adresa 7, dac nu, se continu ----------------------------------------------------------------------------------3 LODN 10 4 SET 402 subprogramul de iniializare 5 RST 401 a variabilelor secundare 6 END -----------------------------------------------------------------------------------

7 8 9 10 11 12 13 14 15 16 17 18 19

LOD ANDN LOD AND ANDN ORLOD LODN AND ORLOD LODN AND ORLOD OUT

401 402 1 2 402


1 401 implementarea funciei secundare Y1

2 401
410 ____________________

20 21 22 23 24 25 26 27 28 29 30

LODN ANDN LOD AND AND ORLOD LOD AND AND ORLOD OUT

1 2 1 2 401
1 401 402 420

implementarea funciei secundare Y2

____________________

31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

LODN 2 ANDN 401 LODN 1 AND 2 AND 401 ORLOD LOD 1 ANDN 2 ANDN 402 ORLOD OUT 200 LOD 410 OUT 401 LOD 420 OUT 402 END

implementarea funciei de ieire

______________________________ se nchide bucla de reacie a circuitului secvenial prin transferul 410 (Y1) 401 (y1) 420 (Y2) 402 (y2)

Diagramele K-V pentru funciile secundare Y1 i Y2 i pentru ieirea E sunt:

Observaie. Strile ncercuite reprezint stri stabile, iar cele nencercuite reprezint stri instabile. Sgeile reprezint modul de evoluie din strile instabile n cele stabile. Se poate observa un ciclu pe coloana a treia, lucru nedorit n funcionarea unui circuit de comand secvenial. n acest subcapitol s-a dorit doar implementarea i analiza unui circuit secvenial cu un automat programabil, nu i proiectarea sa.