Commit 90e45ebe9dbf970c62e8a864a3462d161ea969d0

Authored by mer0m
Committed by GitHub
1 parent ccf79815aa
Exists in master

Add files via upload

Showing 8 changed files with 556 additions and 1 deletions Inline Diff

instruments/AG34461A.py
File was created 1 from abstract_instrument import abstract_instrument
2 import socket
3
4 #==============================================================================
5
6 ALL_VAL_TYPE = "DCV, ACV, DCI, ACI, RES2W, RES4W, FREQ"
7
8 #==============================================================================
9
10 class AG34461A(abstract_instrument):
11 def __init__(self, adress="192.168.0.61", vtype="DCV"):
12 self.adress = adress
13 self.port = 5025
14 self.vtype = vtype
15
16 def model(self):
17 self.send("*IDN?")
18 return self.read()
19
20 def connect(self):
21 try:
22 print('Connecting to device @%s:%s...' %(self.adress, self.port))
23 self.sock = socket.socket(socket.AF_INET,
24 socket.SOCK_STREAM,
25 socket.IPPROTO_TCP)
26 self.sock.settimeout(10.0) # Don't hang around forever
27 self.sock.connect((self.adress, self.port))
28 print(' --> Ok')
29
30 print(self.model())
31
32 if self.vtype == "DCV":
33 self.send("CONF:VOLT:DC")
34 elif self.vtype == "ACV":
35 self.send("CONF:VOLT:AC")
36 elif self.vtype == "DCI":
37 self.send("CONF:CURR:DC")
38 elif self.vtype == "ACI":
39 self.send("CONF:CURR:AC")
40 elif self.vtype == "RES2W":
41 self.send("CONF:RES")
42 elif self.vtype == "RES4W":
43 self.send("CONF:FRES")
44 elif self.vtype == "FREQ":
45 self.send("CONF:FREQ")
46 else:
47 print("Wrong -v argument")
48 raise
49
50 except socket.timeout:
51 print("Socket timeout error during connection.")
52 raise
53 except socket.error as er:
54 print("Socket error during connection: " + str(er))
55 raise
56 except Exception as er:
57 print("Unexpected error during connection: " + str(er))
58 raise
59
60 def getValue(self):
61 self.send("READ?")
62 return self.read()
63
64 def read(self):
65 ans = ''
66 nb_data_list = []
67 nb_data = ''
68 try:
69 while ans != '\n':
70 ans = self.sock.recv(1)
71 nb_data_list.append(ans) # Return the number of data
72 list_size = len(nb_data_list)
instruments/AG34972A.py
File was created 1 from abstract_instrument import abstract_instrument
2 import socket
3
4 #==============================================================================
5
6 ALL_VAL_TYPE = "DCV, ACV, DCI, ACI, RES2W, RES4W, FREQ"
7
8 #==============================================================================
9
10 class AG34972A(abstract_instrument):
11 def __init__(self, adress="192.168.0.72", vtype="DCV"):
12 self.adress = adress
13 self.port = 5025
14 self.vtype = vtype
15
16 def model(self):
17 self.send("*IDN?")
18 return self.read()
19
20 def connect(self):
21 try:
22 print('Connecting to device @%s:%s...' %(self.adress, self.port))
23 self.sock = socket.socket(socket.AF_INET,
24 socket.SOCK_STREAM,
25 socket.IPPROTO_TCP)
26 self.sock.settimeout(2.0) # Don't hang around forever
27 self.sock.connect((self.adress, self.port))
28 print(' --> Ok')
29
30 print(self.model())
31
32 if self.vtype == "DCV":
33 self.send("CONF:VOLT:DC (@102:103)")
34 elif self.vtype == "ACV":
35 self.send("CONF:VOLT:AC (@102:103)")
36 elif self.vtype == "DCI":
37 self.send("CONF:CURR:DC (@102:103)")
38 elif self.vtype == "ACI":
39 self.send("CONF:CURR:AC (@102:103)")
40 elif self.vtype == "RES2W":
41 self.send("CONF:RES (@102:103)")
42 elif self.vtype == "RES4W":
43 self.send("CONF:FRES (@102:103)")
44 elif self.vtype == "FREQ":
45 self.send("CONF:FREQ (@102:103)")
46 else:
47 print("Wrong -v argument")
48 raise
49
50 except socket.timeout:
51 print("Socket timeout error during connection.")
52 raise
53 except socket.error as er:
54 print("Socket error during connection: " + str(er))
55 raise
56 except Exception as er:
57 print("Unexpected error during connection: " + str(er))
58 raise
59
60 def getValue(self):
61 self.send("MEAS? AUTO,DEF,(@102:103)")
62 return self.read()
63
64 def read(self):
65 ans = ''
66 nb_data_list = []
67 nb_data = ''
68 try:
69 while ans != '\n':
70 ans = self.sock.recv(1)
71 nb_data_list.append(ans) # Return the number of data
72 list_size = len(nb_data_list)
instruments/LS350.py
File was created 1 from abstract_instrument import abstract_instrument
2 import socket
3
4 #==============================================================================
5
6 ALL_VAL_TYPE = "TEMP, RES"
7
8 #==============================================================================
9
10 class LS350(abstract_instrument):
11 def __init__(self, adress="192.168.0.12", vtype="TEMP"):
12 self.adress = adress
13 self.port = 7777
14 self.vtype = vtype
15
16 def model(self):
17 self.send("*IDN?")
18 return self.read()
19
20 def connect(self):
21 try:
22 print('Connecting to device @%s:%s...' %(self.adress, self.port))
23 self.sock = socket.socket(socket.AF_INET,
24 socket.SOCK_STREAM,
25 socket.IPPROTO_TCP)
26 self.sock.settimeout(10.0) # Don't hang around forever
27 self.sock.connect((self.adress, self.port))
28 print(' --> Ok')
29
30 print(self.model())
31
32 if self.vtype == "TEMP":
33 1
34 elif self.vtype == "RES":
35 1
36 else:
37 print("Wrong -v argument")
38 raise
39
40 except socket.timeout:
41 print("Socket timeout error during connection.")
42 raise
43 except socket.error as er:
44 print("Socket error during connection: " + str(er))
45 raise
46 except Exception as er:
47 print("Unexpected error during connection: " + str(er))
48 raise
49
50 def getValue(self):
51 if self.vtype == 'TEMP':
52 self.send('krdg? a;krdg? b;krdg? c;krdg? d')
53 return self.read()
54 elif self.vtype == 'RES':
55 self.send('srdg? a;srdg? b;srdg? c;srdg? d')
56 return self.read()
57
58 def read(self):
59 self.send("++read eoi")
60 ans = ''
61 nb_data_list = []
62 nb_data = ''
63 try:
64 while ans != '\n':
65 ans = self.sock.recv(1)
66 nb_data_list.append(ans) # Return the number of data
67 list_size = len(nb_data_list)
instruments/PM100D.py
File was created 1 from abstract_instrument import abstract_instrument
2 import os
3
4 #==============================================================================
5
6 ALL_VAL_TYPE = "PWR"
7
8 #==============================================================================
9
10 class PM100D(abstract_instrument):
11 def __init__(self, adress="/dev/usbtmc0", vtype="PWR"):
12 self.adress = adress
13 self.vtype = vtype
14
15 def model(self):
16 self.send("*IDN?")
17 return self.read()
18
19 def connect(self):
20 try:
21 print('Connecting to device @%s...' %(self.adress))
22 self.FILE = os.open(self.adress, os.O_RDWR)
23 print(' --> Ok')
24
25 print(self.model())
26
27 if self.vtype == "PWR":
28 1
29 else:
30 print("Wrong -v argument")
31 raise
32
33 except Exception as er:
34 print("Unexpected error during connection: " + str(er))
35 raise
instruments/T7Pro.py
File was created 1 from abstract_instrument import abstract_instrument
2 from labjack import ljm
3 import numpy
4
5 #==============================================================================
6
7 ALL_VAL_TYPE = "TEMP, RES"
8
9 #==============================================================================
10
11 class T7Pro(abstract_instrument):
12 def __init__(self, adress="192.168.0.26", vtype="TEMP"):
13 self.adress = adress
14 self.vtype = vtype
15 self.names = ["TEMPERATURE_AIR_K",
16 "CURRENT_SOURCE_200UA_CAL_VALUE",
17 "AIN0",# "AIN1",
18 "AIN2",# "AIN3",
19 "AIN4",# "AIN5",
20 "AIN6",# "AIN7"
21 ]
22
23 def model(self):
24 return 'T7Pro'
25
26 def connect(self):
27 try:
28 print('Connecting to device @%s...' %(self.adress))
29 self.handle = ljm.openS("T7", "ETHERNET", self.adress)
30 self.configureAINs()
31 print(' --> Ok')
32
33 print(self.model())
34
35 if self.vtype == "TEMP":
36 1
37 elif self.vtype == "RES":
38 1
39 else:
40 print("Wrong -v argument")
41 raise
42
43 except Exception as er:
44 print("Unexpected error during connection: " + str(er))
45 raise
46
47 def getValue(self):
48 results = self.read(self.names)
49 temp = results[0]
50 res1 = results[2]/results[1]
51 res2 = results[3]/results[1]
52 res3 = results[4]/results[1]
53 res4 = results[5]/results[1]
54
55 if self.vtype == 'TEMP':
56 # Temperature calculation
57 temp1 = self.res2tempSensor(628, res1)
58 temp2 = self.res2tempSensor(16947, res2)
59 temp3 = self.res2tempSensor(625, res3)
60 temp4 = self.res2tempSensor(100, res4)
61 string = '%f\t%f\t%f\t%f\t%f\n'%(temp, temp1, temp2, temp3, temp4)
62 elif self.vtype == 'RES':
63 string = '%f\t%f\t%f\t%f\t%f\n'%(temp, res1, res2, res3, res4)
64 else:
65 string = ''
66
67 return string
68
69 def read(self, names):
70 return ljm.eReadNames(self.handle, len(names), names)
71
72 def disconnect(self):
73 ljm.close(self.handle)
74
75 def send(self, command):
76 pass
77
78 def configureAINs(self):
79 # Setup and call eWriteNames to configure AINs on the LabJack.
80 names = ["AIN0_NEGATIVE_CH", "AIN0_RANGE", "AIN0_RESOLUTION_INDEX",
81 #"AIN1_NEGATIVE_CH", "AIN1_RANGE", "AIN1_RESOLUTION_INDEX",
82 "AIN2_NEGATIVE_CH", "AIN2_RANGE", "AIN2_RESOLUTION_INDEX",
83 #"AIN3_NEGATIVE_CH", "AIN3_RANGE", "AIN3_RESOLUTION_INDEX",
84 "AIN4_NEGATIVE_CH", "AIN4_RANGE", "AIN4_RESOLUTION_INDEX",
85 #"AIN5_NEGATIVE_CH", "AIN5_RANGE", "AIN5_RESOLUTION_INDEX",
86 "AIN6_NEGATIVE_CH", "AIN6_RANGE", "AIN6_RESOLUTION_INDEX",
87 #"AIN7_NEGATIVE_CH", "AIN7_RANGE", "AIN7_RESOLUTION_INDEX"
88 ]
89 l_names = len(names)
90 aValues = [1, 1, 12,
91 #199, 0.01, 0,
92 3, 1, 12,
93 #199, 0.01, 0,
94 5, 1, 12,
95 #199, 0.01, 0,
96 7, 0.1, 12,
97 #199, 0.01, 0
98 ]
99 ljm.eWriteNames(self.handle, l_names, names, aValues)
100 # print("\nSet configuration:")
101 # for i in range(len(names)):
102 # print(" %s : %f" % (names[i], aValues[i]))
103
104 def res2tempSensor(self, sensor, res):
105 if sensor==627:
106 K = [0.399341181655472610,
107 10.8420092277810909,
108 -26.4597939187660813,
109 245.9828566655493379,
110 -668.069876596331596,
111 1001.69882618263364,
112 -267.272089680656791]
113 if sensor==625:
114 K = [0.333548856582638109,
115 11.7361551595386118,
116 -31.32988932320903987,
117 262.878643524833024,
118 -704.163538021035492,
119 1056.6040485650301,
120 -307.057196729816496]
121 if sensor==628:
122 K = [0.463200932294057566,
123 13.5049710820894688,
124 -30.5191222755238414,
125 231.098593852017075,
126 -550.122691885568202,
127 806.038547554984689,
128 -198.510489917360246]
129 if sensor==16945:
130 K = [3.2497, 5.1777, 2.499]
131 if sensor==16943:
132 K = [3.4738, 5.1198, 2.3681]
133 if sensor==16944:
134 K = [3.3674, 5.2874, 2.5165]
135 if sensor==16941:
136 K = [2.9486, 4.5862, 2.266]
137 if sensor==16947:
instruments/__init__.py
foo 1 1 from os import listdir
2 from os.path import dirname
3
4 for module in listdir(dirname(__file__)):
5 if module == '__init__.py' or module == 'abstract_instrument.py' or module[-3:] != '.py':
6 continue
7 __import__(module[:-3], locals(), globals())
8
9 del module, listdir, dirname
2
instruments/abstract_instrument.py
File was created 1 import abc
2
3 class abstract_instrument(object):
4 __metaclass__ = abc.ABCMeta
5
6 @abc.abstractmethod
7 def __init__(self, adress, vtype):
8 """Build the class"""
9 return
10
11 @abc.abstractmethod
12 def model(self):
13 """return the instrument model"""
14 return
15
16 @abc.abstractmethod
17 def connect(self):
18 """Create a connection with the instrument"""
19 return
20
21 @abc.abstractmethod
22 def disconnect(self):
23 """Disconnect the instrument"""
24 return
25
26 @abc.abstractmethod
27 def read(self):
28 """read the buffer"""
29 return
30
31 @abc.abstractmethod
instruments/testDevice.py
File was created 1 from abstract_instrument import abstract_instrument
2 import numpy, time
3
4 #==============================================================================
5
6 ALL_VAL_TYPE = "DCV, ACV, DCI, ACI, RES2W, RES4W, FREQ"
7
8 #==============================================================================
9
10 class testDevice(abstract_instrument):
11 def __init__(self, adress="123.456.789.123", vtype="DCV"):
12 self.adress = adress
13 self.port = 9999
14 self.vtype = vtype
15
16 def model(self):
17 return 'test device'
18
19 def connect(self):
20 print('Connecting to device @%s:%s...' %(self.adress, self.port))
21 time.sleep(1)
22 print(' --> Ok')
23
24 print(self.model())
25
26 if self.vtype == "DCV":
27 print("CONF:VOLT:DC")
28 elif self.vtype == "ACV":
29 print("CONF:VOLT:AC")
30 elif self.vtype == "DCI":
31 print("CONF:CURR:DC")
32 elif self.vtype == "ACI":
33 print("CONF:CURR:AC")
34 elif self.vtype == "RES2W":
35 print("CONF:RES")
36 elif self.vtype == "RES4W":
37 print("CONF:FRES")
38 elif self.vtype == "FREQ":
39 print("CONF:FREQ")
40 else:
41 print("Wrong -v argument")
42 raise
43