De HP-IB bus (Computertechniek)

door loek @, Exloo (Drenthe), 25-10-2016, 11:47 (2740 dagen geleden) @ focus103

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


Complete draad:

 RSS Feed van berichtenreeks

powered by my little forum