Documente Academic
Documente Profesional
Documente Cultură
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.
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).
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
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.
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.
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.
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
E10 (A)
Exemplu. Fie circuitul secvenial cu dou intrri (x1 i x2) i o ieire E (structura circuitului secvenial este prezentat n figura urmtoare):
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
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
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
____________________
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
______________________________ se nchide bucla de reacie a circuitului secvenial prin transferul 410 (Y1) 401 (y1) 420 (Y2) 402 (y2)
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.