conteggio ingressi chiusi (II soluzione)

Contare il numero degli ingressi chiusi del modulo al posto connettore 4.

In questo esercizio, allo scopo di utilizzare un’operazione di scorrimento, affrontiamo una soluzione differente rispetto a quella programmata nell’esempio precedente.

Il contatore di ingressi chiusi è ancora MB80 ed il suo valore viene ancora inizializzato a 0 all’inizio dell’OB1. MW10 rappresenta invece una maschera a 16 bit, uno solo dei quali per volta sarà ad 1. Il suo valore iniziale è 1 cioè (0000_0000_0000_0001)2, dove solo il bit 0 è vero.

Le prime tre istruzione del blocco FC4 caricano negli accumulatori i valori della maschera e della word di ingresso relativa al modulo e ne eseguono la AND bit a bit. Al primo passaggio, col valore della maschera appena visto, la AND dà risultato diverso da 0 solo se E0.0 è chiuso. Quindi il salto su zero previsto dall’istruzione successiva viene effettuato solo per ingresso aperto.

Se l’ingresso è chiuso, come fatto per l’esempio precedente, incrementiamo il byte di conteggio MB80.

In un caso o nell’altro i due percorsi di elaborazione si ricongiungono all’etichetta INC dove, dopo aver caricato la maschera in ACCU1, si provvede allo scorrimento a sinistra di una posizione. Il risultato dello scorrimento viene ritrasferito in MW10.

Il bit di maschera, dopo 16 scorrimenti, fuoriesce dall’accumulatore e viene memorizzato in A1. L’operazione successiva con bit A1=0 rimanda l’elaborazione alla prima istruzione del blocco per il test sull’ingresso successivo mentre, con A1=1 nessun salto viene eseguito e l’elaborazione del blocco termina.

LADDER

OB1
 ladder23
FC4
 ladder24
AWL
OB1
      L     L#0                  ‘inizializzazione merker byte

T     MB80                 ‘di conteggio

L     L#1                  ‘inizializzazione maschera

T     MW10

 

UC    FC4

 

BE

FC4
TEST:

L     MW10               ‘controllo dell’ingresso

L     EW0                  ‘non mascherato

UW

SPZ   INC

 

L     MB80                 ‘l’ingresso è attivo:

L     L#1                  ‘incremento del merker byte

+I                            ‘di conteggio

T     MB80

 

INC:  L     MW10       ‘shift della maschera per

SLW   1                    ‘esame ingresso successivo

T     MW10

SPMZ  TEST               ‘controllo se finito

 

BE

^