Numărător de evenimente folosind automatul programabil AP MICRO (exemplu) Temă Să se realizeze sinteza unui numărător de evenimente externe folosind AP MICRO. Numărul iniţial de evenimente (selectabil de la 1 la 9) ce trebuie contorizate va fi încărcat în numărător prin poziţionarea a 4 comutatoare de intrare, combinaţie validată de operator prin apăsarea unui buton de tip impuls. Evenimentele sunt marcate prin trecerea la 1 a unui semnal extern. Starea numărătorului va fi afişată permanent pe un afişor cu 7 segmente. 1. Structura bloc şi alocarea variabilelor I1 I0 I6 I5 I4 I3
D C B A
E1
CD
CL
NUM LD
QD QC QB QA
AF 7s
DCD E7
I2
I0 I1 I2 I3 I4 I5 I6
INTRĂRI Comandă Clear Semnal de contorizat Comandă Load
E0 E1 E2 E3 E4 E5 E6 E7
Intrări de încărcare (I6 = MSB)
IEŞIRI Semn. Eroare Load
Ieşiri comandă afişor cu 7 segmente (a - g = E1 - E7)
Semnalul CL (Clear) aplicat prin canalul de intrare I0 de la un buton de tip impuls nu trebuie derivat; automatul va parcurge un program de tip Reset atât timp cât butonul este apăsat (I0 = 1). Semnalul CD (Count Down) care trebuie contorizat, se va deriva (prin introducerea unor stări inactive) pentru a se detecta numai fronturile pozitive ale acestuia; semnalul I1 este considerat numai dacă numărătorul nu se află în starea 0 (M0). Semnalul LD (Load), activ pe 1, va fi operaţional (va determina parcurgerea programului de încărcare) numai dacă numărătorul cu decrementare se află în starea 0 (marcată prin locaţia de memorie M0). Semnalizarea intermitentă "Eroare Load" va indica faptul că la intrările de date este aplicată o combinaţie interzisă (care desemnează un număr mai mare ca 9). -1-
2. Organizarea generală a programului RUN
1
I0 Clear
0 I6 ... I3
I1 0
RES
I2 Load
1
LD
CD
DCD AF J0
3. Reprezentarea programului Load (Încărcare) Condiţie Load: I2 ⋅ M0 Condiţii de înscriere a locaţiilor de memorie la încărcare: M0 = I6 ⋅ I5 ⋅ I4 ⋅ I3 M1 = I6 ⋅ I5 ⋅ I4 ⋅ I3 M2 = I6 ⋅ I5 ⋅ I4 ⋅ I3 M0 M1 M3 = I6 ⋅ I5 ⋅ I4 ⋅ I3 M4 = I6 ⋅ I5 ⋅ I4 ⋅ I3 M4 M5 X X M5 = I6 ⋅ I5 ⋅ I4 ⋅ I3 M6 = I6 ⋅ I5 ⋅ I4 ⋅ I3 M8 M9 M 7 = I 6 ⋅ I 5 ⋅ I 4 ⋅ I 3 I5 I6 M8 = I6 ⋅ I5 ⋅ I4 ⋅ I3 M9 = I6 ⋅ I5 ⋅ I4 ⋅ I3
I3 I4 M3 M2 M7 M6 X
X
X
X
Semnalizare intermitentă "Eroare Load" (vezi diagrama Karnaugh): E0 = I2 ⋅ I6 ⋅ (I5 + I4) ⋅ T32 -2-
I6·I5 I6·I4
4. Reprezentarea programului CD (Count Down)
M9
I1
M8 I1
M18
I1
M7 I1
M17
I1
M6
I1
M1 I1 I1
M11
M0
5. Reprezentarea programului DCD/AF (decodificare şi afişare) Corespondenţa stare - ieşire: E1 E6
E7
E2 E3
E5 E4
M0 M1 M2 M3 M4 M5 M6 M7 M8 M9
E1 1 0 1 1 0 1 1 1 1 1
E2 1 1 1 1 1 0 0 1 1 1
E3 1 1 0 1 1 1 1 1 1 1
E4 1 0 1 1 0 1 1 0 1 1
E5 1 0 1 0 0 0 1 0 1 0
E6 1 0 0 0 1 1 1 0 1 1
E7 0 0 1 1 1 1 1 0 1 1
Considerând valorile de 0, rezultă următoarele expresii pentru funcţiile de ieşire: E1 = M1 + M4 E2 = M5 + M6 E3 = M2 E4 = M1 + M4 + M7 E5 = M1 + M3 + M4 + M5 + M7 + M9 E6 = M1 + M2 + M3 + M7 E7 = M0 + M1 + M7 -3-
6. Programul în limbaj AP MICRO Adr.MP 0000 1 2 3 4 5 6 7 8 9 0010 1 2 3 4 5 6 7 8 9 0020 1 2 3 4 5 6 7 8 9 0030 1 2 3 4 5 6 7 8 9 0040 1 2
Operaţie LD JC LD AND JC LD JC LD AND S R LD ANDC S LD AND S R R LD ANDC S LD AND S R R LD ANDC S LD AND S R R LD ANDC S LD AND S R R
Operand I0 0161 I2 M0 0076 M0 0180 M9 I1 M8 M9 M8 I1 M18 M18 I1 M7 M18 M8 M7 I1 M17 M17 I1 M6 M17 M7 M6 I1 M16 M16 I1 M5 M16 M6 M5 I1 M15 M15 I1 M4 M15 M5
Comentariu Test buton Clear Salt la RES Test buton Load Şi numărător în starea 0 Salt la LD Test starea 0 Salt la DCD/AF (peste numărare) Trecere M9 - M8
Trecere M8 - M7
Trecere M7 - M6
Trecere M6 - M5
Trecere M5 - M4
-4-
3 4 5 6 7 8 9 0050 1 2 3 4 5 6 7 8 9 0060 1 2 3 4 5 6 7 8 9 0070 1 2 3 4 5 6 7 8 9 0080 1 2 3 4 5 6 7 8 9 0090 1 2
LD ANDC S LD AND S R R LD ANDC S LD AND S R R LD ANDC S LD AND S R R LD ANDC S LD AND S R R J R R R R R R R R R R R R R R R R R
M4 I1 M14 M14 I1 M3 M14 M4 M3 I1 M13 M13 I1 M2 M13 M3 M2 I1 M12 M12 I1 M1 M12 M2 M1 I1 M11 M11 I1 M0 M11 M1 0180 M0 M1 M2 M3 M4 M5 M6 M7 M8 M9 M11 M12 M13 M14 M15 M16 M17
Trecere M4 - M3
Trecere M3 - M2
Trecere M2 - M1
Trecere M1 - M0
Salt la DCD/AF Program LD
-5-
3 4 5 6 7 8 9 0100 1 2 3 4 5 6 7 8 9 0110 1 2 3 4 5 6 7 8 9 0120 1 2 3 4 5 6 7 8 9 0130 1 2 3 4 5 6 7 8 9 0140 1
R R LDC ANDC ANDC ANDC S LDC ANDC ANDC AND S S LDC ANDC AND ANDC S S LDC ANDC AND AND S S LDC AND ANDC ANDC S S LDC AND ANDC AND S S LDC AND AND ANDC S S LDC AND AND AND S S
M18 M19 I6 I5 I4 I3 M0 I6 I5 I4 I3 M1 M11 I6 I5 I4 I3 M2 M12 I6 I5 I4 I3 M3 M13 I6 I5 I4 I3 M4 M14 I6 I5 I4 I3 M5 M15 I6 I5 I4 I3 M6 M16 I6 I5 I4 I3 M7 M17 -6-
2 3 4 5 6 7 8 9 0150 1 2 3 4 5 6 7 8 9 0160 1 2 3 4 5 6 7 8 9 0170 1 2 3 4 5 6 7 8 9 0180 1 2 3 4 5 6 7 8 9
LD ANDC ANDC ANDC S S LD ANDC ANDC AND S S LD OR AND AND AND STO J S R R R R R R R R R R R R R R R R R R LD OR STOC LD OR STOC LD STOC LD OR
I6 I5 I4 I3 M8 M18 I6 I5 I4 I3 M9 M19 I5 I4 I6 I2 T32 E0 0180 M0 M1 M2 M3 M4 M5 M6 M7 M8 M9 M11 M12 M13 M14 M15 M16 M17 M18 M19 M1 M4 E1 M5 M6 E2 M2 E3 M1 M4
Semn. Eroare Load
Salt la DCD/AF Program RES
Program DCD/AF
-7-
0190 OR STOC LD OR OR OR OR OR STOC LD OR OR OR STOC LD OR OR STOC J
M7 E4 M1 M3 M4 M5 M7 M9 E5 M1 M2 M2 M7 E6 M0 M1 M7 E7 0000
Buclare program
-8-