How to use the rigol 1042CD

Is de scope niet met LabView te koppelen?
en bv verschillende vitueele instrumenten maken voor gebruik met de scope

[Bericht gewijzigd door The Puma op woensdag 11 juli 2007 23:24:13 (48%)

... SCPI-variant ...

Brain fart: ik bedoel een open-source SCPI *implementatie*. Voor hobbybouw-meetapparatuur misschien overkill, maar wel handig dat je niet zelf 't wiel hoeft uit te vinden.

Ik heb het stukje 3x moeten lezen voordat ik snapte hoe FE het gelezen had dat ie zo reageerde. Ik had het gelezen zoals jij het bedoelde.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Ok. It's there! Watte vraagt u zich af?

De Rigol wiki!

Ik heb even een wiki opgezet waar we met z'n allen aan de gevonden info kunnen werken.

http://gaia.bitwizard.nl/rigol/

Ik wil eigenlijk dat alleen ingelogde mensen kunnen editen. Als iemand weet waar ik dat in moet stellen, graag. Tot die tijd: Aub een account maken, en inloggen als je gaat editen. :-)

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Op 11 juli 2007 17:28:30 schreef williewortel:
dat merkte ik ook, maar de link copy & paste in de url bar werkt wel.
Zal kijken wat ik eraan kan doen

edit:

FF een linkje aangemaakt, lijkt dan wel te werken. http://www.angelfire.com/linux/gearloose/rigol.html

Iemand al geprobeerd? K-ray melde laatst problemen, weet niet of
anderen ook problemen hebben met het uitvoeren van het testprogje?

Op 12 juli 2007 09:53:30 schreef rew:
Ok. It's there! Watte vraagt u zich af?

De Rigol wiki!

Ik heb even een wiki opgezet waar we met z'n allen aan de gevonden info kunnen werken.

http://gaia.bitwizard.nl/rigol/

Ik wil eigenlijk dat alleen ingelogde mensen kunnen editen. Als iemand weet waar ik dat in moet stellen, graag. Tot die tijd: Aub een account maken, en inloggen als je gaat editen. :-)

leuk zo'n wiki, maar ik zie liever dat het hier op CO blijft.

IF you can't convince them, then confuse them!
free_electron

Silicon Member

Op 12 juli 2007 08:35:10 schreef rew:
[...]
Brain fart: ik bedoel een open-source SCPI *implementatie*. Voor hobbybouw-meetapparatuur misschien overkill, maar wel handig dat je niet zelf 't wiel hoeft uit te vinden.

Ik heb het stukje 3x moeten lezen voordat ik snapte hoe FE het gelezen had dat ie zo reageerde. Ik had het gelezen zoals jij het bedoelde.

SCPI is niks anders dan een stomme parser.
het dubbele punt duidt een 'branch aan' in de boom ( SCPI is een boom structuur. vergelijk het met een root directory en subfolders.
als een ontvangen commando begint met ene dubbele punt betekent dat : ga naar de root.

dus bijvoorbeeld

code:


:DISP:TEXT 'hello world'

worddt geinterpreteerd als
: ga naar root
open DISP functies
open TEXT functie en geef als argument 'hello world' door

ik kan ook dit doen

code:


:DISP:TEXT 'hello'

en dan als volgende commando

code:


TEXT 'world' 

sturen.
aangezien mijn commando hier niet begint met een dubbele punt ga ik niet terug naar de root maar blijf ik in de DISP functie staan.

een ander voorbeeld.
stel er zijn trigger functies voorhanden en die zitten. en in trigger zijn er 3 subcategoriien : level , channel en mode

in plaats van

code:


:TRIGGER:LEVEL 1v
:TRIGGER:CHANNEL 1
:TRIGGER:MODE EXT

te sturen
kan je dit sturen

code:


:TRIGGER:LEVEL 1V
CHANNEL 1
MODE EXTERNAL

voor de mensen die DOS nog kennen. vergelijk het dubbele punt met een CD commando ( change directory )

al wet je dus moet doen is een lexer maken die een riedel karakters kan afwandelen. begint de riedel met een : dan begin je van voren af aan.

bij SCPI is het ook zo dat je alleen de eerste 4 ( in sommige gevallen zijn het niet noodzakelijk de eerste vier. ) van een commando mag sturen.

dus bovenstaand geval kan ook zijn

code:


:TRIG:LEV 1V
CHAN 1
MODE EXT

als je een handboek pakt van een instrument staan de NOODZAKELIJK caracters meestal ofwel in vet gedrukt of in uppercase ( voor de instrumenten maakt het niks uit. alles wordt omgezert naar uppercase behalve tekst die als argumenten meegegeven wordt.

een ascii string in een argument is ge-encapsuleerd in ofwel enekel ofwel dubbele haakjes.

bijvoorbeeld
TEXT '"hello"world' = argument is "hello"world
TEXT "'hello'world" = argument is 'hello'world

dit kan niet :
TEXT ''hello' world ' en resulteert in een error ( haakjes in haakjes kan niet )

er zijn een aantal voorgedefineerde categorieen in scpi.

er zijn ook de * commandos en die zijn VERPLICHT te implementeren

*CLR = clear de command buffer
*RST = reset machiene
*IDN? = identify yourself

SCPI echo'd niks een antwoord wordt alleen gestuurd als er een ? ontvangen wordt.

dus ik kan sturen

code:


:TRIG:LEV 1V 

dit echo'd niks. als ik echter dit doe :

code:


:TRIG:LEV?

dan komt er 1V terug ( of whatever de instelling is )

elk commanod wordt afgesloten met een <cr> ( carriage return ascii code 13 )
<lf> ( ascii code 10 ) wordt verworpen.

voila da ist. niks simpeler.

Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM

Is die DSO3000 programmers manual ergens te downloaden?
Bij Agilent vind ik hem niet.

FE, als er verschillende standaard programmas zouden zijn die met scopes kunnen babbelen die "SCPI" zouden praten, dan zou volgens mij de implementatie op de scope zo goed moeten zijn dat het de "standaard" volgt.

Volgens mij hebben ze bij rigol de SCPI standaard maar als richtlijn genomen, en alleen geimplementeerd wat HUN ultrascope nodig heeft...

Die stuurt nooit lower case letters, dus 1 lower case letter er tussen en het werkt niet.

Voor "ACQ:AVER" moet je een NR1 (integer) opgeven. Bij agilent en Rigol moet je het aantal samples (2, 4, 8, ...256) opgeven, bij de gds 2000 moet je de macht-van-2 opgeven (1-8).

code:


> :ACQ:TYPE?
Writing header len=10
0000:   4e 4f 52 4d 41 4c                         NORMAL
> :acq:type?
Writing header len=10
> :ACQuire:type?
Writing header len=14
> :ACQUIRE:TYPE?
Writing header len=14
0000:   4e 4f 52 4d 41 4c                         NORMAL
> :ACQU:TYPE?
Writing header len=11
> :ACQUIR:TYPE?
Writing header len=13

Kortom, de afkorting OF de volledige string zijn toegestaan, en alleen hoofdletters.

Holy shit:

code:


> :ACQ:MODE?
Writing header len=10
0000:   52 45 41 4c 5f 54 49 4d   45                        REAL_TIME
> :ACQ:MODE ETIME
Writing header len=15
> :ACQ:MODE?
Writing header len=10
0000:   45 51 55 41 4c 5f 54 49   4d 45                     EQUAL_TIME
> :ACQ:MODE REAL_TIME
Writing header len=19
> :ACQ:MODE?
Writing header len=10
0000:   45 51 55 41 4c 5f 54 49   4d 45                     EQUAL_TIME
> :ACQ:MODE RTIM
Writing header len=14
> :ACQ:MODE?
Writing header len=10
0000:   52 45 41 4c 5f 54 49 4d   45                        REAL_TIME
> 

De rigol slikt NIET altijd de waardes die hij teruggeeft als je de variable opvraagt. Ik had al een beetje zoiets gezien bij NR3 (floating point) getallen: Ik kan de waarde nog niet veranderen, hoewel ik had geprobeerd me aan het teruggegeven formaat te houden. [edit] Hij gebruikt NR2 (fixed point) formaat voor invoer. 1.00e-06 is dus 0.000001 .

Op 12 juli 2007 17:22:03 schreef Jeroen Boere:
[...]
leuk zo'n wiki, maar ik zie liever dat het hier op CO blijft.

Enerzijds, ja. Anderzijds, ik werd een beetje kriegel om iedere keer de hele thread door te zoeken als ik om een stukje info verlegen zat waarvan ik dacht dat het in deze thread ergens stond.

[edit] Alle commandos uit de Agilent docs zijn overgetypt, getest en ingevoerd in de wiki.....

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
free_electron

Silicon Member

Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
free_electron

Silicon Member

Op 12 juli 2007 21:25:11 schreef rew:
FE, als er verschillende standaard programmas zouden zijn die met scopes kunnen babbelen die "SCPI" zouden praten, dan zou volgens mij de implementatie op de scope zo goed moeten zijn dat het de "standaard" volgt.

je haalt 2 dingen door elkaar. SCPI is enkel een methode om die boomstructuur te doorwandelen. de nodes in de boom zijn NIET gedefinieerd en volledig vrij.
net zoals jij op ene harde schijf een directory eender wleke naam kan geven staat het een fabrikant vrij om eendert welke naamgeving te gebruiken.

er zijn een aantal voorgedefineerde woorden maar er is geen 'must' om die te gebruiken.
alleen het naviagtie mechaniesme met die dubbele punt moet geimplementeerd zijn. en de * commandos.

Volgens mij hebben ze bij rigol de SCPI standaard maar als richtlijn genomen, en alleen geimplementeerd wat HUN ultrascope nodig heeft...

SCPI is ook allen mar een richtlijn. elke fabrikant implementeet die op zijn manier

Die stuurt nooit lower case letters, dus 1 lower case letter er tussen en het werkt niet.

dat kan zijn. SCPI definieert dat je commandos als uppercase moet sturen ( toch het gedeelte wat als keyword beschouwd wordt. sommige implementaties van een scpi parser smijten alle lowercase caracters weg. ( dat wegsmijten gebeurt al in de controller. zodoende is het aantal caracters wat fysiek over de communicatiepijp gaat ( en het werk aan de scoop zijde ) automatisch gereduceerd tot ene minimum. Als je SCPI loopt over GPIb kaarten ( toch de intelligente kaarten ) dan gebeurt dit 'wegsmijten' automatisch.

als je in de manuals kijkt van HP dan zie je bijvoorbeeld dit staan :

:TRIGger:CHANnel 1

de SCPI handler smijt alle lowercases weg en krijgt dus alleen :TRIG:CHAN 1 te parsen.
maar .... !
als jij TRiG:CHaN 1 stuurt krijgt de parser
TRG:CHN 1 te zien en die commandos kent hij niet !

Bij agilent en Rigol moet je het aantal samples (2, 4, 8, ...256) opgeven, bij de gds 2000 moet je de macht-van-2 opgeven (1-8).

elke fabrikant staat vrij te implementeren wat hij wil.

code:


> :ACQ:TYPE?
Writing header len=10
0000:   4e 4f 52 4d 41 4c                         NORMAL
> :acq:type?
Writing header len=10
> :ACQuire:type?
Writing header len=14
> :ACQUIRE:TYPE?
Writing header len=14
0000:   4e 4f 52 4d 41 4c                         NORMAL
> :ACQU:TYPE?
Writing header len=11
> :ACQUIR:TYPE?
Writing header len=13

Kortom, de afkorting OF de volledige string zijn toegestaan, en alleen hoofdletters.

juist. lees mijn uitleg hierboven.
Bij sommige toestellen worden alle lowercases WEGGESMETEN vooraleer de parser binnegegaan wordt ! ( die rigol doet dat dus blijkbaar . HP doet dat trouwens ook )

dus als jij

code:


:ACQU:Type

stuurt dan krijgt de parser

code:


:ACQU:T

te zien en dat kent hij niet ...

Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM

Op 12 juli 2007 21:44:05 schreef free_electron:

er zijn een aantal voorgedefineerde woorden maar er is geen 'must' om die te gebruiken.

Volgens mij stel je het wat al te simpel voor. Wat ik zo snel zag van de SCPI spec was dat een 'goede' SCPI parser bijvoorbeeld ook rekening houdt met eenheden. Dus dingen als :CHAN 1:RANGE 100mV en :CHAN1:RANGE 0.1V zijn equivalent, etc. Dat zijn toch de wat minder triviale dingen.

Op 12 juli 2007 17:22:03 schreef Jeroen Boere:
leuk zo'n wiki, maar ik zie liever dat het hier op CO blijft.

Op zich zou dat beter zijn ja, maar aan de andere kant merk je aan een topic als dit dat er pagina's vol informatie door elkaar staat. Prachtig om met elkaar te discussieren en een oplossing te vinden, maar een mooi 'naslag artikel' wordt het zo niet. Op een wiki kan dat wel.

Is het misschien een idee dat als er op de wiki een mooi compleet (en correct) artikel is ontstaan, dit artikel op CO gezet wordt? Discussie (zoals in dit topic) kan uiteraard ook hier blijven. Dan is de wiki dus eigenlijk alleen voor het schrijven/aanvullen/onderhouden van informatie en artikelen (precies zoals een wiki bedoeld is).

Misschien sowieso een idee om CO uit te breiden met een electronica-wiki-sectie?

If you want to succeed, double your failure rate.
free_electron

Silicon Member

Op 12 juli 2007 22:13:41 schreef alex278:
[...]

Volgens mij stel je het wat al te simpel voor. Wat ik zo snel zag van de SCPI spec was dat een 'goede' SCPI parser bijvoorbeeld ook rekening houdt met eenheden. Dus dingen als :CHAN 1:RANGE 100mV en :CHAN1:RANGE 0.1V zijn equivalent, etc. Dat zijn toch de wat minder triviale dingen.

neen. het meegeleverde argument is van een bepaald type ( NR1 0 er zijn verschillende voorgedfinieerde numerieke formaten.
en ja de parser kan weg met dingen zoals mV en KV en mS en S en dergelijke.

ik zeg niet dat die argumenten parser niet complex is, maar de boomstructuur bewandelen is niet moilijker dan een directorystructuur navigeren.

Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM

FE,

De RIGOL houdt zich niet aan jou specs; De lowercase letters worden niet weggegooid. :TRIGe:EDGE:SOUR? werkt niet, :TRIG:EDGE:SOUR? wel.

De RIGOL houdt zich voor ongeveer de helft van de commandos aan de handleiding vna de Agilent. Het biedt een basis, maar niet een handleiding. Ik hoop dat we samen m'n wiki kunnen uitbreiden.

Zo heb ik gevonden dat in de Agilent handleiding:
TRIGer[:EDGE]:SWEep genoemd wordt. Het feature heeft de rigol ook gewoon, maar het commando heet kennelijk anders. Iemand moet voor mij eens tracen hoe Ultrascope dit commando doet....

Om een groter deel van het sample-geheugen uit te lezen, zie ik geen mogelijkheid, anders dan om de delayed timebase te gebruiken (De scope ondersteunt het doe je hele geheugen commando niet, of ik heb hem niet kunnen vinden....) Maar ook de delayed timebase commandos doen het niet. Voorlopig zie ik dan alleen maar de mogelijkheid om remote op toetsen te gaan rammen....... Iemand die suggesties heeft om het beter te doen is welkom....

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
free_electron

Silicon Member

das dan inderdaad ene afwijking in de rigol.
wel vreemd. tzijn de zelfde machienes. waarschijnlijk zal de agilent zich dan ook zo gedragen.

voor memory trasnfers wordt er meestal een binary format gebruikt.
je zend de data dan in bulk uit.

probeers eens stomweg

code:


:TRACE:CHAN 1?
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM

Op 13 juli 2007 03:29:20 schreef free_electron:
probeers eens stomweg

code:


:TRACE:CHAN 1?

Done. Geen respons.

Voor kanaal indicaties zie ik de rigol niet anders dan "CHAN1" of "CHAN2" gebruiken, zonder spatie dus. Ook die heb ik geprobeerd.

De data op het scherm uitlezen gaat met

code:

 :WAV:DATA? 

Je krijgt dan 1023 samples. (ja dat schrijf ik goed, 1023, niet 1024).

[edit] Het zijn toch 1024 bytes. De code had "max 1023" als limiet.... Niet handig. :-(

Hoe het kanaal te selecteren snap ik nog niet.
Hoe de rest van het diepe geheugen te selecteren, snap ik ook nog niet.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Op 13 juli 2007 03:29:20 schreef free_electron: wel vreemd. tzijn de zelfde machienes.

Daar heb je het steeds weer over, maar kan je ook eens juist zeggen welk model Agilent dezelfde is als onze DS1024CD ?

Hier nog een handige DLL om ultrascope te loggen: Rigolusb1000_logger.zip

Gebruiksaanwijzing:

  • Kopieer ultrascope naar een nieuw mapje
  • Kopieer Rigolusb1000_UI.dll uit windows\system32 naar het mapje
  • Hernoem de gekopieerde DLL naar Rigolusb2000_UI.dll
  • Gooi de Rigolusb1000_UI.dll uit de zip file naast de 2000_UI dll.
  • Start ultrascope en alle acties worden gelogt naar rigol.txt in dezelfde map. Je kunt deze tegelijkertijd (tijdens het loggen) met een editor bekijken, misschien dat je wel af en toe even moet refreshen.

De log wordt steeds langer (niets wordt overschreven) dus af en toe even leeg gooien.

free_electron

Silicon Member

geen enkel.

ze komen uit dezelfde fabriek en zijn door dezelfde groep gemaakt.

maar de hp modellen zijn specifiek voor HP ( de software wijkt ook af ) en HP heeft waarschijnlijk een aantal 'features' die specifiek voor hen zijn.

Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM

OK. Voor de Linux gebruikers: http://prive.bitwizard.nl/rigol/rigol-0.1rew2.tgz
Zit nu readline met history support in.

Ik was effe bezig om een GUI te maken waar voor iedere toets een :KEY:.... commando naar de scope gestuurd zou worden, maar m'n "glade" installatie is weer eens kapot. Dat ding is zo ontzettend fragiel.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
free_electron

Silicon Member

Op 13 juli 2007 22:45:28 schreef K-Ray:
[...]
[...]
euh, ik kan niet meer volgen dan...

ze komen ui tdezelfde fabriek en van dezelfde ontwerkgorep. tzijn varianten van een platform.

Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM

Kennelijk vertonen de Agilent D3XXX scopes uiterlijk enorme gelijkenis met de Rigol DS1xxxC scopes. Verder zijn ze verkrijgbaar in een zwik speedgrades die precies overeenkomen.

De gok is dan dat ze gewoon dezelfde hardware hebben, en tevens dezelfde firmware. Dat laatste blijkt niet het geval. Agilent heeft kennelijk aan Rigol gevraagd of ze de firmware op bepaalde punten konden aanpassen. Ik gok dat dit is omdat Agilent dan minder aan HUN windows software hoeft aan te passen om de boel aan de praat te krijgen.

Gevolg is dat de programming manual van Agilent niet 100% op de Rigol van toepassing is. Jammer.

Bij gebrek aan een "hele memory buffer downloaden" commando, kan het als volgt:

programma stuurt ":STOP", vervolgens kan je met ":TIMEBASE:SCALE" de schaal verkleinen totdat je de individuele samples gaat zien. Vervolgens stap je met ":TIMEBASE:OFFSET" door de hele buffer totdat je alle data hebt kunnen downloaden met iedere keer een ":WAV:DATA?".

:WAV:DATA? stuurt 1 kbyte aan data, met 424 bytes aan "ongeinitializeerde buffer", en 600 bytes aan sample-data.

Op de scope zit onder "ACQUIRE" een niet te veranderen veldje met de "Sa Rate". Als ik die kan opvragen, dan is het makkelijk. De ":WAV:DATA?" stuurt namelijk 50 samples per div, dus dan kan je makkelijk uitrekenen wat de ":TIM:SCAL" en ":TIM:OFFS" settings moeten zijn. [edit2] Gevonden! ":ACQ:SAMP?" geeft de sample freq.

[edit] Voor de BigSmile :D moet je : D lezen.
[edit3] Kan je met Ultrascope iets met de LA doen? Kan iemand dat voor me tracen?

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Via de USB device poort (is dat de achterkant?) kan de DG2000 (functiegenerator) blijkbaar wel de hele buffer uitlezen. Op blz 83 van de DG2000 manual staat dat deze apparaten naadloos kunnen samenwerken, en dat alle 512K punten uitgelezen worden.

Ik weet niet helemaal zeker of de DG2000 nou host of device is in dit geval, het lijkt erop dat ie host is en dus een PC hetzelfde zou moeten kunnen.