Utilizarea numaratoarelor
1.1 Introducere
1.2 Utilizarea functiei de numarare
· Numaratoarele sunt structuri de date formate din 3 operanzi, de exemplu pentru numaratorul X:
o CX - Numarator X, operand de un bit care memoreaza starea numaratorului X. Se activeaza/dezactiveaza cu SET CX, RESET CX.
o CPX - Numarator presetat pentru numaratorul X, este un operand multibiti de un cuvant care incarca valoarea introdusa de catre utilizator. Aceasta poate fi o constanta sau un operand cuvant (IW, OW, FW, ..)
o CWX - Numarator multibiti de un cuvant pentru numaratorul X, care memoreaza valoarea curenta a numaratorului. Modificarea valorii numaratorului cu o unitate se face prin INC CWX.
· Sunt disponibile 2 metode de utilizare a numaratoarelor. Prima utilizeaza comanda SET CX prin care bitul CX este 1 logic si se incarca in CWX valoarea 0. Se incarca o valoare la operandul CPX. La fiecare executie a instructiunii INC CWX ,se mareste cu o unitate valoarea acestui operand. Cand CWX=CPX,atunci CX=0, in mod automat. A doua metoda nu utilizeaza CPX, ci doar CWX a carei valoare o initializeaza, o incrementeaza si apoi o compara cu o constanta.
· Prima metoda:
STEP 10
IF NOP THEN LOAD V10 TO CP0 SET C0 'Numarator
0 RESET Y1 'Solenoid
1
STEP 20
IF B1 'Senzor 1 THEN INC CW0 'Numarator 0
STEP 30
IF THEN NOP
STEP 40
IF THEN JMP
TO 50 OTHRW JMP
TO 20
STEP 50
THEN SET Y1 'Solenoid
1 JMP
TO 10
· A doua metoda:
STEP 10
IF NOP THEN LOAD V0 TO CW0 RESET Y1 'Solenoid
1
STEP 20
IF B1 'Senzor 1 THEN INC CW0 'Numarator 0
STEP 30
IF CW0 'Numarator 0 = V10 THEN JMP
TO 40 OTHRW JMP
TO 20
STEP 40
THEN SET Y1 'Solenoid
1 JMP
TO 10
· Se pot declara 256 numaratoare in FEC de la C0 la C255.
1.3 Inserarea numaratorului in proiect
Trebuie modificat programul cu temporizator pentru a i se adauga functia de numarare.
Noul proces va fi:
· &n
· Ciclul se va opri numai daca au fost transportate 10 piese.
· Se aplica intarzierea la retragerea pistonului cilindrului 1A.
Lista de alocare va include:
· C0 - Numarator 0
· CP0 - Numarator presetat 0
· CW0 - Cuvant de numarator 0
Prima metoda
A doua metoda:
STEP 10
IF SB 'Buton start AND B1 'Cilindrul
1A retras AND B3 'Cilindrul
2A retras THEN SET Y1 'Solenoid
pentru cilindrul 1A LOAD V0 TO CWO 'Cuvant de numarator 0
STEP 20
IF B2 'Cilindrul 1A
extins THEN SET Y2 'Solenoid
pentru cilindrul 2A
STEP 30
IF B4 'Cilindrul 2A
extins THEN RESET Y2 'Solenoid
pentru cilindrul 2A
STEP 40
IF B3 'Cilindrul 2A
retras THEN SET T1 'Temporizator
1 with 5s
STEP 50
IF THEN RESET Y1 'Solenoid
pentru cilindrul 1A INC CW0 'Cuvant
de numarator
STEP 60
IF CWO 'Cuvant de numarator
0 = V10 THEN JMP
TO 10 OTHRW NOP
STEP 70
IF B1 'Cilindrul 1A
retras AND B3 'Cilindrul
2A retras THEN SET Y1 'Solenoid
pentru cilindrul 1A JMP
TO 20