Sida 2 av 2

Re: hp3852a gpib programmering

Postat: 17 mars 2012, 16:22:21
av AndersG
Det är en lång bit dit ännu... Måste fundera på placering... Den går in under bänken vid labbdatorn, så har lekt med tanken att laga en vagn på hjul så man kan dra ut den vid behov.

Re: hp3852a gpib programmering

Postat: 17 mars 2012, 22:20:27
av AndersG
Och läsa igenom manualerna. Kom så långt som att få ett program (Excel/VBA) som sänder kommandon till voltmetern, men det är ju en eller två parametrar man behöver förstå för att få den att spela....

Re: hp3852a gpib programmering

Postat: 18 mars 2012, 10:34:13
av AndersG
OK. Nu börjar det likna något:

Kod: Markera allt

Sub Logger()
'
' Loger Macro
' Sample to read data from a high-speed voltmeter in av hp3852a rack
'
Dim Port As Integer
Dim rc As Long
Dim str As String
Dim i, j As Integer
Dim n As Long
Port = 1
j = 1
rc = CommClose(Port)
rc = CommOpen(Port, "COM4", "baud=9600 parity=N data=8 stop=1") ' Speed does not really matter as COM-port is virtual anyway
If rc > 0 Then
rc = CommGetError(str)
MsgBox str
End If

str = "Q " + Chr$(3) ' Turn off debug mode on my interface
rc = CommWrite(Port, str)
    CommFlush (Port)
    str = "6" + Chr$(10)       ' Set remote (assert REN)
    rc = CommWrite(Port, str)
    For n = 1 To 1000
    Next n
    
    str = "2 ?U8" + Chr$(10)       ' Set HP 3852A to listen assuming av address of 24
    rc = CommWrite(Port, str)
    For n = 1 To 1000
    Next n
       
    CommFlush (Port)
    rc = GPIB(Port, "DISPLAY START")      ' Show info on display
    rc = GPIB(Port, "OUTBUF ON")      ' Set output buffering on
    rc = GPIB(Port, "USE 600")       ' Use Voltmeter in slot 6-7
    rc = GPIB(Port, "RST 600")      ' Reset it
    rc = GPIB(Port, "TERM EXT")      ' Use voltmeter external terminals
    rc = GPIB(Port, "NRDGS 10")      ' Ten readings
    rc = GPIB(Port, "DELAY 0,0.1")      ' 0.1s between readings
    rc = GPIB(Port, "AZERO ONCE")      ' Send command
    rc = GPIB(Port, "TRIG INT")      ' Internal trigger (pocer)
    rc = GPIB(Port, "XRDGS 600")      ' Do read

    CommFlush (Port)
    str = "2 ?UX" + Chr$(10)       ' Set HP 3852A to talk
    rc = CommWrite(Port, str)
    For n = 1 To 1000
    Next n
    rc = GPIB(Port, "DISPLAY end")      ' Show we're done
    rc = CommWrite(Port, str)
    For n = 1 To 1000
    Next n

str = CommGetstr(Port)  ' Read data
MsgBox str
str = CommGetstr(Port)
MsgBox str
str = CommGetstr(Port)
MsgBox str
str = "2 ?U " + Chr$(10)                ' Unlisten
rc = CommWrite(Port, str)
str = "4 " + Chr$(10)                   ' IFC
rc = CommWrite(Port, str)
rc = CommClose(Port)

'
End Sub
Function CommGetstr(Port As Integer) As String
Dim str As String
Dim timeout As Integer
    done = 0
    timeout = 1000
    While done <> 1 And timeout > 0
    If CommRead(Port, str, 10) > 0 Then
        If InStr(str, Chr$(10)) Then done = 1
        CommGetstr = CommGetstr + str
    End If
    timeout = timeout - 1
    Wend
    CommGetstr = Replace(CommGetstr, Chr$(0), "")
    CommGetstr = Replace(CommGetstr, Chr$(10), "*")
    CommGetstr = Replace(CommGetstr, Chr$(13), "|")
    
End Function

Function GPIB(Port As Integer, Cmd As String) As Integer
    rc = CommWrite(Port, "  " + Cmd + Chr$(10))
    For n = 1 To 1000
    Next n
End Function

Re: hp3852a gpib programmering

Postat: 18 mars 2012, 11:59:11
av janaf
Det är VB6?
Tips: lägg in "DoEvents" så händer:
- Andra processer släpps in dvs CPU:n ligger inte på 100% pga While-loopen,
- Du kan få programmet att göra andra saker, typ läsa en cancel-knapp:

Kod: Markera allt

  my_cancel = False
  While done <> 1 And timeout > 0 And not my_cancel
     .
     .   
     DoEvents
  wend

Private Sub cmdCancel_Click()
  my_cancel = True
End Sub

Re: hp3852a gpib programmering

Postat: 18 mars 2012, 12:05:55
av AndersG
Det är VBA i Excel 2000 vilket jag har på labbdatorn. Inte så överdrivet elegant, men det tillåter mig att suga in ett gäng mätvärden i ett excelark. Jag använder C/c++ då jag programmerar "på riktigt" :)

Re: hp3852a gpib programmering

Postat: 9 mars 2014, 18:41:38
av AndersG
Bara FYI: Jag har moddat John Miles prologix.exe så att man kan använda det att dunka ned en programsnutt.
prologix_dump.jpg

Re: hp3852a gpib programmering

Postat: 9 mars 2014, 20:16:19
av Platis
Vad är det för USB-GPIB adapter du använder?

Re: hp3852a gpib programmering

Postat: 9 mars 2014, 20:30:20
av AndersG
Vad är det för USB-GPIB adapter du använder?
Min egen förstås :) http://www.dalton.ax/gpib.

Böjade på en liten sida.

Re: hp3852a gpib programmering

Postat: 9 mars 2014, 20:51:58
av Platis
Det var intressant! :)
HP3852A verkar vara en riktigt "versatile" maskin, vad har du för moduler till din?
Vad för cpu använder den?

Re: hp3852a gpib programmering

Postat: 9 mars 2014, 22:01:29
av AndersG
Den är Motorola 68000-baserad. Jag har en 44702 fast voltmeter, två FET-multiplexers, två 44725 en 44877 samt en HP Agilent 44726A 2 CHL Arbitrary Waveform DAC Module. Den sista på väg från USA. Kommer i April.

Re: hp3852a gpib programmering

Postat: 9 mars 2014, 22:06:28
av Platis
Vet inte om du har sett det här, nyligen inlagt!


Re: hp3852a gpib programmering

Postat: 9 mars 2014, 22:34:34
av X-IL
Den här hamnade hos rätt kille helt klart!

Re: hp3852a gpib programmering

Postat: 10 mars 2014, 07:56:39
av AndersG
@Platis
Vet inte om du har sett det här, nyligen inlagt!
Nej, tack för tipset! Skall lägga in en länk till dem.

@X-IL

Tog mig några år dock...