HPIB  IEEE 488  primjer

U ovom primjeru kontroler je kompjutor spojen na digitalni multimetar DMM preko HPIB-a.

Kontrolerov HPIB interface je određen jednim kodom ISC koji obično iznosi 7. DMM se po defaultu nalazi na HPIB adresi 22. HPIB BASIC locira instrument na adresi  722. U ovom primjeru kontroler ima Talk/Listen na adresi 30.

 

Program obavlja sljedeći zadatak:

Obrisati DMM, očitati DC napon, poslati rezultat natrag u kontroler, serial-polls DMM i pokazati rezultat.

 

10 REAL Rdg

 

(Rdg je 'REAL' varijabla za pohranu očitanog napona).

 

 

20 INTEGER Stat

 

(Stat je integer varijabla koja sprema status bit kojeg vraća serial poll).

 

 

30 ASSING @ Dmm TO 722

 

(Naredba kojom određujemo adresu uređaja na lokaciji 722).

 

 

40 CLEAR 7

 

(Naredba koja briše sve uređaje na HPIB-u).

Iza ove naredbe stoji sljedeći niz HPIB operacija.

 

REN       ATN                      :DCL

 

Lijeva strana ovog izraza prikazuje stanje 3  kontrolne linije REN, ATN i EOI. EOI je u ovom slučaju naktivan pa nije niti prikazan. REN i ATN su aktivni prikazujući komandni bit.

REN je jedna od 5 glavnih sabirničkih linija.Koristi je System kontroler kako bi postavio udaljene uređaje u programabilni mod.

 

ATN također pripada skupini od 5 sabirničkih linija.Nju koristi trenutno aktivni kontroler kako bi poručio svim uređajima na HPIB-u da su komandni i adresni bitovi poslani. Ovi bitovi adresiraju izvršioce i upravljače, održavaju status uređaja itd. Kad je ATN linija potvrđena svi uređaji moraju odgovoriti u roku od 200ns i prestati sa trenutnim operacijama koje su izvršavali.

 

Desna strana izraza pokazuje bitove koji se prenose. U ovom slučaju to je komandni bit DCL (Device Clear).

 

 

 

50 OUTPUT @ Dmm; ˝*RST˝

 

(Izraz OUTPUT koristi HP BASIC kako bi poslao bitove preko HPIB-a do udaljenih uređaja, DMM).

Iza ove naredbe stoji sljedeći niz HPIB operacija.

 

REN       ATN                      :TAD 30               (MTA)

REN       ATN                      :UNL

REN       ATN                      :LAD 22

REN                                     :˝*˝

REN                                     :˝R˝

REN                                     :˝S˝

REN                                     :˝T˝

REN                                     :CR

REN                                     :LF

 

Prvi bit određuje kontrolera kao upravljača, drugi kaže trenutno adresiranom izvršiocu (ako ga ima) da prestane s radom zbog adresiranja novog izvršioca, a treći postavlja DMM-a kao izvršioca. Nakon toga poslan je u DMM poslan string ˝*RST˝ . Kontrolni karakteri CR(carriage-return) i LF(line-feed) izbrisati će string i time dati do znanja DMM-u kako je komanda potpuna i da počne s njenim izvršavanjem.

 

 

60 OUTPUT @ Dmm; ˝*CLS˝

 

REN       ATN                      :TAD 30               (MTA)

REN       ATN                      :UNL

REN       ATN                      :LAD 22

REN                                     :˝*˝

REN                                     :˝C˝

REN                                     :˝L˝

REN                                     :˝S˝

REN                                     :CR

REN                                     :LF

 

Nakon ovih operacija postavlja se pitanje: čemu RST i CLS kad već koristimo DCL? Odgovor je toliko jednostavan da ga neću ni napisati.(Pošalica)

 

 

70 OUTPUT @ Dmm; ˝MEASURE: VOLTAGE: DC? DEF˝

 

REN       ATN                      :TAD 30               (MTA)

REN       ATN                      :UNL

REN       ATN                      :LAD 22

REN                                     :˝M˝

REN                                     :˝E˝

REN                                     :˝A˝

REN                                     :˝S˝

REN                                     :˝U˝

REN                                     :˝R˝

REN                                     :˝E˝

REN                                     :˝: ˝

REN                                     :˝V˝

REN                                     :˝O˝

REN                                     :˝L˝

REN                                     :˝T˝

REN                                     :˝A˝

REN                                     :˝G˝

REN                                     :˝E˝

REN                                     :˝: ˝

REN                                     :˝D˝

REN                                     :˝C˝

REN                                     :˝? ˝

REN                                        ˝

REN                                     :˝D˝

REN                                     :˝E˝

REN                                     :˝F˝

REN                                     :CR

REN                                     :LF

 

Jedina razlika u odnosu na prijašnje izraze je string ˝DEF˝ koji specificira nazivni opseg mjernog napona za DMM.

 

 

80 ENTER @ Dmm; Rdg

(Naredba koja je slična naredbi OUTPUT samo u suprotnom smjeru tj. sada je kontroler izvršioc ,a DMM upravljač. DMM vraća očitanu vrijednost napona kao string).

 

REN       ATN                      :UNL

REN       ATN                      :LAD 30               (MLA)

REN       ATN                      :TAD 22

REN                                     :˝1 ˝

REN                                     :˝. ˝

REN                                     :˝2˝

REN                                     :˝3˝

REN                                     :˝4˝

REN                                     :˝5˝

REN                                     :˝E˝

REN                                     :˝+ ˝

REN                                     :˝0˝

REN                                     :˝1˝

REN                      EOI               :LF

 

EOI i LF terminatori se ovog stringa. (ASTA LA VISTA BEJBI)

 

 

90 PRINT  ˝Reading value:                   ˝;Rdg

 

(Nakon što program vrati vrijednost napona ona se ispisuje na zaslonu kompjutora).

 

 

100 Stat=SPOLL(@Dmm)

 

(HP BASIC program ispituje stanje serial poll-a).

 

REN       ATN                      :UNL

REN       ATN                      :LAD 30               (MLA)

REN       ATN                      :TAD 22

REN       ATN                      :SPE

REN                                     :0           

REN       ATN                      :SPD

REN       ATN                      :UNT

 

Kontroler šalje SPE(Serial Poll Enable) komandni bit kako bi rekao DMM-u da odgovori na poll. DMM vraća bit vrijednosti 0 pokazujući da nema ništa.U tom slučaju ATN je neaktivan zato jer samo kontroler smije slati bitove dok je ATN aktivan. Nakon toga kontroler šalje SPD(Serial Poll Disable) komandni bit i nakon toga oduzima pravo govora DMM-u.

 

 

110 PRINT ˝Serial Poll status:    ˝;Stat

 

120 END