12.2 Comandi dello standard IEEE-488
12.2.1 Indirizzamento
L’indirizzamento `e quell’operazione, effettuata dal controllore, in grado di attivare un dispositivo o come ascoltatore, o come parlatore. Questo tipo di
operazione si effettua mediante un microswitch, o mediante controlli digitali presenti sul pannello dei sistemi. Cosa si fa? Ciascun dispositivo nella rete ha un certo indirizzo, in modo che ognuna abbia un indirizzo diverso da tutte le altre; il programma di gestione del sistema conosce ognuno degli indirizzi sapendo a quale interfaccia `e assegnato, e cos`ı riesce a sapere cosa deve chiamare in un certo momento.
Se il controllore intende indirizzare sul bus un particolare dispositivo, allora introduce innanzitutto il bus in modalit`a comando (attivando la ATN), e inviando sulle linee di dato un byte (in realt`a solo 7 bit, dal momento che la codifica ASCII prevede 7 bit di comando + 1 inutilizzato): i primi due bit stabiliscono quale sia il ruolo del dispositivo, e gli ultimi 5 stabiliscono l’indirizzo del dispositivo cui si vuole assegnare un certo ruolo. Si avrebbero a disposizione cinque bit di indirizzo dunque (pari a 32 possibili assegnazioni, anche se in realt`a al massimo si hanno 15 dispositivi collegabili ad un bus), e due bit; in realt`a, quando i bit di indirizzo sono tutti 1, e quindi si ha
Xxx11111, dove X `e il bit di parit`a, xx i bit di comando, e tutti gli altri
sono 1, avviene una cosa interessante: si hanno a disposizione due comandi, legati ai due bit xx, detti UNT (untalker) e UNL (unlistener):
UNT = X1011111
UNL = X0111111
UNT `e in grado di disindirizzare il parlatore, mentre UNL `e in grado di disindirizzare tutti gli ascoltatori; una volta disindirizzati, i device entrano in status idle, ossia di oziatori, e aspettano di essere riutilizzati in una suc-cessiva fase del processo. Questo vale solo se gli ultimi 5 bit valgono tutti 1: solitamente questi indicano l’indirizzo specifico del device cui viene inviato il comando dettato dai primi due.
Comandi universali
Quelli appena proposti sono solo due dei comandi multilinea universali, in-viabili ai vari strumenti: esistono in realt`a sei comandi di questo tipo, ossia comandi che vengono inviati a tutti gli strumenti, ed effettuati da quelli che sono in grado di farlo. Proponiamone un elenco pi`u completo:
• UNT (Untalk): disindirizza il parlatore attivo; in questo modo, prima
di assegnare un nuovo parlatore, si pu`o evitare che ve ne sia un altro attivo nel bus; il parlatore disindirizzato va in stato di idle.
• UNL (Unlisten): disindirizza tutti i dispositivi indirizzati come
ascolta-tori, portandoli in stato di idle.
• LLO (Local Lock Out): Disabilita l’impostazione manuale dei comandi
sul pannello frontale di tutti gli strumenti in grado di riconoscere questo comando.
• SPE (Serial Poll Enable): abilita gli strumenti ad una risposta
sequen-ziale in un’operazione di interrograzione, che segue ad una richiesta di servizio mediante serial polling (vedremo meglio in seguito).
• SPD (Serial Poll Disable): disabilita gli strumenti ad una risposta a
richieste di tipo polling seriale.
• PPU (Parallel Poll Unconfigure): disabilita gli strumenti a rispondere
a interrogazioni di tipo polling parallelo. Comandi indirizzati
I comandi appena proposti vengono inviati a tutti i dispositivi collegati al bus, e interpretati da tutti i dispositivi in grado di effettuare le operazioni da essi richieste. Esistono altre classi di comandi che ora vedremo, tra cui questa: comandi che vengono letti ed eventualmente interpretati solo da tutti i dispositivi precedentemente abilitati come ascoltatori; tra questi vi sono:
• GET (Group Execute Trigger): tutti gli strumenti indirizzati come
as-coltatori devono iniziare un’attivit`a, determinata dalla loro impostazione. Quest’attivit`a potrebbe essere per esempio un processo di misurazione, e ci`o che fanno e le modalit`a sono specializzate nel dispositivo stesso: ogni dispositivo fa la sua parte, al fine di effettuare il processo richiesto dal sistema.
• SDC (Selected Device Clear): tutti gli strumenti indirizzati come
as-coltatori vengono riportati ad uno stato di default, ossia ad uno stato predefinito.
• GTL (Go To Local): `e il duale di Local Lock Out: fa in modo che
tutti i dispositivi abilitati per essere programmati via bus, si possano programmare anche mediante i comandi manuali del pannello frontale (ossia in modalit`a locale).
• PPC (Parallel Poll Configure): configura il dispositivo,
precedente-mente gi`a abilitato come ascoltatore, per istruirlo sulla modalit`a di risposta a operazione di interrogazione tipo polling parallelo.
• TCT (Take Control): viene usato dal controllore attivo, per trasferire il
ruolo di controllore ad un dispositivo precedentemente indirizzato come ascoltatore.
Comandi unilinea
Esistono alcuni particolari messaggi, detti unilinea, che coinvolgono le linee di gestione dell’interfaccia; ciascuna delle linee viene utilizzata per inviare un particolare messaggio, legato allo stato della linea, tra i dispositivi della rete. Poich`e si hanno cinque linee di controllo della rete, si avranno cinque segnali di controllo, uno per linea (uno di essi `e il gi`a citato ATN, in grado di differenziare il modo di trasmissione dati dal modo di comando). Vediamo lo scopo delle cinque linee:
• IFC (Interface Clear): ogni comunicazione sul bus viene interrotta,
tutti i parlatori vengono disindirizzati e le operazioni di polling seriale disabilitate. Questo comando `e utilizzabile solo dal system controller, ed in pratica il suo obiettivo `e quello di bloccare tutte le operazioni che stanno avvenendo all’interno del bus, riportando ogni dispositivo in una situazione nota, iniziale.
• REN (Remote Enable): ogni dispositivo che `e in grado di riconoscere
questo messaggio, viene abilitato alla programmazione remota, ossia alla programmazione tramite bus (e tramite altri dispositivi presenti all’interno del sistema).
• SRQ (Service Request): i dispositivi presenti sulla rete chiedono
atten-zione da parte del controllore.
• ATN (Attention): il controllore, quando deve attivare il bus in modo
comandi, ossia quando deve inviare comandi, la attiva. Tutti i dis-positivi con ATN vera (compresi quelli in idle) interpretano i messaggi multilinea presenti sul bus come comandi; terminata l’operazione, si rimette a 0 la linea ATN da parte del controllore e la parola torna al parlatore, che continua a inviare dati ai soli ascoltatori.
• EOI (End Or Identify): questa linea ha due utilizzi, a seconda dello
stato della ATN:
– Se ATN=0 allora EOI `e gestita dal parlatore attivo, ed indica la fine di una sequenza di dati inviati;
– Se ATN=1 allora il controllore cerca di identificare (Identify) quale `e il dispositivo che ha richiesto un servizio (mediante SRQ) in una procedura di polling parallelo.
Quella appena proposta `e solo una delle due possibilit`a di effettuare una terminazione dei dati, ossia di comunicare agli ascoltatori il termine di una trasmissione dati; un altro modo, consiste nell’inviare due particolari carat-teri ASCII: CR (Carriage Return) + LF (Line Feed). Dal momento che si parla di dati, tuttavia, non `e detto che gli ascoltatori siano in grado di in-terpretare perfettamente la codifica, di conseguenza sarebbe preferibile usare la EOI (con ATN=0, ovviamente, trovandoci in situazione di trasferimento dati), evitando maleinterpretazioni di questo tipo.