Python och PyVISA för programerbara test- & mätinstrument.

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
H.O
Inlägg: 5684
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Python och PyVISA för programerbara test- & mätinstrument.

Inlägg av H.O »

Jag är nybörjare när det gäller Python och även om det inte är direkt bristfälligt med information på nätet så tänkte jag här dokumentera hur jag installerade och konfigurerade miljön för att "prata med" mina test- och mätinstrument genom Python för Windows samt visa några enklare exempel. Kom dock ihåg att jag inte är nån van Python-programmerare.

De flesta av mina instrument är av fabrikatet Rigol, deras mjukvara UltraSigma innehåller diverse verktyg som kan användas för att ta reda på IP- USB- och GPIB-adresser till respektive anslutna instrument samt testa kommunikationen. Installerar man UltraSigma så installeras också en version av National Instruments VISA library (NI-VISA). UltraSigma är inte strlkt nödvändigt och om det inte är Rigol-instrument man ska prata med så finns det ingen anledning att installera det men för mig så är det ett smidigt sätt att "komma åt" instrumenten och så fick jag en kompatibel version av NI-VISA installerad på köpet så att säga.

Jag laddade ner och installerade Rigol UltraSigma 00.01.06.01 från http://int.rigol.com/Support/SoftDownload/2

Python verkar distribueras på "lite" olika sätt, allt från minimala distributioner till kompletta utvecklingsmiljöer. Jag valde en av den senare, nämligen WinPython 3.6.2.0 från http://winpython.github.io/ den kommer med massor av bibliotek, diverse verktyg och ett IDE vid namn Spyder. Jag valde att installera hela rasket.

PyVISA är "klistret" mellan Python och funktionerna som NI-VISA tillhandahåller. Det är inte ett av alla de bibliotek som följer med i WinPython-installation så det måste installeras manuellt. Öppna mappen där WinPython installerades, starta WinPython Command Prompt, kör

Kod: Markera allt

pip install -U pyvisa
Förhoppningsvis bör det i slutänden resultera i meddelandet Successfully installed pyvisa-1.8 eller nått i den stilen.

Det är "allt" som behöver installeras och man kan nu använda Ultra Sigma för att testa kommunikationen och ta reda på "adressen" eller "resursnamnet" på de anslutna instrumenten. Jag ha mina instrument anslutna via LAN så i UltraSigma klickar jag på [LAN] och sedan [Search] varpå de anslutna instrumentens resursnamn poppar upp i fönstret. Ett klick på [OK] tar oss tillbaka till huvudfönstret:
Ultra sigma 3.PNG
Här ser vi att jag har en DM3068 multimeter och ett DP832 spänningsaggregat anslutet. Det vi är intresserade av här är som sagt de olika instrumentens resursnamn t.ex TCPIP::192.168.10.170::INSTR. Vi behöver dom i Python-koden och ett smidigt sätt att kopiera sagda resursnamn är högerklick -> Operation -> Copy Adress.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av H.O 23 september 2017, 16:40:30, redigerad totalt 1 gång.
H.O
Inlägg: 5684
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: Python och PyVISA för programerbara test- & mätinstrumen

Inlägg av H.O »

Från katalogen där vi installerade WinPython kan vi starta Spyder och börja skriva lite kod. För att i all enkelhet testa kommunikationen med de båda instrumenten i klassisk Hello World stil:

Kod: Markera allt

# Importera visa-biblioteket
import visa

# Skapa en instans av ResourceManager
rm = visa.ResourceManager()

# Skapa en anslutning till DP832
DP832 = rm.open_resource('TCPIP::192.168.10.112::INSTR')

# Skapa en anslutning till DM3068
DM3068 = rm.open_resource('TCPIP::192.168.10.170::INSTR')

# Be de båda instrumenten att identifiera sig, skriv ut svaren i konsollen.
print(DP832.query('*IDN?'))
print(DM3068.query('*IDN?'))
Notera resursnamnenen vi tidigare plockade från UltraSigma. När koden körs printas resultatet av kommandot *IDN? från respektive instrument i konsollen:

Kod: Markera allt

RIGOL TECHNOLOGIES,DP832,DP8C151700494,00.01.11
Rigol Technologies,DM3068,DM3O151800330,01.01.00.01.09.00
Inte så spännande med det visar att allt fungerar som det ska vilket alltid är ett första, viktigt steg. Ett kanske något mer spännande exempel är att konfigurera kanal 2 hos DP832 till 5.5V med 200mA strömbegränsning, aktiverar utgången, vänta en sekund och sedan be DM3068 att mäta spänningen och ge oss resultatet.

Kod: Markera allt

import visa
from time import sleep

rm = visa.ResourceManager()

DP832 = rm.open_resource('TCPIP::192.168.10.112::INSTR')
DM3068 = rm.open_resource('TCPIP::192.168.10.170::INSTR')

DP832.write('APPLY CH2, 5.5, 0.2')
DP832.write('OUTPUT CH2, ON')

sleep(0.5)

print(DM3068.query('meas:volt:dc?'))

DP832.write('OUTPUT CH2, OFF')
Senast redigerad av H.O 23 september 2017, 17:09:44, redigerad totalt 1 gång.
H.O
Inlägg: 5684
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: Python och PyVISA för programerbara test- & mätinstrumen

Inlägg av H.O »

Reserverad
Skriv svar