Sida 1 av 1

Läsa Rigol DS1054Z i python.

Postat: 16 november 2022, 14:25:54
av Repaterion
Tjosan!

Försöker prata python med ett rigol skop.
När jag läser via Keysight commander så får jag ut rätt värde, men via pythonscriptet får jag helt vansinniga värdet. Tex 5v ger 18, scale 5v =25.
Men HP E3647 läses rätt på båda ställena.

Skopet svara på kommandon men inte avläsning.. :roll:

Någon som har en teori?
//Rep

Re: Läsa Rigol DS1054Z i python.

Postat: 16 november 2022, 14:53:12
av rvl
Har inget Rigolskop, men förstod ja rätt att du fick 18 när du förväntade dig 25? I såfall kanske det var 0x18 = 24.

Kanske litet debugprint av råådata vore på sin plats.

Re: Läsa Rigol DS1054Z i python.

Postat: 16 november 2022, 21:13:05
av Repaterion
Nej det är missuppfattat.
Samma sak hemma nu med mitt eget Rigol DS1054Z skop.

Skickar in 4Vpp 1kHz.
Keysight läser av datan som 4,08Vpp.
Nat Instru: Läser samma som Keysight.
pyvisa läser av Vpp som 24 och FREQ som 17 vilket borde 1kHz vilket de andra två säger.

Det är precis som att pyvisa inte läser av rätt "minnesadress" fast skickar jag tex *IDN? då kommer hela harrangen tillbaka med serienummer, model etc men inga mätningar.
Skickar jag AUT så ställer skopet in sig, :RUN/STOP så startar/stoppar skopet.

Skall testa med en Textronix TD220 vis RS232 i morgon och se vad som händer.
Kodsnutten ser ut så här. i alla fall.

Kod: Markera allt

import pyvisa

rm = pyvisa.ResourceManager()

signal = rm.open_resource('USB0::0xF4EC::0x1103::SDG1XCBC5R0563::0::INSTR')
dso = rm.open_resource('USB0::0x1AB1::0x04CE::DS1ZA192712413::0::INSTR')

volt = dso.write(':MEAS:ITEM? VPP, CHAN1')
print(volt)
freq = dso.write(':MEAS:COUN:VAL?')
print(freq)
Utkast:
[Running] python -u "c:\temp\privat\python\DSO_test.py"
24
17

[Done] exited with code=0 in 0.523 seconds
20221116_211058.jpg
20221116_211104.jpg

Re: Läsa Rigol DS1054Z i python.

Postat: 16 november 2022, 22:29:59
av mankan
Du ska köra dso.query, inte dso.write. Write är för kommandon du inte vill ha tillbaka data ifrån.

Re: Läsa Rigol DS1054Z i python.

Postat: 17 november 2022, 06:54:40
av H.O
Eller följa .write() med .read()

Kod: Markera allt

dso.write(':MEAS:ITEM? VPP, CHAN1')
volt = dso.read()
print(volt)
Men med .query så får man automatiskt en write och en read så det är smidigare.

Re: Läsa Rigol DS1054Z i python.

Postat: 17 november 2022, 17:59:27
av Repaterion
Jo query är praktiskt på så vis men det känns så relativt med rigol att nu tar vi QUERY nästa gång är det ? sedan write, "ready" bitarna "finns" men inte aktiva etc etc.

Men jag fick ut riktiga svar i dag, dock lite tungvindiga att hantera men det är ett steg i rätt riktning.
4,00000000000e1 är svaren.

SÅ volt t.ex skulle skrivas :CHAN1:MEAS VXXX om jag minns rätt nu.

Får läsa på om SCPI mer helt enkelt.

Re: Läsa Rigol DS1054Z i python.

Postat: 17 november 2022, 21:01:58
av mankan
Du verkar köra med 10x på proben eller så har du inte 50Ohms-terminering i DS1054-änden.

Re: Läsa Rigol DS1054Z i python.

Postat: 23 november 2022, 09:27:23
av Repaterion
Nu har jag fått snurr på de problemen, men nu sitter jag med ett annat.
Till spänningsaggregatet så vill jag via input("bla bla bla") sätta spänning och ström via prompten tex.
men SCPI/PyVISA vill inte veta av input med de olika försöken jag testat hittills, så som konvertera till sträng, int, sätte ihop en sträng och kicka den etc.
Mitt HP piper bara irriterat på mig.

Någon som pysslat med detta?
I supply.write så har jag bara skickat med APPL nu föt att få det att fungera för stunden. Så ta inte koden allt för ordagrant.

Kod: Markera allt

def supply_measure():
    supply = rm.open_resource('ASRL10::INSTR')
    #### SÄTTER KANAL 1 TILL UTGÅNG
    chan = input('Which chanal will be used? ')
    chan = int(chan)
    if chan == 1:
        supply.write('INST:SEL OUT1')
        vlt = int(input('Volt? '))
        vlt_set = 'APPLy+{vlt}, 0.05'
        print(vlt_set)
        supply.write('APPLy 4, 0.05')
        sleep(0.05)
        supply.write('OUTPut ON')
    else :
        supply.write('INST:SEL OUT2')
        #vlt = int(input('Volt? '))
        supply.write('APPLy 15, 0.5')
        sleep(0.05)
        supply.write('OUTPut ON')

    #supply = instrument_setup(supply.write("input('Specify voltage: )"))
    pass

Re: Läsa Rigol DS1054Z i python.

Postat: 23 november 2022, 10:01:01
av Repaterion
Löste det med detta tillägg -> ('APPLy %f, 0.05' %vlt)