1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
import pyvisa
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import time
from qolab.hardware.scope import SDS1104X
from qolab.hardware.rf_generator import AgilentE8257D
from qolab.feedback import PID
from qolab.data import TraceSetSameX, TraceXY, Trace
def adjustRF(pid, scope, rfgen):
errorTrace = Trace("error")
errorTrace.config['unit']='V'
timeTrace = Trace("time")
timeTrace.config['unit']='S'
errorLog = TraceXY("error")
errorLog.x = timeTrace
errorLog.y = errorTrace
log = TraceSetSameX("timelog")
log.addTrace(errorLog)
# while True:
for i in range(0,100):
timenow = time.time()
ch1=scope.getTrace(1, decimate=False)
err = np.mean(ch1.y.values)
fdbck = pid.feedback(err)
freq0 = rfgen.getFreqFixed()
freq = freq0 + fdbck
rfgen.setFreqFixed(freq)
print(f'error = {err}, feedback = {fdbck}, request freq = {freq}')
log.addPointToTrace(timenow)
log.addPointToTrace(err, "error")
plt.clf()
log.plot()
time.sleep(.01)
return log
if __name__ == '__main__':
print("testing")
rm = pyvisa.ResourceManager()
instr_scope=rm.open_resource('TCPIP::192.168.0.61::INSTR')
scope = SDS1104X(instr_scope)
instr_rfgen=rm.open_resource('TCPIP::192.168.0.114::INSTR')
rfgen = AgilentE8257D(instr_rfgen)
print('------ Header start -------------')
print(str.join('\n', scope.getHeader()))
print(str.join('\n', rfgen.getHeader()))
print('------ Header ends -------------')
ch1 = scope.getTrace(1)
traces = scope.getAllTraces()
freqZero = 6834687190
freqDeltaM2 = 6835387164
SweepSpan = 10000
rfgen.stopFrequencySweep()
rfgen.setFreqFixed(freqDeltaM2+100)
pid = PID(100,400,0, sign=-1)
log=adjustRF(pid, scope, rfgen)
|