Skip to content
This repository was archived by the owner on May 17, 2023. It is now read-only.

Commit f41f23a

Browse files
Merge branch 'devel'
2 parents 707be47 + 3fbc38b commit f41f23a

File tree

9 files changed

+2536
-2164
lines changed

9 files changed

+2536
-2164
lines changed

FOFBApp/Db/FOFBRtm.template

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -285,26 +285,44 @@ record(longin,"$(P)$(R)TestPIDacCntMax-RB"){
285285
field(INP,"@asynMask($(PORT),$(ADDR),0xFFFFFFFF,$(TIMEOUT))RTMLAMP_OHWR_PI_OL_DAC_CNT_MAX_DATA")
286286
}
287287

288-
record(longout,"$(P)$(R)TestCurrLowLim-SP"){
288+
record(longout,"$(P)$(R)TestLowLim-SP"){
289289
field(DTYP,"asynUInt32Digital")
290290
field(DESC,"set PI setpoint inferior limit")
291291
field(SCAN,"Passive")
292292
field(OUT,"@asynMask($(PORT),$(ADDR),0xFFFFFFFF,$(TIMEOUT))RTMLAMP_OHWR_PI_SP_LIM_INF_DATA")
293293
field(PINI,"YES")
294294
}
295-
record(longin,"$(P)$(R)TestCurrLowLim-RB"){
295+
record(longin,"$(P)$(R)TestLowLim-RB"){
296296
field(DTYP,"asynUInt32Digital")
297297
field(DESC,"get PI setpoint inferior limit")
298298
field(SCAN,"I/O Intr")
299299
field(INP,"@asynMask($(PORT),$(ADDR),0xFFFFFFFF,$(TIMEOUT))RTMLAMP_OHWR_PI_SP_LIM_INF_DATA")
300300
}
301301

302+
record(longout,"$(S)$(RTM_CHAN)TestHighLim-SP"){
303+
field(DTYP,"asynUInt32Digital")
304+
field(DESC,"set PI setpoint parameter")
305+
field(SCAN,"Passive")
306+
field(OUT,"@asynMask($(PORT),$(ADDR),0xFFFFFFFF,$(TIMEOUT))RTMLAMP_OHWR_CH_0_PI_SP_DATA")
307+
field(PINI,"YES")
308+
}
309+
310+
record(longin,"$(S)$(RTM_CHAN)TestHighLim-RB"){
311+
field(DTYP,"asynUInt32Digital")
312+
field(DESC,"get PI setpoint parameter in ADC counts")
313+
field(SCAN,"I/O Intr")
314+
field(INP,"@asynMask($(PORT),$(ADDR),0xFFFFFFFF,$(TIMEOUT))RTMLAMP_OHWR_CH_0_PI_SP_DATA")
315+
field(FLNK,"$(S)$(RTM_CHAN)CurrentConv2-SP CPP NMS")
316+
}
317+
302318
record(ao,"$(S)$(RTM_CHAN)Current-SP"){
303-
field(DESC,"set PI setpoint parameter")
304-
field(PINI,"YES")
305-
field(SCAN,"Passive")
306-
field(PREC,"15")
307-
field(FLNK,"$(S)$(RTM_CHAN)CurrentConv-SP CPP NMS")
319+
field(DESC,"set PI setpoint parameter")
320+
field(PINI,"YES")
321+
field(SCAN,"Passive")
322+
field(PREC,"15")
323+
field(DRVH, "0.95")
324+
field(DRVL, "-0.95")
325+
field(FLNK,"$(S)$(RTM_CHAN)CurrentConv-SP CPP NMS")
308326
}
309327
record(calcout,"$(S)$(RTM_CHAN)CurrentConv-SP"){
310328
field(DESC,"set PI setpoint parameter in ADC counts")
@@ -320,6 +338,8 @@ record(longout,"$(S)$(RTM_CHAN)CurrentRaw-SP"){
320338
field(DTYP,"asynUInt32Digital")
321339
field(DESC,"set PI setpoint parameter")
322340
field(SCAN,"Passive")
341+
field(DRVH, "15200")
342+
field(DRVL, "-15200")
323343
field(OUT,"@asynMask($(PORT),$(ADDR),0xFFFFFFFF,$(TIMEOUT))RTMLAMP_OHWR_CH_0_PI_SP_DATA")
324344
field(PINI,"YES")
325345
}
@@ -347,4 +367,6 @@ record(ai,"$(S)$(RTM_CHAN)Current-RB"){
347367
field(DESC,"get PI setpoint parameter")
348368
field(SCAN,"Passive")
349369
field(PREC,"15")
370+
field(FLINK, "$(S)$(RTM_CHAN)TestHighLim-RB CA NMS")
350371
}
372+

FOFBApp/Db/FOFBRtm_settings.req

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ $(S)$(RTM_CHAN)DacWr-Cmd
99
$(S)$(RTM_CHAN)CtrlLoopKp-SP
1010
$(S)$(RTM_CHAN)CtrlLoopTi-SP
1111
$(P)$(R)TestPIDacCntMax-SP
12-
$(P)$(R)TestCurrLowLim-SP
12+
$(P)$(R)TestLowLim-SP
13+
$(S)$(RTM_CHAN)TestHighLim-SP
1314
$(S)$(RTM_CHAN)$(GAIN)-SP
1415
$(S)$(RTM_CHAN)$(OFFSET)-SP
1516
$(S)$(RTM_CHAN)CurrentRaw-SP

scripts/python/all_racks_set_parameters.py

Lines changed: 95 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -40,124 +40,130 @@
4040
print(' # # # # # # # # # # # # # # # # # # # # # # # # # #\n')
4141

4242
for crate_number in crates:
43-
44-
# PV prefixes
45-
46-
prefix_fofb = "IA-" + crate_number + "RaBPM:BS-FOFBCtrl:"
47-
48-
prefix_rtmch00 = "SI-" + crate_number + "M1:PS-FCH:"
49-
prefix_rtmch01 = "SI-" + crate_number + "M1:PS-FCV:"
50-
prefix_rtmch02 = "SI-" + crate_number + "M2:PS-FCH:"
51-
prefix_rtmch03 = "SI-" + crate_number + "M2:PS-FCV:"
52-
prefix_rtmch04 = "SI-" + crate_number + "C2:PS-FCH:"
53-
prefix_rtmch05 = "SI-" + crate_number + "C2:PS-FCV:"
54-
prefix_rtmch06 = "SI-" + crate_number + "C3:PS-FCH:"
55-
prefix_rtmch07 = "SI-" + crate_number + "C3:PS-FCV:"
56-
prefix_rtmch08 = "SI-" + crate_number + "XX:PS-FC08:"
57-
prefix_rtmch09 = "SI-" + crate_number + "XX:PS-FC09:"
58-
prefix_rtmch10 = "SI-" + crate_number + "XX:PS-FC10:"
59-
prefix_rtmch11 = "SI-" + crate_number + "XX:PS-FC11:"
6043

61-
prefix_rtm = [prefix_rtmch00, prefix_rtmch01, prefix_rtmch02, prefix_rtmch03, prefix_rtmch04, prefix_rtmch05,
62-
prefix_rtmch06, prefix_rtmch07, prefix_rtmch08, prefix_rtmch09, prefix_rtmch10, prefix_rtmch11]
44+
# PV prefixes
6345

64-
# global PVs
46+
prefix_fofb = "IA-" + crate_number + "RaBPM:BS-FOFBCtrl:"
6547

66-
pv_acq_trigger_rep = str(prefix_fofb) + str("ACQTriggerRep-Sel")
67-
pv_acq_trigger_event = str(prefix_fofb) + str("ACQTriggerEvent-Sel")
68-
pv_acq_samples_pre = str(prefix_fofb) + str("ACQSamplesPre-SP")
69-
pv_current_setpoint_inf = str(prefix_fofb) + str("TestCurrLowLim-SP")
70-
pv_dac_cnt_max = str(prefix_fofb) + str("TestPIDacCntMax-SP")
48+
prefix_rtmch00 = "SI-" + crate_number + "M1:PS-FCH:"
49+
prefix_rtmch01 = "SI-" + crate_number + "M1:PS-FCV:"
50+
prefix_rtmch02 = "SI-" + crate_number + "M2:PS-FCH:"
51+
prefix_rtmch03 = "SI-" + crate_number + "M2:PS-FCV:"
52+
prefix_rtmch04 = "SI-" + crate_number + "C2:PS-FCH:"
53+
prefix_rtmch05 = "SI-" + crate_number + "C2:PS-FCV:"
54+
prefix_rtmch06 = "SI-" + crate_number + "C3:PS-FCH:"
55+
prefix_rtmch07 = "SI-" + crate_number + "C3:PS-FCV:"
56+
prefix_rtmch08 = "SI-" + crate_number + "XX:PS-FC08:"
57+
prefix_rtmch09 = "SI-" + crate_number + "XX:PS-FC09:"
58+
prefix_rtmch10 = "SI-" + crate_number + "XX:PS-FC10:"
59+
prefix_rtmch11 = "SI-" + crate_number + "XX:PS-FC11:"
7160

72-
# PVs per channel
61+
prefix_rtm = [prefix_rtmch00, prefix_rtmch01, prefix_rtmch02, prefix_rtmch03, prefix_rtmch04, prefix_rtmch05,
62+
prefix_rtmch06, prefix_rtmch07, prefix_rtmch08, prefix_rtmch09, prefix_rtmch10, prefix_rtmch11]
7363

74-
pv_current_ArrayDataRAW = []
75-
pv_current_gain = []
76-
pv_voltage_gain = []
77-
pv_current_offset = []
78-
pv_voltage_offset = []
79-
pv_current_setpoint = []
80-
pv_amp_enable = []
81-
pv_pi_enable = []
82-
pv_pi_kp = []
83-
pv_pi_ti = []
64+
# global PVs
8465

85-
# getting lists of PV names, so we can reutilize them in all tests
66+
pv_acq_trigger_rep = str(prefix_fofb) + str("ACQTriggerRep-Sel")
67+
pv_acq_trigger_event = str(prefix_fofb) + str("ACQTriggerEvent-Sel")
68+
pv_acq_samples_pre = str(prefix_fofb) + str("ACQSamplesPre-SP")
69+
pv_setpoint_inf = str(prefix_fofb) + str("TestLowLim-SP")
70+
pv_dac_cnt_max = str(prefix_fofb) + str("TestPIDacCntMax-SP")
8671

87-
for i in range(0, channels):
88-
pv_current_ArrayDataRAW.append(str(prefix_fofb) + str("GEN_CH") + str(i) + str("ArrayData"))
72+
# PVs per channel
8973

90-
for pv_prefix in prefix_rtm:
91-
pv_current_gain.append( str(pv_prefix) + str("CurrGain") + str("-SP"))
92-
pv_voltage_gain.append( str(pv_prefix) + str("VoltGain") + str("-SP"))
93-
pv_current_offset.append( str(pv_prefix) + str("CurrOffset") + str("-SP"))
94-
pv_voltage_offset.append( str(pv_prefix) + str("VoltOffset") + str("-SP"))
95-
pv_current_setpoint.append( str(pv_prefix) + str("Current") + str("-SP"))
96-
pv_amp_enable.append( str(pv_prefix) + str("PwrState") + str("-Sel"))
97-
pv_pi_enable.append( str(pv_prefix) + str("CtrlLoop") + str("-Sel"))
98-
pv_pi_kp.append( str(pv_prefix) + str("CtrlLoopKp") + str("-SP"))
99-
pv_pi_ti.append( str(pv_prefix) + str("CtrlLoopTi") + str("-SP"))
74+
pv_current_ArrayDataRAW = []
75+
pv_current_gain = []
76+
pv_voltage_gain = []
77+
pv_current_offset = []
78+
pv_voltage_offset = []
79+
pv_current_setpoint = []
80+
pv_amp_enable = []
81+
pv_pi_enable = []
82+
pv_pi_kp = []
83+
pv_pi_ti = []
84+
pv_square_wave_openloop = []
85+
pv_test_high_lim = []
10086

87+
# getting lists of PV names, so we can reutilize them in all tests
10188

102-
print('\n--------------------------------------------------------------------------')
103-
print('>> Set parameters for RACK', crate_number)
104-
print('--------------------------------------------------------------------------\n')
89+
for i in range(0, channels):
90+
pv_current_ArrayDataRAW.append(str(prefix_fofb) + str("GEN_CH") + str(i) + str("ArrayData"))
10591

106-
print('>>> Set initial values for gain, offset, PI Kp and PI Ti ...')
92+
for pv_prefix in prefix_rtm:
93+
pv_current_gain.append( str(pv_prefix) + str("CurrGain") + str("-SP"))
94+
pv_voltage_gain.append( str(pv_prefix) + str("VoltGain") + str("-SP"))
95+
pv_current_offset.append( str(pv_prefix) + str("CurrOffset") + str("-SP"))
96+
pv_voltage_offset.append( str(pv_prefix) + str("VoltOffset") + str("-SP"))
97+
pv_current_setpoint.append( str(pv_prefix) + str("Current") + str("-SP"))
98+
pv_test_high_lim.append( str(pv_prefix) + str("TestHighLim")+ str("-SP"))
99+
pv_amp_enable.append( str(pv_prefix) + str("PwrState") + str("-Sel"))
100+
pv_pi_enable.append( str(pv_prefix) + str("CtrlLoop") + str("-Sel"))
101+
pv_pi_kp.append( str(pv_prefix) + str("CtrlLoopKp") + str("-SP"))
102+
pv_pi_ti.append( str(pv_prefix) + str("CtrlLoopTi") + str("-SP"))
103+
pv_square_wave_openloop.append(str(pv_prefix) + str("TestOpenLoopSquare") + str("-Sel"))
107104

108-
# initializing some PVs with default values
109105

110-
for i in range(0, channels):
111-
PV(pv_current_gain[i]).put(current_gain, wait=True)
112-
PV(pv_current_offset[i]).put(current_offset, wait=True)
113-
PV(pv_voltage_gain[i]).put(voltage_gain, wait=True)
114-
PV(pv_voltage_offset[i]).put(voltage_offset, wait=True)
115-
PV(pv_pi_kp[i]).put(pi_kp, wait=True)
116-
PV(pv_pi_ti[i]).put(pi_ti, wait=True)
117-
PV(pv_amp_enable[i]).put(0, wait=True)
118-
PV(pv_pi_enable[i]).put(0, wait=True)
106+
print('\n--------------------------------------------------------------------------')
107+
print('>> Set parameters for RACK', crate_number)
108+
print('--------------------------------------------------------------------------\n')
119109

120-
print('>>> Set initial values for gain, offset, PI Kp and PI Ti... Done!\n')
110+
print('>>> Set initial values for gain, offset, PI Kp and PI Ti ...')
121111

122-
print('>>> Set the period for 10ms...')
112+
# initializing some PVs with default values
123113

124-
PV(pv_dac_cnt_max).put(dac_cnt_max, wait=True)
114+
for i in range(0, channels):
115+
PV(pv_current_gain[i]).put(current_gain, wait=True)
116+
PV(pv_current_offset[i]).put(current_offset, wait=True)
117+
PV(pv_voltage_gain[i]).put(voltage_gain, wait=True)
118+
PV(pv_voltage_offset[i]).put(voltage_offset, wait=True)
119+
PV(pv_pi_kp[i]).put(pi_kp, wait=True)
120+
PV(pv_pi_ti[i]).put(pi_ti, wait=True)
121+
PV(pv_amp_enable[i]).put(0, wait=True)
122+
PV(pv_pi_enable[i]).put(0, wait=True)
123+
PV(pv_square_wave_openloop[i]).put(0, wait=True)
125124

126-
print('>>> Set the period for 10ms... Done!\n')
125+
print('>>> Set initial values for gain, offset, PI Kp and PI Ti... Done!\n')
127126

128-
print('>>> Set zero for the current setpoints...')
127+
print('>>> Set the period for 10ms...')
129128

130-
for i in range(0, channels):
131-
PV(pv_current_setpoint[i]).put(0, wait=True)
132-
PV(pv_current_setpoint_inf).put(0, wait=True)
129+
PV(pv_dac_cnt_max).put(dac_cnt_max, wait=True)
133130

134-
print('>>> Set zero for the current setpoints... Done!')
131+
print('>>> Set the period for 10ms... Done!\n')
135132

136-
print('\n>>> New acquisition...')
133+
print('>>> Set zero for the current setpoints...')
137134

138-
# do an acquisition and stop the event,
139-
# so the array data will be the same until we do another acquisition
135+
for i in range(0, channels):
136+
PV(pv_current_setpoint[i]).put(0, wait=True)
137+
PV(pv_test_high_lim[i]).put(0, wait=True)
138+
PV(pv_setpoint_inf).put(0, wait=True)
140139

141-
PV(pv_acq_samples_pre).put(samples, wait=True)
142-
PV(pv_acq_trigger_rep).put(0, wait=True)
143-
PV(pv_acq_trigger_event).put(0, wait=True)
144-
time.sleep(0.5) # just to see the waveform change in graphical interface
145-
PV(pv_acq_trigger_event).put(1, wait=True)
140+
print('>>> Set zero for the current setpoints... Done!')
146141

147-
print('>>> New acquisition... Done!')
142+
print('\n>>> New acquisition...')
148143

149-
new_offset = np.zeros(channels)
150-
for i in range(0, channels):
151-
new_offset[i] = int(np.mean(PV(pv_current_ArrayDataRAW[i]).get()))
144+
# do an acquisition and stop the event,
145+
# so the array data will be the same until we do another acquisition
152146

153-
print('\n>> New current offset values: \n', new_offset)
147+
PV(pv_acq_samples_pre).put(samples, wait=True)
148+
PV(pv_acq_trigger_rep).put(0, wait=True)
149+
PV(pv_acq_trigger_event).put(0, wait=True)
150+
time.sleep(0.5) # just to see the waveform change in graphical interface
151+
PV(pv_acq_trigger_event).put(1, wait=True)
154152

155-
print('\n>>> Set the new current offset for all channels...')
153+
print('>>> New acquisition... Done!')
156154

157-
for i in range(0, channels):
158-
PV(pv_current_offset[i]).put(new_offset[i])
155+
new_offset = np.zeros(channels)
156+
for i in range(0, channels):
157+
new_offset[i] = int(np.mean(PV(pv_current_ArrayDataRAW[i]).get()))
159158

160-
print('>>> Set the new current offset for all channels... Done!')
159+
print('\n>> New current offset values: \n', new_offset)
160+
161+
print('\n>>> Set the new current offset for all channels...')
162+
163+
for i in range(0, channels):
164+
PV(pv_current_offset[i]).put(new_offset[i])
165+
166+
print('>>> Set the new current offset for all channels... Done!')
161167

162168
print('\n--------------------------------------------------------------------------')
163169
print('----------------------------------- END ----------------------------------')

scripts/python/all_racks_test_open_loop.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383
pv_acq_trigger_rep = str(prefix_fofb) + str("ACQTriggerRep-Sel")
8484
pv_acq_trigger_event = str(prefix_fofb) + str("ACQTriggerEvent-Sel")
8585
pv_acq_samples_pre = str(prefix_fofb) + str("ACQSamplesPre-SP")
86-
pv_current_setpoint_inf = str(prefix_fofb) + str("TestCurrLowLim-SP")
86+
pv_current_setpoint_inf = str(prefix_fofb) + str("TestLowLim-SP")
8787
pv_dac_cnt_max = str(prefix_fofb) + str("TestPIDacCntMax-SP")
8888
pv_dac_data_wb = str(prefix_fofb) + str("DacDataSrc-Sel")
8989

@@ -117,7 +117,7 @@
117117
pv_voltage_gain.append( str(pv_prefix) + str("VoltGain") + str("-SP"))
118118
pv_current_offset.append( str(pv_prefix) + str("CurrOffset") + str("-SP"))
119119
pv_voltage_offset.append( str(pv_prefix) + str("VoltOffset") + str("-SP"))
120-
pv_current_setpoint.append( str(pv_prefix) + str("CurrentRaw") + str("-SP"))
120+
pv_current_setpoint.append( str(pv_prefix) + str("TestHighLim")+ str("-SP"))
121121
pv_amp_enable.append( str(pv_prefix) + str("PwrState") + str("-Sel"))
122122
pv_pi_enable.append( str(pv_prefix) + str("CtrlLoop") + str("-Sel"))
123123
pv_pi_kp.append( str(pv_prefix) + str("CtrlLoopKp") + str("-SP"))

0 commit comments

Comments
 (0)