De HP-IB bus (Computertechniek)
Hallo Forum lezers,
Na vele pogingen is het toch gelukt om een goedkope oplossing te vinden om meetapparaten met een computer aan te sturen via de GPIB bus.
Voor een aantal van jullie zal de naam GPIB waarschijnlijk niets zeggen. Deze letters staan voor General Purpose Interface Bus.
Dit type bus is in de perioden rondom 1976 ontwikkeld. HP was de eerste die deze bus inbouwde in de professionele meetapparaten met de naam HP-IB . Maar andere fabrikanten zoals Tektronix gingen deze bus ook gebruiken en toen werd de naam GPIB en later werd het een officiële standaard onder de naam IEEE-488 bus.
De bus bestaat uit 8 draden voor data overdracht en nog eens 8 draden voor control- signalen waarvan er weer 3 in gebruik zijn voor handshaking.
De bedoeling is dat je meerdere meetapparaten via een soort doorlus kabel doorverbind met een computer. In totaal kon je zo 31 meetapparaten tegelijk koppelen
Op ieder meetapparaat apparaat zitten een aantal schakelaars waarmee een uniek adres ingesteld kan worden.
De computer waarmee je de meetapparaten kon besturen had dus ook een speciale HP-IB connector en de programmeer taal was Basic. HP had als start de HP-85 computer waarmee je rechtstreeks alle meetapparaten kon aansturen. Maar ook de PET computer had deze interface
In latere perioden kon je een willekeurige PC voorzien van een HP-IB bus door het plaatsen van een kaart in een slot.
Wat kon je nu zoal met deze besturing?
In mijn werkzame perioden bij PTT/KPN kwam in de tijd dat er nog analoge telefonie was steeds meer gebruikers die via een modem computer signalen over de telefoonlijn verstuurde.
Op de internationale versterkte verbindingen werden de telefoongesprekken via analoge methode dus via modulatie gestapeld naar banden waar dan bijvoorbeeld 30 of meer gesprekken in zaten.
Dit alles was dus berekend op een signaal dichtheid van wat er door spraak veroorzaakt werd. Maar modem signalen hadden een heel ander dichtheid patroon.
Kon ons net dat wel aan was de vraag? En was dit nu werkelijk zo dat die dichtheid toe nam?
Dat was nu typisch zo iets dat uitstekend met de nieuwe apparatuur onder besturing van een computer gemeten kon worden.
Er werd een punt in de infrastructuur uitgezocht waar de draaggolf rond de 30 MHz lag daar zaten dus duizenden gesprekken in. Op dat punt werd een door de computer (HP85) bestuurde selectieve niveau meter ( Anritsu ML422B1) aangesloten die met een instelbare bandbreedte kon meten van 10 HZ en 3200 Hz.
Als eerste werd de piloot toon van een groep gemeten hiermee was het absolute niveau bekend op dat punt. Daarna werden alle kanalen met een bandbreedte van 3200 Hz op niveau gemeten en dat gin dan weer verder met de volgende groep en zo dagen/weken door. Daarna konden de resultaten uit de computer geanalyseerd worden.
Dit soort werk was voor de komst van deze computer bestuurde metingen bijna onmogelijk.
Overigens was de eindconclusie dat het allemaal wel mee viel met deze overbelasting.
Zo nu misschien wat meer duidelijk is wat een HP-IB bus is en wat je er mee kunt doen.
Zelf heb ik in de loop der jaren al 8 meetinstrumenten met een HP IB bus en had nog nooit een poging gedaan om deze bus te gaan gebruiken.
De makkelijkste oplossing zou natuurlijk zijn om een HP85 computer of iets dergelijks uit die tijd aan te schaffen. Maar vergeleken met de huidige computers zouden de mogelijkheden dan zeer beperkt zijn.
Een kaart plaatsen in een slot van je computer is bij de nieuwe computers ook al niet meer mogelijk (geen slot meer aanwezig). Je zou dan dus eigenlijk alleen nog op een XP of lager kunnen werken.
Ook nu wordt er nog veel gebruik gemaakt wordt van de HP-IB bus . Door verschillende leveranciers worden adapters op de markt gebracht die van HP-IB naar USB converteren.
Dat keek mij de juiste oplossing.
Helaas zijn de officiële adapters van bijvoorbeeld Tektronix of Agilent heel erg duur (300 tot 600 Euro)zeker voor een experiment .
Er zijn ook wat goedkopere adapters in de handel onder andere van Prologix maar ook deze kosten nog rond de 150 Euro. Deze type hebben dan vaak weer de nare eigenschap dat ze specifiek werken op één soort software.
Uiteindelijk ben ik gaan zoeken naar de zelfbouw adapters. Via een aantal ontwerpen ben ik uiteindelijk gekomen op het ontwerp van Anders Gustafsson.
Dit ontwerp werkt zeer goed en is zeer flexibel. Er zit zelfs een mogelijkheid in om een debugger in te schakelen met verschillende niveaus . Het resultaat van de debugger komt dus op een aparte RS232 uitgang zodat je op een terminal kan zien wat er bijvoorbeeld uit de HP-IB bus komt of wat er gezonden wordt op de USB bus. Tijdens het uitproberen heb ik regelmatig contact gehad met Anders Gustafsson en daarbij was hij zeer behulpzaam. Door deze contacten is er ook nog een nieuwe release gekomen.
De adapter is gemaakt met een PIC 18F2550 processor alle informatie en software voor de PIC zijn te vinden op onderstaande link.
http://www.dalton.ax/gpib/
De adapter is dus uitsluitend nodig om alle opdrachten van de computer die via de USB bus komen te vertalen naar de HP-IB bus en handshake signalen ( visa versa).
Er zitten nog wel wat extra onderdelen op de print om wat leds aan te sturen maar deze zijn niet noodzakelijk. Ik heb op mijn adapter een MAXIM ic aangebracht om van TTL naar RS232 niveau te gaan voor de debug uitgang. Er zitten ook wat componenten op voor een externe voeding mogelijk te maken. Maar ook dat is niet noodzakelijk.
Naast de adapter heb je een programma nodig waarmee je de commando’s naar de meetapparaten kan sturen en waarmee je de resultaten kan ontvangen en verwerken. Dit was dus ter vergelijking met vroeger het Basic programma van de HP85.
Ook hier zijn weer allemaal professionele programma’s voor te koop (maar weer duur) . Er was ook een prachtig programma EZGPIB . Dat werkt goed, maar de maker is inmiddels overleden en er is dus geen onderhoud meer mogelijk. Bij het uit testen kwamen er regelmatig vreemde dingen te voor schijn en onderzoek na de oorzaak is dus helaas niet mogelijk. Er was ook nog een mogelijkheid van PYTHON maar dat was achteraf helemaal nieuwe worden leren.
Uiteindelijk heb ik gekozen voor besturing via Excel en VBA (een soort Basic) van Windows. In eerste instantie zou je niet denken aan Excel voor technische besturing van meetapparaten maar het wekt geweldig. Ik zelf heb Excel 2007 op Windows 7(64bit). De communicatie modulen komen van internet. Het leuke is dat je de resultaten gelijk weer kan bewerken in Excel naar grafieken.
Als voorbeeld heb ik nu twee meetapparaten via de adapter met Excel bestuurd.
Het eerste apparaat is een programmeerbare current-source van Keithly type 220 en het tweede apparaat is een DMM van Keithly type 197
Op de uitgang van de current source is een silicium dioden aangesloten. Een daar over heen is de DMM aangesloten.
In het Excel programma wordt de stroom ingesteld met een start en eindwaarde. Ook word de verhoging van de stroom per stap ingesteld en de hoogte van de openspanning.
Na het indrukken van start gaat de current steeds een stap hoger en wordt door de DMM de spanning gemeten die over de dioden staat. Op deze manier krijg je dus de I/V karakteristiek te zien. Door een vinkje aan te geven kan je het beide assen nog een andere schaal (Ohm) of logaritmisch maken.
Ik heb dit als voorbeeld genomen niet zozeer voor meten aan een dioden maar omdat voor het repareren en controle van draaispoel meters uit de AVO buizentesters 160/MK4 een stroombron nodig is van 1 tot 32 uA om de schaaldekking te controleren.
Uit ervaring weet ik dat soms bij een stroomwaarde , kortsluiting optreed in een wikkeling van de draaispoel meter. De current-source zal dus de stroom in dat geval gelijk houden maar je ziet dan nu wel de spanning veranderen. De geteste meter had dit op enkele punten van het schaal bereik en het leek er dan op dat de meter “tapwrijving” had. Je zou met dit programma ook het bereik van een DMM kunnen testen. Dit is zo maar een voorbeeld van de mogelijkheden.
Ik heb nog een scoop , signaal generator, functie generator die via deze bus aangestuurd kunnen worden. Daar moet nog mee geëxperimenteerd worden.
Ik hoop dat jullie wat gehad hebben aan mijn ervaring met vriendelijke groet,
Loek
De HP-IB bus
Loek ik wist dat dit al een keer eerder tegen ben gekomen.
wellicht heb je er wat aan wat http://www.pa3esh.nl/index.php/projecten/unisai heeft gemaakt.
dit ter info.
De HP-IB bus
Hallo Focus103,
Het artikel waar jij naar verwijst is heel iets anders. Daar wordt wel dezelfde processor gebruikt en ook wordt gebruik gemaakt van een USB bus voor communicatie. Maar daar wordt geen HPIB naar USB adapter voor gebruikt.
In dat artikel worden de signalen van een meetapparaat bemonsterd door de A/D omzetter in de processor en dan via de USB (zit ook in de processor) naar de computer gebracht.
Dat is op zich ook een leuke oplossing om oude apparatuur te koppelen aan een computer, maar dan is de oplossing alleen specifiek voor dat apparaat.
Er zijn maar echt weinig goedwerkende zelfgemaakte HPIB naar USB adapters.
Bij de meeste die een poging gedaan hebben was het resultaat teleurstellend.
Je leest dan zo van dat is oude techniek en ook niet supersnel dus dat moet makkelijk lukken. En dan later lees je dat het erg tegenviel en dat er maar een paar functies zijn geïmplementeerd in hun eigen ontwerp.
Dat is ook de reden dat ik zelf geen poging gedaan heb om iets te ontwerpen in Bascom. Ook in Bascom is er iemand geweest die een poging gedaan heeft. En het resultaat was iets met minimale mogelijkheden.
Het protocol wat gebruikt wordt bij de HPIB bus is redelijk complex.
Er moeten opdrachten per meter verstuurd kunnen worden. Maar voordat je dat doet moet je weten of het apparaat luistert. En tegelijk kunnen andere apparaten data hebben voor de computer. Dat wordt dan bijvoorbeeld aangegeven met een Service ReQuest SRQ. Maar welk apparaat vroeg een SRQ aan? Zijn het er meerdere? En als dan een apparaat gekozen is na een SRQ wanneer is hij klaar met data versturen? En tussen door kan er weer een ander apparaat zijn die iets wil of wacht op een opdracht. Zeker als er 30 meetapparaten aan één controller zijn aangesloten.
HP had hier zelf een IC voor ontwikkeld, maar deze zijn nu bijna niet meer te koop en daardoor ook weer duur.
Het ontwerp dat ik heb besproken/nagemaakt is volgens mij bijna gelijk aan de professionele ontwerpen.
Bedankt voor je reactie met vriendelijke groet,
Loek
De HP-IB bus
Bedankt weer voor het mooie verslag Loek!
Jac
De HP-IB bus
...
HP had hier zelf een IC voor ontwikkeld, maar deze zijn nu bijna niet meer te koop en daardoor ook weer duur.
...
Die HP bus voor meetapparatuur? dat is toch het iEEE448 protocol?
Philips had indertijd de HEF4738 in Locmos/Cmos technologie voor dit protocol.
Ik heb er nog een aantal op voorraad liggen.
Mvg,
Eleen
De HP-IB bus
Gebruik het nog regelmatig. Twee bussen aanwezig, een laptop met een prologix USB adapter en een NI kaart in een oude win98 PC.
Laatste aanwinst is een tek digitizer uit 1979. Spullen uit die tijd zijn nog niet 100% compatibel. Programma gevonden uit de oude doos wat dat ding standaard kan uitlezen, maar draait weer op HP basic. Wat weer draait op zo'n computer als in je post. Je blijft bezig
Vraag me af of dit ding ook alleen kan monitoren. Zou interessant zijn om te zien wat er op de bus gebeurd (los van de loggings van de diverse applicaties). Er bestaan dedicated apparaten die dat kunnen (oud), maar probeer er maar één te vinden.
Ik wil nog altijd een keer een HP HPIB klok zien uit te halen.
De HP-IB bus
Ik snap het loek bedankt.
Dat wordt nog complex om verschillende bronnen aan te sturen en metingen te laten doen in exel.
Er werd toch een heel script geschreven om een meting te doen.
Succes met je opstellingen.
De HP-IB bus
Hallo Eleen,
Dat is inderdaad het IEEE488 protocol. Zijn die IC van jou te koop en wat zijn dan de kosten?
Misschien een leuk project om deze IC's aan de praat te krijgen.
Met vriendelijke groet,
Loek
De HP-IB bus
Hallo focus103,
Het valt wel mee hoor om een script te schrijven. Als voorbeeld zie je hieronder het script van de twee meters. Veel is het eigenlijk niet. Ik heb de DIM statements en de gebruikte subroutines weg gelaten. De subroutines zijn al door iemand geschreven dus deze kan je steeds weer gebruiken. Er zit inderdaad verschil in de oudere en modernere meetapparaten. Soms moet je wat vertraging aanbrengen tussen de programma regels (zie functie vertraging).
Als basis voor deze meetapparaten gebruikte ik de documentatie die destijds uitgegeven is. In deze documentatie staan alle voorbeelden in Basic (HP 85). Deze voorbeelden kon je makkelijk vertalen naar de VBA van Excel.
En omdat er een debug-uitgang op de adapter zit kan je ook direct zien wat de reactie is van het meetapparaat.
Je moet natuurlijk wel wat uitzoeken in Excel om bijvoorbeeld een grafiek te maken. Maar het voordeel daarvan is dat er veel documentatie en BLOGS te vinden zijn die je kunnen helpen.
Met vriendelijke groet,
Loek
VOORBEELD script:
If max_StopValue = 1 Then 'bereik grafiek kan max 32000 meetpunten hebben dus schaal boven 30000 gedeeld door 10
stroom = StartValue * 10
Else
stroom = StartValue
End If
'hier start de lus waarmme alle meetpunten worden uitgevoerd.
fout_tel = 0
fout_current = 0
ActiveWorkbook.Sheets(1).Cells(33, 4).Value = 0
ActiveWorkbook.Sheets(1).Cells(34, 4).Value = 0
tel = 1
For j = StartValue To StopValue Step StepValue 'net zo lang tot alle meetpunten zijn uitgevoerd
procent = 100 / (StopValue / StepValue)
procent = Round(procent)
procent = procent * tel
ActiveWorkbook.Sheets(1).Cells(32, 4).Value = procent
tel = tel + 1
rc = GPIB(Port, "++addr 12") 'adres current source
vertraging (100000000)
'Debug.Print "stroom is:" & stroom
rc = GPIB(Port, "B1L1I" & stroom & "E-" & "6X") 'stroom verhogen met stap waarde
ActiveWorkbook.Sheets(1).Cells(j + 2, 1).Value = stroom ' ingestelde stroom in tabel
'kijken of current source in het statusbyte een foutmelding heeft. Een A betekent dat de spanning te laag is
vertraging (10000000)
CommFlush Port
vertraging (100000000)
str = CommGetstr(Port) 'ophalen status word
vertraging (100000000)
'Debug.Print "status string is:" & str
'Debug.Print "SELECT is:" & Mid(str, 1, 1)
If Mid(str, 1, 4) <> "NDCI" Then 'ODCI is spanning te laag
fout_current = fout_current + 1
ActiveWorkbook.Sheets(1).Cells(34, 4).Value = fout_current
End If
rc = GPIB(Port, "++addr 20") 'terug naar DMM-meter.
vertraging (100000000)
rc = GPIB(Port, "T4X") 'TRIGGER 4 = meter wijst continu aan 5= alleen bij commando lezen
vertraging (100000000)
rc = GPIB(Port, "++read")
str = CommGetstr(Port) 'dummy lezen waarom: anders pas bij volgende ronde komt juiste waarde?
vertraging (100000000)
str = CommGetstr(Port)
vertraging (100000000)
ruw_resultaat_197 = str
'Y-as op ohm of uV
If ohm = 0 Then
hulp = resul(ruw_resultaat_197) 'echte gemeten spanning opbergen in cel
ActiveWorkbook.Sheets(1).Cells(j + 2, 2) = hulp
ActiveWorkbook.Sheets(1).Cells(35, 4).Value = "Y-as in uV "
Else
hulp = resul(ruw_resultaat_197) 'berekende weerstand opbergen in cel
hulp = hulp / stroom
ActiveWorkbook.Sheets(1).Cells(j + 2, 2) = hulp 'echte gemeten spanning opbergen in cel
ActiveWorkbook.Sheets(1).Cells(35, 4).Value = "Y-as in Ohm"
Debug.Print "ohm is: " & hulp
End If
If Mid(ruw_resultaat_197, 1, 4) <> "NDCV" Then 'staat meter in juiste status?
ActiveWorkbook.Sheets(1).Cells(j + 2, 3).Interior.Color = RGB(255, 0, 0) 'bij afwijking achtergrond cel rood maken
fout_tel = fout_tel + 1
ActiveWorkbook.Sheets(1).Cells(33, 4).Value = fout_tel
End If
ActiveWorkbook.Sheets(1).Cells(j + 2, 3).Value = Mid(ruw_resultaat_197, 1, 4) 'status meter 197 op scherm
If max_StopValue = 1 Then
stroom = stroom + (StepValue * 10)
Else
stroom = stroom + StepValue
End If
Next j
De HP-IB bus
Hallo r2d2,
Er zijn goedkope oplossingen om de HP-IB bus te monitoren.
Op onderstaande link wordt gebruik gemaakt van een (goedkope) clone logic analyzer en een zelf geschreven protocol voor HPIB.
Helaas is het zelf geschreven protocol gemaakt voor Linux. Maar er zou ook een Windows versie komen.
http://www.rudiswiki.de/wiki9/SigrokDecoderGPIB
Met vriendelijke groet,
Loek
De HP-IB bus
Bedankt, interessante link. Zal het in de gaten houden.