From 44e0bf34fd2440f2c45fa91aae38d2b622cb4eed Mon Sep 17 00:00:00 2001 From: Luis Dekant <dekant.luis@gmx.de> Date: Wed, 13 Mar 2019 14:31:59 +0100 Subject: [PATCH] Changed `ServoDevice.rampEnabled` to return `0` if False. Updated the GUI to work accordingly. Made some more changes to the basic script. Small change to snapping (even though it will deprecate in case autolock works). Added a checklist for autolock with --- .editorconfig | 5 + compile_in_vm.sh | 2 +- doc/gui.md | 2 +- requirements.txt | 6 +- setup.cfg | 6 +- src/adbasic/.gitignore | 1 - src/adbasic/filter_module.inc | 62 +-- src/adbasic/nqontrol.TC1 | Bin 0 -> 181496 bytes src/adbasic/nqontrol.bas | 647 +++++++++++++++----------- src/nqontrol/controller.py | 365 ++++++++++++--- src/nqontrol/general.py | 6 +- src/nqontrol/guniconfig.py.ini | 4 +- src/nqontrol/mockAdwin.py | 54 ++- src/nqontrol/nqontrol.TC1 | Bin 180680 -> 23 bytes src/nqontrol/nqontrolUI.py | 402 ++++++++++++---- src/nqontrol/servo.py | 417 ++++++++++++----- src/nqontrol/servoDevice.py | 34 +- src/nqontrol/settings.py | 24 + src/nqontrol/settings_local.sample.py | 6 +- src/tests/test_servo.py | 298 +++++++----- 20 files changed, 1627 insertions(+), 714 deletions(-) create mode 100644 src/adbasic/nqontrol.TC1 mode change 100755 => 120000 src/nqontrol/nqontrol.TC1 diff --git a/.editorconfig b/.editorconfig index 639dc98..654c8ca 100644 --- a/.editorconfig +++ b/.editorconfig @@ -19,6 +19,11 @@ charset = utf-8 indent_style = space indent_size = 4 +# 4 space indentation +[*.bas,*.inc] +indent_style = space +indent_size = 4 + [*.md] trim_trailing_whitespace = false diff --git a/compile_in_vm.sh b/compile_in_vm.sh index 5879cfc..9411f69 100755 --- a/compile_in_vm.sh +++ b/compile_in_vm.sh @@ -28,5 +28,5 @@ do inotifywait -e modify src/adbasic/* echo $vb VBoxManage guestcontrol Win7 --username Chris --password 'z' run --exe "$vbox_compiler" - rsync -u src/adbasic/nqontrol.TC1 src/nqontrol/ + # rsync -u src/adbasic/nqontrol.TC1 src/nqontrol/ done diff --git a/doc/gui.md b/doc/gui.md index 7d0257a..1622c4e 100644 --- a/doc/gui.md +++ b/doc/gui.md @@ -40,7 +40,7 @@ After starting the server you will see something like this, depending on how you  -The GUI will dynamically create as many components as you need. E.g. if you changed the `NUMBER_OF_SERVOS` variable in the `servo.py` module it will provide input sections accordingly. +The GUI will dynamically create as many components as you need. E.g. if you changed the `settings.NUMBER_OF_SERVOS` variable it will provide input sections accordingly. If you are running the GUI with multiple devices (which might be implemented in the future), the GUIs are just displayed one after the other. So each GUI comes with its own sections etc... diff --git a/requirements.txt b/requirements.txt index 6fa80be..b0d24ed 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,10 +4,8 @@ adwin>=0.16.1 sphinx>=1.7.5 numpy>=1.14 -dash==0.36.0 # The core dash backend -dash-renderer==0.17.0 # The dash front-end -dash-html-components==0.13.5 # HTML components -dash-core-components==0.43.0 # Supercharged components +dash==0.38.0 # The core dash backend +dash-daq>=0.1.4 plotly pandas pandas-datareader>=0.5.0 diff --git a/setup.cfg b/setup.cfg index 3548b6c..284fd2d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -30,10 +30,8 @@ install_requires = adwin>=0.16.1 sphinx>=1.7.5 numpy>=1.14 - dash>=0.31.1 # The core dash backend - dash-renderer>=0.15.1 # The dash front-end - dash-html-components>=0.13.0 # HTML components - dash-core-components>=0.40.0 # Supercharged components + dash==0.38.0 # The core dash backend + dash-daq>=0.1.4 plotly pandas pandas-datareader>=0.5.0 diff --git a/src/adbasic/.gitignore b/src/adbasic/.gitignore index 01134cb..f469dc4 100644 --- a/src/adbasic/.gitignore +++ b/src/adbasic/.gitignore @@ -1,2 +1 @@ -*.TC1 *.ERR diff --git a/src/adbasic/filter_module.inc b/src/adbasic/filter_module.inc index 77f43c3..cce847d 100644 --- a/src/adbasic/filter_module.inc +++ b/src/adbasic/filter_module.inc @@ -51,7 +51,7 @@ #Define FCR_SW_INPUT 1 #Define FCR_SW_OUTPUT 2 #Define FCR_SW_OFFSET 4 -#Define FCR_SW_SNAP 8 +' #Define FCR_SW_SNAP 8 #Define FCR_SW_SOS1 16 #Define FCR_SW_SOS2 32 #Define FCR_SW_SOS3 64 @@ -60,10 +60,10 @@ #Define FCR_SW_AUX 512 ' Snap control -#Define snap_config Data_7 -Dim snap_config[NUM_FILTERS] as Long -#Define snap_value_mask 0ffffh -#Define snap_lg 10000h ' Look for signal lower (0) or greater (1) than the threshold +' #Define snap_config Data_7 +' Dim snap_config[NUM_FILTERS] as Long +' #Define snap_value_mask 0ffffh +' #Define snap_lg 10000h ' Look for signal lower (0) or greater (1) than the threshold ' Global storage of filter coefficient for transfer from PC #Define filter_coeffs_PC Data_1 @@ -105,7 +105,7 @@ Function FilterModule(input_int, control, filter_index, aux) as Float Dim sos_output as Float Dim sos_index as Long Dim input as Float - Dim snap_value as Long + ' Dim snap_value as Long input = input_int ' offset switch @@ -136,23 +136,23 @@ Function FilterModule(input_int, control, filter_index, aux) as Float filter_output = input EndIf - ' Snap state that waits for aux signal - If ((control And FCR_SW_SNAP) > 0) Then - filter_output = 0.0 - snap_value = aux - (snap_config[filter_index+1] And snap_value_mask) - - If ((snap_config[filter_index+1] And snap_lg) > 0) Then - snap_value = -1 * snap_value - EndIf - If (snap_value <= 0) Then - ' Disable snapping - control = (control And Not(FCR_SW_SNAP)) - ' Enable output - control = (control Or FCR_SW_OUTPUT) - ' Stop ramp - rcr = rcr And Not(0fh) - EndIf - EndIf + ' ' Snap state that waits for aux signal + ' If ((control And FCR_SW_SNAP) > 0) Then + ' filter_output = 0.0 + ' snap_value = aux - (snap_config[filter_index+1] And snap_value_mask) + ' + ' If ((snap_config[filter_index+1] And snap_lg) > 0) Then + ' snap_value = -1 * snap_value + ' EndIf + ' If (snap_value <= 0) Then + ' ' Disable snapping + ' control = (control And Not(FCR_SW_SNAP)) + ' ' Enable output + ' control = (control Or FCR_SW_INPUT) + ' ' Stop ramp + ' rcr = rcr And Not(0fh) + ' EndIf + ' EndIf if ((control And FCR_SW_AUX) > 0) Then filter_output = filter_output + aux - 8000h @@ -191,13 +191,13 @@ Sub RunFilters(input[], output[]) 'For filter_index = 0 To (NUM_FILTERS-1) ' output[filter_index+1] = FilterModule(input[2*filter_index+1], Par_3, filter_index) 'Next filter_index - output[1] = FilterModule(input[1], fcr_1, 0,input[ 9])+8000h - output[2] = FilterModule(input[2], fcr_2, 1,input[10])+8000h - output[3] = FilterModule(input[3], fcr_3, 2,input[11])+8000h - output[4] = FilterModule(input[4], fcr_4, 3,input[12])+8000h - output[5] = FilterModule(input[5], fcr_5, 4,input[13])+8000h - output[6] = FilterModule(input[6], fcr_6, 5,input[14])+8000h - output[7] = FilterModule(input[7], fcr_7, 6,input[15])+8000h - output[8] = FilterModule(input[8], fcr_8, 7,input[16])+8000h + output[1] = FilterModule(input[1], fcr_1, 0, input[ 9]) + 8000h + output[2] = FilterModule(input[2], fcr_2, 1, input[10]) + 8000h + output[3] = FilterModule(input[3], fcr_3, 2, input[11]) + 8000h + output[4] = FilterModule(input[4], fcr_4, 3, input[12]) + 8000h + output[5] = FilterModule(input[5], fcr_5, 4, input[13]) + 8000h + output[6] = FilterModule(input[6], fcr_6, 5, input[14]) + 8000h + output[7] = FilterModule(input[7], fcr_7, 6, input[15]) + 8000h + output[8] = FilterModule(input[8], fcr_8, 7, input[16]) + 8000h EndSub diff --git a/src/adbasic/nqontrol.TC1 b/src/adbasic/nqontrol.TC1 new file mode 100644 index 0000000000000000000000000000000000000000..5286d8d2449444a68a6d39e3304689bc1285fd92 GIT binary patch literal 181496 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%0A&A{z$x~3ptHgdY8u`$ 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 literal 0 HcmV?d00001 diff --git a/src/adbasic/nqontrol.bas b/src/adbasic/nqontrol.bas index bb2f856..002a3ab 100644 --- a/src/adbasic/nqontrol.bas +++ b/src/adbasic/nqontrol.bas @@ -1,268 +1,393 @@ -'<ADbasic Header, Headerversion 001.001> -' Process_Number = 1 -' Initial_Processdelay = 1000 -' Eventsource = Timer -' Control_long_Delays_for_Stop = No -' Priority = High -' Version = 1 -' ADbasic_Version = 6.2.0 -' Optimize = Yes -' Optimize_Level = 3 -' Stacksize = 1000 -' Info_Last_Save = X220 X220\adwin -'<Header End> -#Include ADwinPro_All.inc -#Include .\filter_module.inc -Import Math.lic - -#Define AIN_MODULE_1 1 -#Define AIN_MODULE_2 2 -#Define AOUT_MODULE_1 3 -#Define AOUT_MODULE_2 4 -#Define NUM_INPUT_CHANNELS 8 -#Define NUM_OUTPUT_CHANNELS 8 -#Define NUM_ADC_CHANNELS 16 -#Define NUM_DAC_CHANNELS 16 -#Define CPU_CLK 1000000000 -#Define PROC_CLK 200000 -#Define FIFO_BUFFER_SIZE 10003 -#Define NUM_RAMP_VALUES 131072 -#Define TTL_HIGH 0C000h ' +5V -#Define TTL_LOW 8000h ' 0V - -#Define timer PAR_1 -' monitor control Parameter, values from 1 to 8 -#Define monitor_sel Data_6 -Dim monitor_sel[NUM_FILTERS] as Long -' TTL -Dim TTL_current as Long -#Define TTL_DIG_CHANNEL 0 -' Ramp Control Register -#Define rcr Par_3 -' Ramp amplitude. 1 means ±10V -#Define ramp_amplitude FPar_1 -'ramp Data array -Dim ramp_data[NUM_RAMP_VALUES], ramp_idx, ramp_chan as Long - -Dim timer_last, timer_now, t1, t2, new_time As Long - -' The inputs straight from the ADC -Dim adc_input[NUM_ADC_CHANNELS] As Long -' The outputs straight into the DAC -Dim dac_output[NUM_DAC_CHANNELS] As Long - -#Define input_sensitivity Par_8 -Dim input_sensitivity_last as Long - -#Define fifo_data Data_3 -#Define fifo_sel Par_4 -#Define fifo_counter_max Par_6 -Dim fifo_data[FIFO_BUFFER_SIZE] as Float as FIFO -Dim fifo_counter = 1 as Long at Dm_Local - -#Define last_output Data_4 -Dim last_output[NUM_FILTERS] as Long - -Dim i as long -Dim ADCF_Mode as Long - - -Sub Blinkenlights() - Dim even_odd as Long - timer_now = Read_Timer() - If ((timer_now - timer_last) > CPU_CLK) Then - Inc(timer) - even_odd = Mod(timer, 2) - P2_Set_Led(AIN_MODULE_1, even_odd) - P2_Set_Led(AOUT_MODULE_1, even_odd) - P2_Set_Led(AIN_MODULE_2, 1-even_odd) - P2_Set_Led(AOUT_MODULE_2, 1-even_odd) - timer_last = timer_now - EndIf -EndSub - -Sub SetInputSensitivity() - Dim inputMode as long - Dim auxMode as long - - if (input_sensitivity_last <> input_sensitivity) then - For i=1 to NUM_INPUT_CHANNELS - inputMode = Shift_Right(input_sensitivity And Shift_Left(3, 2*i-2), 2*i-2) - auxMode = Shift_Right(input_sensitivity And Shift_Left(3, 2*i+14), 2*i+14) - - P2_Set_Gain(AIN_MODULE_1, i, inputMode) - P2_Set_Gain(AIN_MODULE_2, i, auxMode) - next i - input_sensitivity_last = input_sensitivity - endif -EndSub - -Sub SendToMonitors() - Dim mon as Long - for mon=1 to NUM_INPUT_CHANNELS - If (monitor_sel[mon] > 0) Then - If (monitor_sel[mon] > 20) Then - If (monitor_sel[mon] < 29) Then - ' Output signal - dac_output[mon+NUM_OUTPUT_CHANNELS] = dac_output[monitor_sel[mon]-20] +'<ADbasic Header, Headerversion 001.001> +' Process_Number = 1 +' Initial_Processdelay = 1000 +' Eventsource = Timer +' Control_long_Delays_for_Stop = No +' Priority = High +' Version = 1 +' ADbasic_Version = 6.2.0 +' Optimize = Yes +' Optimize_Level = 3 +' Stacksize = 1000 +' Info_Last_Save = VBOX vBox\Chris +' Foldings = 65,79,95,115 +'<Header End> +#Include ADwinPro_All.inc +#Include .\filter_module.inc +Import Math.lic + +#Define AIN_MODULE_1 1 +#Define AIN_MODULE_2 2 +#Define AOUT_MODULE_1 3 +#Define AOUT_MODULE_2 4 +#Define NUM_INPUT_CHANNELS 8 +#Define NUM_OUTPUT_CHANNELS 8 +#Define NUM_ADC_CHANNELS 16 +#Define NUM_DAC_CHANNELS 16 +#Define CPU_CLK 1000000000 +#Define PROC_CLK 200000 +#Define FIFO_BUFFER_SIZE 10003 +#Define NUM_RAMP_VALUES 131072 +#Define TTL_HIGH 0C000h ' +5V +#Define TTL_LOW 8000h ' 0V + +#Define timer PAR_1 +' monitor control Parameter, values from 1 to 8 +#Define monitor_sel Data_6 +Dim monitor_sel[NUM_FILTERS] as Long +' TTL +Dim TTL_current as Long +#Define TTL_DIG_CHANNEL 0 +' Ramp Control Register +#Define rcr Par_3 +' Ramp amplitude. 1 means ±10V +#Define ramp_amplitude FPar_1 +'ramp Data array +Dim ramp_data[NUM_RAMP_VALUES], ramp_idx, ramp_chan as Long + +Dim timer_last, timer_now, t1, t2, new_time As Long + +' The inputs straight from the ADC +Dim adc_input[NUM_ADC_CHANNELS] As Long +' The outputs straight into the DAC +Dim dac_output[NUM_DAC_CHANNELS] As Long + +#Define input_sensitivity Par_8 +Dim input_sensitivity_last as Long + +#Define fifo_data Data_3 +#Define fifo_sel Par_4 +#Define fifo_counter_max Par_6 +Dim fifo_data[FIFO_BUFFER_SIZE] as Float as FIFO +Dim fifo_counter = 1 as Long at Dm_Local + +#Define last_output Data_4 +Dim last_output[NUM_FILTERS] as Long + +' autolock stuff +#Define LOCK Data_8 +#Define NUM_INDICES 40 ' change this later on +Dim LOCK[NUM_INDICES] as Long +Dim lockIter[NUM_FILTERS] as Long +#Define threshold_value_mask 0ffffh +#Define threshold_direction 10000h ' Look for signal lower (0) or greater (1) than the threshold +Dim LOCK_COUNTER[NUM_FILTERS] as Long +#Define lock_mask 3h +#Define relock_mask 4h + +Dim i as long +Dim ADCF_Mode as Long + + +Sub Blinkenlights() + Dim even_odd as Long + timer_now = Read_Timer() + If ((timer_now - timer_last) > CPU_CLK) Then + Inc(timer) + even_odd = Mod(timer, 2) + P2_Set_Led(AIN_MODULE_1, even_odd) + P2_Set_Led(AOUT_MODULE_1, even_odd) + P2_Set_Led(AIN_MODULE_2, 1-even_odd) + P2_Set_Led(AOUT_MODULE_2, 1-even_odd) + timer_last = timer_now + EndIf +EndSub + +Sub SetInputSensitivity() + Dim inputMode as long + Dim auxMode as long + + if (input_sensitivity_last <> input_sensitivity) then + For i=1 to NUM_INPUT_CHANNELS + inputMode = Shift_Right(input_sensitivity And Shift_Left(3, 2*i-2), 2*i-2) + auxMode = Shift_Right(input_sensitivity And Shift_Left(3, 2*i+14), 2*i+14) + + P2_Set_Gain(AIN_MODULE_1, i, inputMode) + P2_Set_Gain(AIN_MODULE_2, i, auxMode) + next i + input_sensitivity_last = input_sensitivity + endif +EndSub + +Sub SendToMonitors() + Dim mon as Long + for mon=1 to NUM_INPUT_CHANNELS + If (monitor_sel[mon] > 0) Then + If (monitor_sel[mon] > 20) Then + If (monitor_sel[mon] < 29) Then + ' Output signal + dac_output[mon+NUM_OUTPUT_CHANNELS] = dac_output[monitor_sel[mon]-20] + Else + ' TTL signal + dac_output[mon+NUM_OUTPUT_CHANNELS] = TTL_current + EndIf + Else + ' Input and aux signal + dac_output[mon+NUM_OUTPUT_CHANNELS] = adc_input[monitor_sel[mon]] + EndIf + EndIf + next mon +EndSub + +Sub SendToFifo() + Dim combined as Float + If (fifo_sel > 0 ) Then + If (fifo_counter >= fifo_counter_max) Then ' There is a `&&` or `AndAlso` operator missing... + ' send values for current channel to PC + ' Note: we do this before filters, as filters do calculations on adc_input + ' We want to ensure a fixed phase between the channels. + ' Therefore we combine all in one fifo array field. + + ' Saving 3 16bit channels in a 64bit long variable + ' Byte | 7 6 | 5 4 | 3 2 | 1 0 | + ' Channel | | input | aux | output | + + combined = (adc_input[fifo_sel]) * 4294967296 ' This number is 2^32 and is a workaround for Shift_Left, which is not working for results > 32bit + combined = combined + Shift_Left(adc_input[fifo_sel+8], 16) + combined = combined + dac_output[fifo_sel] + + fifo_data = combined + + fifo_counter = 0 + EndIf + fifo_counter = fifo_counter + 1 + EndIf +EndSub + +Sub RunRamp() + ramp_chan = rcr And 0fh + If (ramp_chan > 0) Then + dac_output[ramp_chan] = (ramp_data[ramp_idx] * ramp_amplitude) + 8000h + ramp_idx = ramp_idx + Shift_Right(rcr And 0ff00h, 8) + If (ramp_idx > NUM_RAMP_VALUES) Then + ramp_idx = 1 + CPU_Digout(TTL_DIG_CHANNEL, 1) ' TTL high + TTL_current = TTL_HIGH + Else + CPU_Digout(TTL_DIG_CHANNEL, 0) ' TTL low + TTL_current = TTL_LOW + EndIf + EndIf +EndSub + +Sub AutoLock() + Dim channel as Long ' servo looping variable + Dim indexoffset as Long ' variable for array index offset + Dim state as Long + Dim relock as Long + Dim threshold as Long + Dim greater as Long + Dim offset as Long + Dim searchStart as Long + Dim searchEnd as Long + Dim aux as Long + + for channel=1 to NUM_FILTERS + indexoffset = (channel - 1) * 5 ' each servo occupies 5 channels currently + state = (LOCK[1 + indexoffset] And lock_mask) + relock = (LOCK[1 + indexoffset] And relock_mask) + threshold = (LOCK[2 + indexoffset] And threshold_value_mask) + greater = (LOCK[2 + indexoffset] And threshold_direction) + offset = LOCK[5 + indexoffset] ' this is the voltage that is added onto the output after a peak was found and fitlers have been activated + searchStart = LOCK[3 + indexoffset] + searchEnd = LOCK[4 + indexoffset] + aux = adc_input[channel + NUM_FILTERS] + + ' LOCK-OFF STATE + If (state = 0) Then + lockIter[channel] = 0 + LOCK[5 + indexoffset] = 0 ' locking offset to 0 in case lock is off + EndIf + + ' LOCK STATE + If (state = 2) Then + ' add offset (lastFound LOCK[5 + offset]) to dac_output after filters have been applied + dac_output[channel] = dac_output[channel] + offset + If (LOCK_COUNTER[channel] > 0) Then + LOCK_COUNTER[channel] = LOCK_COUNTER[channel] - 1 + Else + ' Different cases depending on whether peaks are expected as maxima or minima + ' For a maximum, we want to check whether the aux falls below the threshold before triggering a reload, for a minimum, we want to check whether it is above the threshold + If ((greater > 0) And (aux < threshold * 0.5)) Then + ' If (relock > 0) Then + ' LOCK[1 + indexoffset] = 1 + relock ' trigger relock in case aux is below threshold and direction is set to 'greater' + ' Else + LOCK[1 + indexoffset] = 0 + ' EndIf Else - ' TTL signal - dac_output[mon+NUM_OUTPUT_CHANNELS] = TTL_current + If ((greater = 0) And(aux > threshold * 0.5)) Then + ' If (relock > 0) Then + ' LOCK[1 + indexoffset] = 1 + relock ' trigger relock in case aux is above threshold and direction is set to 'lesser' + ' Else + LOCK[1 + indexoffset] = 0 + ' EndIf + EndIf EndIf - Else - ' Input and aux signal - dac_output[mon+NUM_OUTPUT_CHANNELS] = adc_input[monitor_sel[mon]] + EndIf + + EndIf + + ' LOCK SEARCH STATE + If (state = 1) Then + ' the 0 is basically a reset indicator, or rather a "i havent started yet indicator" + If (lockIter[channel] = 0) Then + lockIter[channel] = searchStart ' this is the search minimum + Dim x as Long + ' relevant index is sos_index + filter_index * num_SOS + ' sos index von 0 bis 4 (5-1) + ' filter_index von 0 bis 7 + ' filter_history[idx*NUM_HISTORY+1] bzw +2 + ' also zb channel 1, bei NUM_SOS=5 hat dann myindices: [0-4] + 0 * 5, also 0-4 + ' und NUMHISTORY = 2, also hisotry[0-4 * 2 +1/2], also 0 bis 10 + ' what about filter_coeffs? + for x = ((channel-1) * 10) to (10 * channel) + filter_history[x] = 0.0 + next x EndIf - EndIf - next mon -EndSub - -Sub SendToFifo() - Dim combined as Float - If (fifo_sel > 0 ) Then - If (fifo_counter >= fifo_counter_max) Then ' There is a `&&` or `AndAlso` operator missing... - ' send values for current channel to PC - ' Note: we do this before filters, as filters do calculations on adc_input - ' We want to ensure a fixed phase between the channels. - ' Therefore we combine all in one fifo array field. - - ' Saving 3 16bit channels in a 64bit long variable - ' Byte | 7 6 | 5 4 | 3 2 | 1 0 | - ' Channel | | input | aux | output | - - combined = (adc_input[fifo_sel]) * 4294967296 ' This number is 2^32 and is a workaround for Shift_Left, which is not working for results > 32bit - combined = combined + Shift_Left(adc_input[fifo_sel+8], 16) - combined = combined + dac_output[fifo_sel] - - fifo_data = combined - - fifo_counter = 0 - EndIf - fifo_counter = fifo_counter + 1 - EndIf -EndSub - -Sub RunRamp() - ramp_chan = rcr And 0fh - If (ramp_chan > 0) Then - dac_output[ramp_chan] = (ramp_data[ramp_idx] * ramp_amplitude) + 8000h - ramp_idx = ramp_idx + Shift_Right(rcr And 0ff00h, 8) - If (ramp_idx > NUM_RAMP_VALUES) Then - ramp_idx = 1 - CPU_Digout(TTL_DIG_CHANNEL, 1) ' TTL high - TTL_current = TTL_HIGH - Else - CPU_Digout(TTL_DIG_CHANNEL, 0) ' TTL low - TTL_current = TTL_LOW - EndIf - EndIf -EndSub - -Sub LimitToOutputRange() - Dim iij as Long - 'setting values which are above 65535 or below 0 to the maximum(65535) respectively minimum value(0) of the P2_Write_DAC8 command, - 'since it only takes the last 16 bits of integers out of its boundaries - for iij=1 to NUM_DAC_CHANNELS - if (dac_output[iij]>65535) then - dac_output[iij]=65535 - endif - if (dac_output[iij]<0) then - dac_output[iij]=0 - endif - next iij -EndSub - -Sub UpdateLastOutput() - for i=1 to NUM_FILTERS - last_output[i] = dac_output[i] - next i - ' Alternative: - ' P2_Write_DAC8(last_output, dac_output, 1) -EndSub - - -Init: - Processdelay = CPU_CLK/PROC_CLK ' 200 KHz - 'setting the values of the filter control register to zero - Par_11=0 - Par_12=0 - Par_13=0 - Par_14=0 - Par_15=0 - Par_16=0 - Par_17=0 - Par_18=0 - 'prepoluate dac_output - - input_sensitivity = 0 - input_sensitivity_last = 1 - timer = 0 - timer_last = Read_Timer() - ramp_chan = 0 - - Fifo_Clear(3) - - CPU_Dig_IO_Config(110011b) - - ' TODO nicer? - for i=1 to 8 - monitor_sel[i] = 0 - next i - - 'populates ramp_data with the values from -10V to 10V - For ramp_idx = 0 To 0ffffh - ramp_data[ramp_idx+1] = ramp_idx - 8000h - ramp_data[20000h-ramp_idx] = ramp_data[ramp_idx+1] - Next ramp_idx - ramp_idx = 1 - - P2_Set_Average_Filter(AIN_MODULE_1, 0) ' use 5 to average 32 measurements - - ' Pseudo code: - ' ADCF_Mode = 2^(AIN_MODULE_1-1) + 2^(AIN_MODULE_2-1) - ADCF_Mode = Shift_Left(1, AIN_MODULE_1-1) + Shift_Left(1, AIN_MODULE_2-1) - - P2_ADCF_Mode(ADCF_Mode, 1) ' Enable Timer mode on Module 2 & 3 (bit flag for module address!) - - -Event: - t1 = Read_Timer() - - ' Start DAC conversion on all DACs simultaneously - P2_Sync_All(Shift_Left(1, AOUT_MODULE_1-1) Or Shift_Left(1, AOUT_MODULE_2-1)) - - ' Read in values from ADC modules, these have already been converted because of the - ' ADCF timer mode - P2_Read_ADCF8(AIN_MODULE_1, adc_input, 1) - P2_Read_ADCF8(AIN_MODULE_2, adc_input, 9) - + + ' Different cases depending on whether peaks are expected as maxima or minima + ' Basically the peak direction: If the peak is a minimum, we want to check whether the aux signal falls below the threshold, in case of a maximum, we want the aux to surpass the threshold + + If (((greater > 0) And (aux > threshold)) Or ((greater = 0) And (aux < threshold))) Then ' LOCK IS FOUND + LOCK[1 + indexoffset] = 2 ' set the new lock state + LOCK[5 + indexoffset] = lockIter[channel] ' save the current voltage value as output offset + LOCK_COUNTER[channel] = 100 + ' activate filters/activate input + ' fcr_1-8 corresponts to PAR_11-18 + par[10 + channel] = (par[10 + channel] Or FCR_SW_INPUT) + par[10 + channel] = (par[10 + channel] Or FCR_SW_OUTPUT) + ' reset the iterator if threshold was breached, so that on next iteration/or when restarting it will be set to "searchStart" again + lockIter[channel] = 0 + Else ' SEARCHING FOR PEAK + ' Turn off input and output channels when starting new search + If (lockIter[channel] = searchStart) Then + par[10 + channel] = (par[10 + channel] And Not(FCR_SW_INPUT)) + par[10 + channel] = (par[10 + channel] And Not(FCR_SW_OutPUT)) + EndIf + + If (lockIter[channel] >= searchEnd) Then ' max range is reached + lockIter[channel] = searchStart ' restart scan if maximum is reached + TTL_current = TTL_HIGH + Else + lockIter[channel] = lockIter[channel] + 1 + TTL_current = TTL_LOW + EndIf + EndIf + + ' makes sense to move the actual output to the end, as the voltage will only apply on the next cycle anyway + dac_output[channel] = lockIter[channel] + EndIf + + next channel +EndSub + +Sub LimitToOutputRange() + Dim iij as Long + 'setting values which are above 65535 or below 0 to the maximum(65535) respectively minimum value(0) of the P2_Write_DAC8 command, + 'since it only takes the last 16 bits of integers out of its boundaries + for iij=1 to NUM_DAC_CHANNELS + if (dac_output[iij]>65535) then + dac_output[iij]=65535 + endif + if (dac_output[iij]<0) then + dac_output[iij]=0 + endif + next iij +EndSub + +Sub UpdateLastOutput() + for i=1 to NUM_FILTERS + last_output[i] = dac_output[i] + next i + ' Alternative: + ' P2_Write_DAC8(last_output, dac_output, 1) +EndSub + + +Init: + Processdelay = CPU_CLK/PROC_CLK ' 200 KHz + 'setting the values of the filter control register to zero + Par_11=0 + Par_12=0 + Par_13=0 + Par_14=0 + Par_15=0 + Par_16=0 + Par_17=0 + Par_18=0 + 'prepoluate dac_output + + input_sensitivity = 0 + input_sensitivity_last = 1 + timer = 0 + timer_last = Read_Timer() + ramp_chan = 0 + + Fifo_Clear(3) + + CPU_Dig_IO_Config(110011b) + + ' TODO nicer? + for i=1 to 8 + monitor_sel[i] = 0 + next i + + 'populates ramp_data with the values from -10V to 10V + For ramp_idx = 0 To 0ffffh + ramp_data[ramp_idx+1] = ramp_idx - 8000h + ramp_data[20000h-ramp_idx] = ramp_data[ramp_idx+1] + Next ramp_idx + ramp_idx = 1 + + P2_Set_Average_Filter(AIN_MODULE_1, 0) ' use 5 to average 32 measurements + + ' Pseudo code: + ' ADCF_Mode = 2^(AIN_MODULE_1-1) + 2^(AIN_MODULE_2-1) + ADCF_Mode = Shift_Left(1, AIN_MODULE_1-1) + Shift_Left(1, AIN_MODULE_2-1) + + P2_ADCF_Mode(ADCF_Mode, 1) ' Enable Timer mode on Module 2 & 3 (bit flag for module address!) + + +Event: + t1 = Read_Timer() + + ' Start DAC conversion on all DACs simultaneously + P2_Sync_All(Shift_Left(1, AOUT_MODULE_1-1) Or Shift_Left(1, AOUT_MODULE_2-1)) + + ' Read in values from ADC modules, these have already been converted because of the + ' ADCF timer mode + P2_Read_ADCF8(AIN_MODULE_1, adc_input, 1) + P2_Read_ADCF8(AIN_MODULE_2, adc_input, 9) + SendToMonitors() SendToFifo() - RunFilters(adc_input, dac_output) - - RunRamp() - - LimitToOutputRange() - - UpdateLastOutput() - - ' pre-populate DACs with new values - P2_Write_DAC8(AOUT_MODULE_1, dac_output, 1) - P2_Write_DAC8(AOUT_MODULE_2, dac_output, 9) - - Blinkenlights() - - SetInputSensitivity() - - t2 = Read_Timer() - new_time = t2 - t1 -4 - Par_7 = new_time - -Finish: - ' Switch off LEDs - P2_Set_Led(AIN_MODULE_1, 0) - P2_Set_Led(AIN_MODULE_2, 0) - P2_Set_Led(AOUT_MODULE_1, 0) - P2_Set_Led(AOUT_MODULE_2, 0) + RunFilters(adc_input, dac_output) + + AutoLock() ' has to be before limiting output range but after RunFilters + + RunRamp() + + LimitToOutputRange() + + UpdateLastOutput() + + ' pre-populate DACs with new values + P2_Write_DAC8(AOUT_MODULE_1, dac_output, 1) + P2_Write_DAC8(AOUT_MODULE_2, dac_output, 9) + + Blinkenlights() + + SetInputSensitivity() + + t2 = Read_Timer() + new_time = t2 - t1 -4 + Par_7 = new_time + +Finish: + ' Switch off LEDs + P2_Set_Led(AIN_MODULE_1, 0) + P2_Set_Led(AIN_MODULE_2, 0) + P2_Set_Led(AOUT_MODULE_1, 0) + P2_Set_Led(AOUT_MODULE_2, 0) diff --git a/src/nqontrol/controller.py b/src/nqontrol/controller.py index 4ce01e4..59499e2 100644 --- a/src/nqontrol/controller.py +++ b/src/nqontrol/controller.py @@ -375,8 +375,8 @@ def getOutputStates(deviceNumber, servoNumber): servo = device(deviceNumber).servo(servoNumber) if servo.auxSw: checklist.append('aux') - if servo.snapSw: - checklist.append('snap') + # if servo.snapSw: + # checklist.append('snap') if servo.outputSw: checklist.append('output') return checklist @@ -548,7 +548,7 @@ def getMonitorsServo(deviceNumber, channel): :obj:`int` Monitor channel index or None. - """.format(device(deviceNumber).NUMBER_OF_MONITORS) + """.format(settings.NUMBER_OF_MONITORS) dev = device(deviceNumber) channelData = dev.monitors[channel - 1] # channel data is either a dict or None @@ -575,7 +575,7 @@ def getMonitorsCard(deviceNumber, channel): :obj:`String` Card specifier or `None`. - """.format(device(deviceNumber).NUMBER_OF_MONITORS) + """.format(settings.NUMBER_OF_MONITORS) dev = device(deviceNumber) channelData = dev.monitors[channel - 1] if channelData is not None: @@ -606,8 +606,50 @@ def getSDGain(deviceNumber): return servoDesign.gain -def getSnapLimit(deviceNumber, servo): - """Return the initial value of the snap voltage limit of a servo. Part of the servo section. +# def getSnapLimit(deviceNumber, servo): +# """Return the initial value of the snap voltage limit of a servo. Part of the servo section. +# +# Parameters +# ---------- +# deviceNumber : :obj:`int` +# :obj:`ServoDevice.deviceNumber` +# servo : :obj:`int` +# Servo index :obj:`servo.channel` +# +# Returns +# ------- +# :obj:`float` +# The snap voltage limit as a float. +# +# """ +# servo = device(deviceNumber).servo(servo) +# return servo.snap +# +# +# def getSnapGreater(deviceNumber, servo): +# """Return the initial value of the snap condition of a servo. The boolean translates to greater (True) or lesser than (False) the limit. Part of the servo section. +# +# Parameters +# ---------- +# deviceNumber : :obj:`int` +# :obj:`ServoDevice.deviceNumber` +# servo : :obj:`int` +# Servo index :obj:`servo.channel` +# +# Returns +# ------- +# :obj:`bool` +# The snap condition as a boolean. +# +# """ +# servo = device(deviceNumber).servo(servo) +# return servo.snapGreater + + +def getLockRange(deviceNumber, servo): + """Returns a list containing minimum and maximum value of the autolock sections RangeSlider.abs + + The AutoLock options are located in the servo section. Parameters ---------- @@ -618,16 +660,38 @@ def getSnapLimit(deviceNumber, servo): Returns ------- - :obj:`float` - The snap voltage limit as a float. + obj:`list` + [min, max] """ servo = device(deviceNumber).servo(servo) - return servo.snap + return [servo._autolock['min'], servo._autolock['max']] -def getSnapGreater(deviceNumber, servo): - """Return the initial value of the snap condition of a servo. The boolean translates to greater (True) or lesser than (False) the limit. Part of the servo section. +def getLockThreshold(deviceNumber, servo): + """Returns the threshold value of the autolock. + + The AutoLock options are located in the servo section. + + Parameters + ---------- + deviceNumber : :obj:`int` + :obj:`ServoDevice.deviceNumber` + servo : :obj:`int` + Servo index :obj:`servo.channel` + + Returns + ------- + obj:`float` + The voltage value. + + """ + servo = device(deviceNumber).servo(servo) + return servo._autolock['threshold'] + + +def getLockGreater(deviceNumber, servo): + """Return the initial value of the lock condition of a servo. The boolean translates to greater (True) or lesser than (False) the threshold. Part of the servo section. Parameters ---------- @@ -639,12 +703,70 @@ def getSnapGreater(deviceNumber, servo): Returns ------- :obj:`bool` - The snap condition as a boolean. + The lock condition as a boolean. """ servo = device(deviceNumber).servo(servo) - return servo.snapGreater + return servo._autolock['greater'] + +def getAutolockList(deviceNumber): + """Returns a list containing the channel indices of all active servo locks for the AutoLock checklist. + + The AutoLock checklist is part of the app header. + + Parameters + ---------- + deviceNumber : :obj:`int` + :obj:`ServoDevice.deviceNumber` + + Returns + ------- + obj:`list` + List containing servo channel indices. + + """ + locks = [] + for i in range(1, settings.NUMBER_OF_SERVOS + 1): + state = device(deviceNumber).servo(i)._autolock['state'] + if state: + locks.append(i) + return locks + + +def getLockRelock(deviceNumber, servo): + """Return whether auto-relock is on or off for a given servo. + + Parameters + ---------- + deviceNumber : :obj:`int` + :obj:`ServoDevice.deviceNumber` + servo : :obj:`int` + Servo index :obj:`servo.channel` + + Returns + ------- + :obj:`list` + Empty list means `False`, element in list means `True`. + + """ + result = [] + if device(deviceNumber).servo(servo).relock: + result.append('on') + return result + + +def getLockStatus(deviceNumber, servo): + servo = device(deviceNumber).servo(servo) + lockstatus = servo.lockState + greater = servo.lockGreater + if greater: + greater = '>' + else: + greater = '<' + min, max = servo.lockSearchMin, servo.lockSearchMax + threshold = servo.lockThreshold + return 'Autolock: {} | {}{} | [{} → {}]'.format(lockstatus, greater, threshold, min, max) # # # @@ -944,11 +1066,13 @@ def callOffset(deviceNumber, servoNumber, offset): return 'Offset (' + str(servo.offset) + 'V)' -def callGain(deviceNumber, servoNumber, gain, n_submit, timestamp, timestamp_old): +def callGain(context, deviceNumber, servoNumber, gain): """Handle the servo gain input callback for the UI's servo input section. Parameters ---------- + context : :obj:'json' + Dash callback context. Please check the dash docs for more info. deviceNumber : :obj:`int` :obj:`ServoDevice.deviceNumber` servoNumber : :obj:`int` @@ -963,7 +1087,11 @@ def callGain(deviceNumber, servoNumber, gain, n_submit, timestamp, timestamp_old """ servo = device(deviceNumber).servo(servoNumber) - if n_submit is not None and timestamp != timestamp_old: + + # determining context of input + triggered = context.triggered[0]['prop_id'].split('.')[0] + + if 'gain' in triggered: # case when gain is changed by submitting the input with Enter try: gain = fast_real(gain, raise_on_invalid=True) @@ -971,7 +1099,7 @@ def callGain(deviceNumber, servoNumber, gain, n_submit, timestamp, timestamp_old raise PreventUpdate('Empty or no real number input.') if servo.gain != gain: servo.gain = gain - else: + elif 'sos' in triggered: # Case when gain is changed by applying a servo design servoDesign = device(deviceNumber).servoDesign servo.gain = servoDesign.gain @@ -1040,10 +1168,10 @@ def callServoChannels(deviceNumber, servoNumber, inputValues): else: servo.auxSw = False - if 'snap' in inputValues: - servo.snapSw = True - else: - servo.snapSw = False + # if 'snap' in inputValues: + # servo.snapSw = True + # else: + # servo.snapSw = False if 'output' in inputValues: servo.outputSw = True @@ -1209,9 +1337,10 @@ def callPlantParse(deviceNumber, filename, contents, n_clicks, timestamp, timest content_type, content_string = contents.split(',') decoded = base64.b64decode(content_string).decode('utf-8', 'ignore') try: - df = io.read(decoded) + df = io.read(files=decoded) servoDesign.plant = df except Exception as e: + log.warn(e) raise PreventUpdate(str(e)) return timestamp @@ -1409,53 +1538,136 @@ def callToggleRamp(targetInput, deviceNumber): Information string as callback needs some output. Basically a dummy. """ - if targetInput is False: - device(deviceNumber).servo(1).disableRamp() # Not soo nice, but works. Better idea? + servo = device(deviceNumber).servo(targetInput) + if not targetInput: + device(deviceNumber).servo(1).disableRamp() return 'Disabled' + elif servo._autolock['state']: + log.warn('Autolock is active, ramp was not activated.') + return 'Could not update ramp. lock was active.' else: - servo = device(deviceNumber).servo(targetInput) if not servo.rampEnabled: servo.enableRamp() return 'Ramp on channel ' + str(targetInput) -def callRampAmplitude(amp, deviceNumber, servoNumber): - """Send ramp parameters entered in servo control section of the UI to the corresponding :obj:`nqontrol.Servo`. +def callAutolock(values, deviceNumber): + """Enables the auto-lock feature on all selected servos. Ramp is not compatible with Autolock (Essentially, the autolock should be a better ramp). + + GUI wise, the autolock-checklist is located in the header section. Parameters ---------- - amp : :obj:`float` - Ramp amplitude. - freq : :obj:`float` - Ramp frequency. + values : :obj:`list` + The GUI returns a list containing all channel numbers where the autolock should be active. deviceNumber : :obj:`int` :obj:`ServoDevice.deviceNumber` - servoNumber : :obj:`int` - Servo index :obj:`servo.channel` Returns ------- - :obj:`String` - UI label string describing current ramp state. + :obj:`bool` + Returns False in order to disable Ramp in the GUI in case there is an active autolock. """ - servo = device(deviceNumber).servo(servoNumber) - servo.rampAmplitude = amp - return 'Amplitude: ' + str(amp) + # check whether list is empty + ramp = device(deviceNumber).rampEnabled + for i in range(1, settings.NUMBER_OF_SERVOS + 1): + servo = device(deviceNumber).servo(i) + if i in values: + # in order to retrigger a lock one has to uncheck the box first and recheck it + if not servo._autolock['state']: # only set this to 1 if it was 0 before (inactive before) + servo.autolock(1) # setting state to 1 starts searching for peak + if ramp == i: + ramp = 0 # setting the ramp to 0 for the GUI in case RAMP was active on an autolock channel + else: + servo.autolock(0) # setting state to zero turns off the lock + servo._readFilterControl() + return ramp # returning the ramp value for the GUI, if the ramp doesnt interfere with any lock, nothing changes + + +def lockStatus(lockstate, threshold, sliderlist, greater, context, deviceNumber, servo): + servo = device(deviceNumber).servo(servo) + # determining context of input + triggered = context.triggered[0]['prop_id'].split('.')[0] + + # checking for input changes, sending to servo accordingly + if 'lockSlider' in triggered and sliderlist: + servo.lockSearchMin = sliderlist[0] + servo.lockSearchMax = sliderlist[1] + + if 'threshold' in triggered: + try: + threshold = fast_real(threshold, raise_on_invalid=True) + except (ValueError, TypeError): + raise PreventUpdate('Empty or no real number input.') + if -10 >= threshold >= 10: + log.warn('Value out of bounds!') + raise PreventUpdate('Value has to be between -10 and 10V!!') + servo.lockThreshold = threshold + + if 'lockGreater' in triggered: + if not isinstance(greater, bool): + raise PreventUpdate('Has to be a boolean.') + servo.lockGreater = greater + + # getting all values, sending to GUI + lockstatus = servo.lockState + greater = servo.lockGreater + if greater: + greater = '>' + else: + greater = '<' + min, max = servo.lockSearchMin, servo.lockSearchMax + threshold = servo.lockThreshold + auto = servo.relock + if auto: + auto = '(relock)' + else: + auto = '' + return 'Autolock: {} | {}{} | [{} → {}] | {}'.format(lockstatus, greater, threshold, min, max, auto) -def callRampFrequency(freq, deviceNumber, servoNumber): + +# def callAutolockRelock(values, deviceNumber, servo): +# """Set whether the AutoLock should relock automatically whenever falling above/below threshold for a given servo. +# +# Parameters +# ---------- +# values : :obj:`list` +# As with all Dash checklists, even though this is for a single element, the callback input is a list. Empty list means off, none-empty means on. +# deviceNumber : :obj:`int` +# :obj:`ServoDevice.deviceNumber` +# servoNumber : :obj:`int` +# Servo index :obj:`servo.channel` +# +# Returns +# ------- +# :obj:`bool` +# The relock value, since the UI requires a return. +# +# """ +# servo = device(deviceNumber).servo(servo) +# if values: +# servo.relock = True +# else: +# servo.relock = False +# return servo.relock + + +def callRamp(amp, freq, context, deviceNumber, servoNumber): """Send ramp parameters entered in servo control section of the UI to the corresponding :obj:`nqontrol.Servo`. Parameters ---------- - amp: :obj:`float` + amp : :obj:`float` Ramp amplitude. - freq: :obj:`float` + freq : :obj:`float` Ramp frequency. - deviceNumber: :obj:`int` + context : :obj:'json' + Dash callback context. Please check the dash docs for more info. + deviceNumber : :obj:`int` :obj:`ServoDevice.deviceNumber` - servoNumber: :obj:`int` + servoNumber : :obj:`int` Servo index :obj:`servo.channel` Returns @@ -1465,8 +1677,15 @@ def callRampFrequency(freq, deviceNumber, servoNumber): """ servo = device(deviceNumber).servo(servoNumber) - servo.rampFrequency = freq - return 'Frequency: ' + str(round(freq, 2)) + + triggered = context.triggered[0]['prop_id'].split('.')[0] + if 'ramp' in triggered: + servo.rampAmplitude = amp + if 'freq' in triggered: + servo.rampFrequency = freq + amp = servo.rampAmplitude + freq = servo.rampFrequency + return 'Amplitude: {} | Frequency: {}'.format(amp, round(freq, 2)) def callADwinMonitor(channel, servo, card, deviceNumber): @@ -1707,35 +1926,35 @@ def callTempButton(clicks, dt, num, port, interval, voltLim, servo, deviceNumber return 'Start' # new label text for the button -def callSnapParam(limit, greater, servo, deviceNumber): - """Set the snapping parameters for the servo. - - Parameters - ---------- - limit : :obj:`float` - Voltage limit for snapping. - greater : :obj:`bool` - Boolean specifying whether to snap when greater than or lower than limit. - deviceNumber: :obj:`int` - :obj:`ServoDevice.deviceNumber` - servo: :obj:`int` - Servo index :obj:`servo.channel` - - Returns - ------- - :obj:`String` - Updates the snap label with the current limit value. - - """ - servo = device(deviceNumber).servo(servo) - try: - limit = fast_real(limit, raise_on_invalid=True) - except (ValueError, TypeError): - raise PreventUpdate('A snap value has to be provided.') - servo.snap = limit - servo.snapGreater = greater - servo.snapSend(limit, greater) - return f'Snap ({limit} V)' +# def callSnapParam(limit, greater, servo, deviceNumber): +# """Set the snapping parameters for the servo. +# +# Parameters +# ---------- +# limit : :obj:`float` +# Voltage limit for snapping. +# greater : :obj:`bool` +# Boolean specifying whether to snap when greater than or lower than limit. +# deviceNumber: :obj:`int` +# :obj:`ServoDevice.deviceNumber` +# servo: :obj:`int` +# Servo index :obj:`servo.channel` +# +# Returns +# ------- +# :obj:`String` +# Updates the snap label with the current limit value. +# +# """ +# servo = device(deviceNumber).servo(servo) +# try: +# limit = fast_real(limit, raise_on_invalid=True) +# except (ValueError, TypeError): +# raise PreventUpdate('A snap value has to be provided.') +# servo.snap = limit +# servo.snapGreater = greater +# servo.snapSend(limit, greater) +# return f'Snap ({limit} V)' # # # diff --git a/src/nqontrol/general.py b/src/nqontrol/general.py index 1e832d7..6302640 100644 --- a/src/nqontrol/general.py +++ b/src/nqontrol/general.py @@ -1,7 +1,3 @@ -import os -import json - - def setBit(x, offset): mask = 1 << offset return (x | mask) @@ -36,4 +32,4 @@ def readBit(x, offset): def rearrange_filter_coeffs(b, a): """Rearrage coefficients from `a, b` to `c`.""" - return [b[0], a[1], a[2], b[1]/b[0], b[2]/b[0]] + return [b[0], a[1], a[2], b[1] / b[0], b[2] / b[0]] diff --git a/src/nqontrol/guniconfig.py.ini b/src/nqontrol/guniconfig.py.ini index ec00837..635f981 100644 --- a/src/nqontrol/guniconfig.py.ini +++ b/src/nqontrol/guniconfig.py.ini @@ -2,6 +2,8 @@ workers = 1 bind = '0.0.0.0:8000' timeout = 30 -worker_class = 'sync' +worker_class = 'gthread' +threads = 5 debug = True spew = False +preload_app = True diff --git a/src/nqontrol/mockAdwin.py b/src/nqontrol/mockAdwin.py index 4237e8d..4b5526e 100644 --- a/src/nqontrol/mockAdwin.py +++ b/src/nqontrol/mockAdwin.py @@ -23,6 +23,7 @@ class MockADwin(): self._data_long[4 - 1] = [0] * 8 self._data_long[6 - 1] = [0] * 8 self._data_long[7 - 1] = [0] * 8 + self._data_long[settings.DATA_LOCK - 1] = [0] * (8 * 5) self.Set_Par(7, 3000) def Boot(self, file): @@ -114,7 +115,14 @@ class MockADwin(): def _constructOutput(self, amount, input, aux): channel = self.Get_Par(4) inputSw, offsetSw, auxSw, outputSw, snapSw = self._readSwitches(channel) - output = np.full(amount, 0x8000).astype(int) + + # lock simulation + data = self._data_long[7] + lockoffset = data[(channel - 1) * 5 + 4] + if data[(channel - 1) * 5] == 1: + output = np.full(amount, lockoffset).astype(int) + else: + output = np.full(amount, 0x8000).astype(int) if not outputSw: return output if inputSw: @@ -180,7 +188,7 @@ class MockADwin(): # snapping emulation aux = 0x8000 for servo in range(1, 9): - control = self._par[9+servo] + control = self._par[9 + servo] snap_enabled = control & 8 if snap_enabled: @@ -191,10 +199,48 @@ class MockADwin(): if snap_value <= 0: control = general.clearBit(control, 3) # disable snapSw control = general.setBit(control, 1) # enable outputSw - self._par[9+servo] = control + self._par[9 + servo] = control self._par[2] &= ~(15) # stop the ramp - self.Set_Par + # locking emulation + aux = 0x8000 + data = self._data_long[7] + for servo in range(1, 9): + indexoffset = (servo - 1) * 5 + state = (data[indexoffset] & 0x3) + relock = (data[indexoffset] & 0x4) + threshold = (data[indexoffset + 1] & 0xffff) + greater = general.readBit(data[indexoffset + 1], 16) + start = data[indexoffset + 2] + + control = self._par[9 + servo] + + if state == 0: + data[indexoffset + 4] = 0 + + if state == 2: + if greater and (aux < threshold * .9): + if relock: + data[indexoffset] = 1 + relock + else: + data[indexoffset] = 0 + relock + elif (not greater) and (aux > threshold * 0.9): + if relock: + data[indexoffset] = 1 + relock + else: + data[indexoffset] = 0 + relock + + if state == 1: + if (greater and aux > threshold) or ((aux < threshold) and not greater): + data[indexoffset] = 2 + relock + control = general.setBit(control, 0) # enable input + control = general.setBit(control, 1) # enable output + else: + data[indexoffset + 4] = start + control = general.clearBit(control, 0) # input + control = general.clearBit(control, 1) # output + self._par[9 + servo] = control + self._data_long[7] = data def _fpar_special_functions(self): pass diff --git a/src/nqontrol/nqontrol.TC1 b/src/nqontrol/nqontrol.TC1 deleted file mode 100755 index 98da1a6e79882693e1061c0637f128d0d9a21ec8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180680 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	c03J0QRm^YMtDN8R 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�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ĭA(T9N_Z|9)iy60Qmuz9&lcO>M=kIL(qHz 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μ14B-Jxk5ovW`2=EeqK%` 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 ILGmCb0Lhv_z5oCK diff --git a/src/nqontrol/nqontrol.TC1 b/src/nqontrol/nqontrol.TC1 new file mode 120000 index 0000000..15b4876 --- /dev/null +++ b/src/nqontrol/nqontrol.TC1 @@ -0,0 +1 @@ +../adbasic/nqontrol.TC1 \ No newline at end of file diff --git a/src/nqontrol/nqontrolUI.py b/src/nqontrol/nqontrolUI.py index 7a4254d..2bdba32 100644 --- a/src/nqontrol/nqontrolUI.py +++ b/src/nqontrol/nqontrolUI.py @@ -8,9 +8,10 @@ # # https://dash.plot.ly/ # ---------------------------------------------------------------------------------------- - +import dash import dash_core_components as dcc import dash_html_components as html +from dash_daq import ToggleSwitch from dash.dependencies import Input, Output, State from abc import ABCMeta, abstractmethod from nqontrol import settings, controller @@ -109,7 +110,7 @@ class UIDevice(UIComponent): **UIDevice** (see :obj:`nqontrol.settings.DEVICES_LIST`) _(header, servoDetails and rest refer to local variables within the layout property for better source code navigation)_ header (defined within UIDevice, see layout property) - servoDetails (as many as defined in :obj:`nqontrol.ServoDevice.NUMBER_OF_SERVOS`, defined within UIDevice, see layout property) + servoDetails (as many as defined in :obj:`settings.NUMBER_OF_SERVOS`, defined within UIDevice, see layout property) :obj:`nqontrol.nqontrolUI.UIServoSection` :obj:`nqontrol.nqontrolUI.UIRamp` Servo Naming element (defined within UIDevice) @@ -144,7 +145,7 @@ class UIDevice(UIComponent): def __init__(self, app, deviceNumber): super().__init__(app, deviceNumber) - self._numberOfServos = controller.device(self._deviceNumber).NUMBER_OF_SERVOS + self._numberOfServos = settings.NUMBER_OF_SERVOS self.__setUpComponents() def __setUpComponents(self): @@ -152,10 +153,12 @@ class UIDevice(UIComponent): self._uiServoSection = [] self._uiRamps = [] self._uiTempFeedbacks = [] + # self._uiAutoLocks = [] for servoNumber in range(1, self._numberOfServos + 1): self._uiServoSection.append(UIServoSection(self._app, self._deviceNumber, servoNumber)) self._uiRamps.append(UIRamp(self._app, self._deviceNumber, servoNumber)) self._uiTempFeedbacks.append(UITempFeedback(self._app, self._deviceNumber, servoNumber)) + # self._uiAutoLocks.append(UIAutoLock(self._app, self._deviceNumber, servoNumber)) self._uiSDPlot = UIServoDesignPlot(self._app, self._deviceNumber) self._monitor = UIMonitor(self._app, self._deviceNumber) @@ -192,14 +195,27 @@ class UIDevice(UIComponent): children=[ html.Div(children=['Ramp'], className='col-2 align-self-center'), dcc.RadioItems( - options=[{'label': 'Off', 'value': False}] + [{'label': i, 'value': i} - for i in range(1, self._numberOfServos + 1)], + options=[{'label': 'Off', 'value': 0}] + [{'label': i, 'value': i} + for i in range(1, self._numberOfServos + 1)], value=controller.getCurrentRampLocation(self._deviceNumber), id='rampTarget_{}'.format(self._deviceNumber), className='col-10', inputClassName='form-check-input', labelClassName='form-check form-check-inline' - )], + ), + # html.Div( + # children=['AutoLock'], + # className='col-2 align-self-center' + # ), + # dcc.Checklist( + # options=[{'label': i, 'value': i} for i in range(1, self._numberOfServos + 1)], + # values=controller.getAutolockList(self._deviceNumber), + # id='autolockChecklist_{}'.format(self._deviceNumber), + # className='pl-0 col-10', + # inputClassName='form-check-input', + # labelClassName='form-check form-check-inline' + # ) + ], className='row' ) ], @@ -251,9 +267,18 @@ class UIDevice(UIComponent): html.Details( children=[ html.Summary( - [controller.getServoName(self._deviceNumber, i)], - className='col-12', - id='servoName_{0}_{1}'.format(self._deviceNumber, i) + children=[ + html.Span( + [controller.getServoName(self._deviceNumber, i)], id='servoName_{0}_{1}'.format(self._deviceNumber, i), + style={'width': '50%'} + ), + # html.Span( + # [controller.getLockStatus(self._deviceNumber, i)], + # id='servoStatus_{0}_{1}'.format(self._deviceNumber, i), + # style={'width': '50%', 'text-align': 'right'} + # ) + ], + className='col-12 d-flex', ), # within the details component there needs to be another div wrapper for some reason. if removed, the servo and ramp sections will align as if on separate rows. Since bootstrap also requires the nesting of col- classes within row-classes, the structure looks a bit unreadable html.Div( @@ -267,7 +292,20 @@ class UIDevice(UIComponent): ], className='row' ), - self._uiTempFeedbacks[i - 1].layout, + # this is an ugly version to wrap it... buuut hey. + html.Div( + children=[ + html.Div( + [self._uiTempFeedbacks[i - 1].layout], + className='col-12 col-md-6 p-0 m-0' + ), + # html.Div( + # [self._uiAutoLocks[i - 1].layout], + # className='col-12 col-md-6 p-0 m-0' + # ) + ], + className='row' + ), html.Div( children=[ html.P('Name', className='col-auto mb-0'), @@ -303,7 +341,7 @@ class UIDevice(UIComponent): # Update timer dcc.Interval( id='update_stamps_{}'.format(self._deviceNumber), - interval=1000, + interval=2000, n_intervals=0 ) ] @@ -324,14 +362,28 @@ class UIDevice(UIComponent): [State('servoNameInput_{0}_{1}'.format(self._deviceNumber, i), 'value')] )(dynamically_generated_function) + # # Servo status callback + # dynamically_generated_function = self.__createLockStatusCallback(i) + # self._app.callback( + # Output('servoStatus_{0}_{1}'.format(self._deviceNumber, i), 'children'), + # [Input('update_stamps_{}'.format(self._deviceNumber), 'n_intervals'), + # Input('lockSlider_{0}_{1}'.format(self._deviceNumber, i), 'value'), + # Input()] + # )(dynamically_generated_function) + self.__setDeviceCallbacks() - for componentList in (self._uiServoSection, self._uiRamps, self._uiTempFeedbacks): + for componentList in (self._uiServoSection, self._uiRamps, self._uiTempFeedbacks): # , self._uiAutoLocks is commented out for unit in componentList: unit.setCallbacks() self._monitor.setCallbacks() self._uiSDPlot.setCallbacks() + # def __createLockStatusCallback(self, servoNumber): + # def callback(n_interval): + # return controller.getLockStatus(self._deviceNumber, servoNumber) + # return callback + # Callbacks for the device control, e.g. timestamp and workload. def __setDeviceCallbacks(self): @@ -339,7 +391,7 @@ class UIDevice(UIComponent): dynamically_generated_function = self.__createWorkTimeCallback(worktime) self._app.callback( Output(worktime, 'children'), - [Input('update_stamps_{}'.format(self._deviceNumber), 'n_intervals')] + [Input('update_monitor_{}'.format(self._deviceNumber), 'n_intervals')] )(dynamically_generated_function) reboot = 'device_reboot_button_{}'.format(self._deviceNumber) @@ -356,6 +408,15 @@ class UIDevice(UIComponent): [Input(ramp_servo_target, 'value')] )(dynamically_generated_function) + # autolockChecklist = 'autolockChecklist_{}'.format(self._deviceNumber) + # dynamically_generated_function = self.__createAutolockCallback() + # self._app.callback( + # Output('rampTarget_{}'.format(self._deviceNumber), 'value'), # enabling an autolock disables the ramp + # [Input(autolockChecklist, 'values'), + # # Input(ramp_servo_target, 'value') + # ] + # )(dynamically_generated_function) + saveTextArea = 'save_name_{}'.format(self._deviceNumber) saveButton = 'device_save_button_{}'.format(self._deviceNumber) dynamically_generated_function = self.__createSaveCallback() @@ -381,7 +442,13 @@ class UIDevice(UIComponent): # Callback for the RAMP switch def __createRampCallback(self): def callback(targetInput): - controller.callToggleRamp(targetInput, self._deviceNumber) + return controller.callToggleRamp(targetInput, self._deviceNumber) + return callback + + # AutoLock callback + def __createAutolockCallback(self): + def callback(values): + return controller.callAutolock(values, self._deviceNumber) return callback # Reboot button @@ -426,9 +493,7 @@ class UIServoSection(UIComponent): Output('gain_label_{0}_{1}'.format(self._deviceNumber, self._servoNumber), 'children'), [Input(gain, 'n_submit'), Input('sosSwitchStorage_{}'.format(self._deviceNumber), 'data')], - [State(gain, 'value'), - State(gain, 'n_submit_timestamp'), - State(gainStore, 'data')] + [State(gain, 'value')] )(dynamically_generated_function) # Gain Store Callback @@ -479,17 +544,17 @@ class UIServoSection(UIComponent): )(dynamically_generated_function) # Snap parameters callback - snapGreater = 'snapGreater_{0}_{1}'.format(self._deviceNumber, self._servoNumber) - snapLimit = 'snapLimit_{0}_{1}'.format(self._deviceNumber, self._servoNumber) - snapLabel = 'snapLabel_{0}_{1}'.format(self._deviceNumber, self._servoNumber) - dynamically_generated_function = self.__createSnapCallback() - self._app.callback( - Output(snapLabel, 'children'), - [Input(snapLimit, 'n_submit'), - Input(snapGreater, 'value')], - [State(snapLimit, 'value'), - State(snapGreater, 'value')] - )(dynamically_generated_function) + # snapGreater = 'snapGreater_{0}_{1}'.format(self._deviceNumber, self._servoNumber) + # snapLimit = 'snapLimit_{0}_{1}'.format(self._deviceNumber, self._servoNumber) + # snapLabel = 'snapLabel_{0}_{1}'.format(self._deviceNumber, self._servoNumber) + # dynamically_generated_function = self.__createSnapCallback() + # self._app.callback( + # Output(snapLabel, 'children'), + # [Input(snapLimit, 'n_submit'), + # Input(snapGreater, 'value')], + # [State(snapLimit, 'value'), + # State(snapGreater, 'value')] + # )(dynamically_generated_function) @property def layout(self): @@ -536,7 +601,7 @@ class UIServoSection(UIComponent): className='row' ), ], - className='col-6 col-xl-3', + className='col-3', ), # Offset and Gain, also part of the input html.Div( @@ -556,26 +621,26 @@ class UIServoSection(UIComponent): id='gain_{0}_{1}'.format(self._deviceNumber, self._servoNumber), className='form-control' ), - # Snap - html.P('Snap', id='snapLabel_{0}_{1}'.format(self._deviceNumber, self._servoNumber)), - # The snapping condition dropdown - dcc.Dropdown( - options=[ - {'label': '>', 'value': True}, - {'label': '<', 'value': False} - ], - value=controller.getSnapGreater(self._deviceNumber, self._servoNumber), - clearable=False, - id='snapGreater_{0}_{1}'.format(self._deviceNumber, self._servoNumber), - className='w-100 m-0' - ), - # the input field for the snap voltage limit - dcc.Input( - placeholder='snap limit', - id='snapLimit_{0}_{1}'.format(self._deviceNumber, self._servoNumber), - value=controller.getSnapLimit(self._deviceNumber, self._servoNumber), - className='form-control w-100' - ), + # # Snap + # html.P('Snap', id='snapLabel_{0}_{1}'.format(self._deviceNumber, self._servoNumber)), + # # The snapping condition dropdown + # dcc.Dropdown( + # options=[ + # {'label': '>', 'value': True}, + # {'label': '<', 'value': False} + # ], + # value=controller.getSnapGreater(self._deviceNumber, self._servoNumber), + # clearable=False, + # id='snapGreater_{0}_{1}'.format(self._deviceNumber, self._servoNumber), + # className='w-100 m-0' + # ), + # # the input field for the snap voltage limit + # dcc.Input( + # placeholder='snap limit', + # id='snapLimit_{0}_{1}'.format(self._deviceNumber, self._servoNumber), + # value=controller.getSnapLimit(self._deviceNumber, self._servoNumber), + # className='form-control w-100' + # ), # Store component in order to determine how callGain was triggered. Saves previous timestamp dcc.Store( id='gainStore_{0}_{1}'.format(self._deviceNumber, self._servoNumber) @@ -583,7 +648,7 @@ class UIServoSection(UIComponent): # Storage component to use as input channels checklist target in callbacks dcc.Store(id='channelChecklistStorage_{0}_{1}'.format(self._deviceNumber, self._servoNumber)), ], - className='col-6 col-xl-3' + className='col-3' ), # Filter section of the servo controls html.Div( @@ -601,7 +666,7 @@ class UIServoSection(UIComponent): # Storage component to use as target for filter checklist target in callback dcc.Store(id='filterChecklistStorage_{0}_{1}'.format(self._deviceNumber, self._servoNumber)), ], - className='col-6 col-xl-3' + className='col-3' ), # Output section of the servo controls html.Div( @@ -611,7 +676,7 @@ class UIServoSection(UIComponent): dcc.Checklist( options=[ {'label': 'Aux', 'value': 'aux'}, - {'label': 'Snap', 'value': 'snap'}, + # {'label': 'Snap', 'value': 'snap'}, {'label': 'Output', 'value': 'output'}, ], values=controller.getOutputStates(self._deviceNumber, self._servoNumber), @@ -639,19 +704,19 @@ class UIServoSection(UIComponent): className='row' ), ], - className='col-6 col-xl-3 ', + className='col-3', )], className='row' ) ], - className='col-12 col-sm-6 d-inline' + className='col-12 col-xl-6 d-inline' ) # Callback for the snap section - def __createSnapCallback(self): - def callback(submit, dropdown, limit, greater): - return controller.callSnapParam(limit, greater, self._servoNumber, self._deviceNumber) - return callback + # def __createSnapCallback(self): + # def callback(submit, dropdown, limit, greater): + # return controller.callSnapParam(limit, greater, self._servoNumber, self._deviceNumber) + # return callback # Callback for the Offset Input Field def __createOffsetCallback(self): @@ -661,8 +726,9 @@ class UIServoSection(UIComponent): # Callback for the Gain Input Field def __createGainCallback(self): - def callback(n_submit, sosTrigger, inputValue, timestamp, timestamp_old): - return controller.callGain(self._deviceNumber, self._servoNumber, inputValue, n_submit, timestamp, timestamp_old) + def callback(n_submit, sosTrigger, inputValue): + context = dash.callback_context + return controller.callGain(context, self._deviceNumber, self._servoNumber, inputValue) return callback def __storeLastGainTimestamp(self): @@ -713,6 +779,7 @@ class UIRamp(UIComponent): html.Div( children=[ html.H3('Ramp', className='col-auto mt-0'), + html.Span(id='current_ramp_{0}_{1}'.format(self._deviceNumber, self._servoNumber), className='col-auto') ], className='row justify-content-between align-items-center' ), @@ -721,7 +788,6 @@ class UIRamp(UIComponent): children=[ html.P( 'Amplitude', - id='current_amp_{0}_{1}'.format(self._deviceNumber, self._servoNumber), className='col-12' ), dcc.Slider( @@ -742,7 +808,6 @@ class UIRamp(UIComponent): children=[ html.P( 'Frequency', - id='current_freq_{0}_{1}'.format(self._deviceNumber, self._servoNumber), className='col-12' ), dcc.Slider( @@ -760,38 +825,27 @@ class UIRamp(UIComponent): className='row justify-content-center', ) ], - className='col-12 col-sm-6 d-inline' + className='col-12 col-xl-6 d-inline' ) # Callback for the Ramp unit's amplitude slider - def __createRampAmpCallback(self): - def callback(amp): - return controller.callRampAmplitude(amp, self._deviceNumber, self._servoNumber) - return callback - - # Callback for the Ramp unit's amplitude slider - def __createRampFreqCallback(self): - def callback(freq): - return controller.callRampFrequency(freq, self._deviceNumber, self._servoNumber) + def __createRampCallback(self): + def callback(amp, freq): + context = dash.callback_context + return controller.callRamp(amp, freq, context, self._deviceNumber, self._servoNumber) return callback def setCallbacks(self): ramp_freq_slider = 'ramp_freq_slider_{0}_{1}'.format(self._deviceNumber, self._servoNumber) ramp_amp_slider = 'ramp_amp_slider_{0}_{1}'.format(self._deviceNumber, self._servoNumber) - amp_label = 'current_amp_{0}_{1}'.format(self._deviceNumber, self._servoNumber) - freq_label = 'current_freq_{0}_{1}'.format(self._deviceNumber, self._servoNumber) - - dynamically_generated_function = self.__createRampAmpCallback() - self._app.callback( - Output(amp_label, 'children'), - [Input(ramp_amp_slider, 'value')], - )(dynamically_generated_function) + amp_out = 'current_ramp_{0}_{1}'.format(self._deviceNumber, self._servoNumber) - dynamically_generated_function = self.__createRampFreqCallback() + dynamically_generated_function = self.__createRampCallback() self._app.callback( - Output(freq_label, 'children'), - [Input(ramp_freq_slider, 'value')], + Output(amp_out, 'children'), + [Input(ramp_amp_slider, 'value'), + Input(ramp_freq_slider, 'value')], )(dynamically_generated_function) @@ -839,9 +893,6 @@ class UIServoDesignPlot(UIComponent): for i in range(5): inputs.append(Input('filter_update_{0}_{1}'.format(self._deviceNumber, i), 'data')) - # inputs.append(Input('filter_unit_dropdown_{0}_{1}'.format(self._deviceNumber, i), 'value')) - # inputs.append(Input('filter_frequency_input_{0}_{1}'.format(self._deviceNumber, i), 'value')) - # inputs.append(Input('filter_optional_input_{0}_{1}'.format(self._deviceNumber, i), 'value')) dynamically_generated_function = self._createGraphCallback() self._app.callback( @@ -877,7 +928,7 @@ class UISecondOrderSection(UIComponent): dcc.Input( type='number', min=1, - max=controller.device(self._deviceNumber).NUMBER_OF_SERVOS, + max=settings.NUMBER_OF_SERVOS, value=1, id='sos_servo_{}'.format(self._deviceNumber), className='form-control' @@ -993,7 +1044,7 @@ class UISecondOrderSection(UIComponent): for filter in self._uiFilters: filter.setCallbacks() - for i in range(1, controller.device(self._deviceNumber).NUMBER_OF_SERVOS + 1): + for i in range(1, settings.NUMBER_OF_SERVOS + 1): sectionCheck = 'filterSectionCheck_{0}_{1}'.format(self._deviceNumber, i) # Apply the values @@ -1204,7 +1255,7 @@ class UIMonitor(UIComponent): html.Div('Servo', className='col-2 align-self-center'), dcc.RadioItems( options=[{'label': i, 'value': i} - for i in range(1, controller.device(self._deviceNumber).NUMBER_OF_SERVOS + 1)], + for i in range(1, settings.NUMBER_OF_SERVOS + 1)], value=1, id='monitorTarget_{}'.format(self._deviceNumber), className='col-10', @@ -1255,7 +1306,7 @@ class UIMonitor(UIComponent): # Update timer dcc.Interval( id='update_monitor_{}'.format(self._deviceNumber), - interval=1 * 500, + interval=1 * 1000, n_intervals=0 ), # Physical ADwin monitor channels @@ -1336,7 +1387,7 @@ class UIADwinMonitorChannels(UIComponent): children=[ dcc.Dropdown( options=[{'label': 'Servo {}'.format(j), 'value': j} for j in range( - 1, controller.device(self._deviceNumber).NUMBER_OF_SERVOS + 1)], + 1, settings.NUMBER_OF_SERVOS + 1)], value=controller.getMonitorsServo(self._deviceNumber, i), placeholder='Servo channel', id='adwin_monitor_channel_target_{0}_{1}'.format(self._deviceNumber, i) @@ -1363,7 +1414,7 @@ class UIADwinMonitorChannels(UIComponent): ), dcc.Store(id='store_adwin_monitor_channel_{0}_{1}'.format(self._deviceNumber, i))], className='row' - ) for i in range(1, controller.device(self._deviceNumber).NUMBER_OF_MONITORS + 1) + ) for i in range(1, settings.NUMBER_OF_MONITORS + 1) ], className='col-12', ) @@ -1384,7 +1435,7 @@ class UIADwinMonitorChannels(UIComponent): """The function initiating all callbacks for the given element. """ - for i in range(1, controller.device(self._deviceNumber).NUMBER_OF_MONITORS + 1): + for i in range(1, settings.NUMBER_OF_MONITORS + 1): # setting the function for each individual i dynamically_generated_function = self.__setADwinMonitorCallback(i) # all HTML IDs relevant to the callback @@ -1422,7 +1473,7 @@ class UITempFeedback(UIComponent): children=[ html.Summary( ['Temperature Feedback Control'], - className='col-12' + className='col-6' ), html.Div( children=[ @@ -1515,7 +1566,7 @@ class UITempFeedback(UIComponent): className='row align-items-center' ), ], - className='col-12 col-md-6' + className='col-12' ) ], className='row p-0 justify-items-start align-items-center', # The detail itself is a row @@ -1607,3 +1658,164 @@ class UITempFeedback(UIComponent): def callback(clicks, dt, num, port, interval, voltLim): return controller.callTempButton(clicks, dt, num, port, interval, voltLim, self._servoNumber, self._deviceNumber) return callback + + +class UIAutoLock(UIComponent): + + def __init__(self, app, deviceNumber, servoNumber): + super().__init__(app, deviceNumber) + self._servoNumber = servoNumber + + @property + def layout(self): + """Returns the elements' structure to be passed to a Dash style layout, usually with html.Div() as a top level container. For additional information read the Dash documentation at https://dash.plot.ly/. + + Returns + ------- + html.Div + The html/dash layout. + + """ + self._layout = html.Details( + children=[ + html.Summary( + ['AutoLock Parameters'], + className='col-6' + ), + html.Div( + children=[ + html.Div( + children=[ + html.Div(['Activate'], className='col-12 col-sm-4'), + html.Div( + children=[ + ToggleSwitch( + value=controller.getAutolockList(self._deviceNumber), + id='autolock_{}_{}'.format(self._deviceNumber, self._servoNumber), + ), + ], + className='col-12 col-sm-4' + ), + ], + className='row align-items-center' + ), + html.Div( + children=[ + html.Div(['Threshold'], className='col-12 col-sm-4'), + html.Div( + children=[ + dcc.Input( + placeholder='Voltage', + className='w-100 form-control', + value=controller.getLockThreshold(self._deviceNumber, self._servoNumber), + id='threshold_{0}_{1}'.format(self._deviceNumber, self._servoNumber), + ), + ], + className='col-12 col-sm-4' + ), + ], + className='row align-items-center' + ), + html.Div( + children=[ + html.Div(['Greater?'], className='col-12 col-sm-4'), + html.Div( + children=[ + dcc.Dropdown( + options=[ + {'label': '>', 'value': True}, + {'label': '<', 'value': False} + ], + value=controller.getLockGreater(self._deviceNumber, self._servoNumber), + clearable=False, + id='lockGreater_{0}_{1}'.format(self._deviceNumber, self._servoNumber), + className='w-100 m-0' + ), + ], + className='col-12 col-sm-4' + ) + ], + className='row align-items-center' + ), + # html.Div( + # children=[ + # html.Div( + # children=[ + # dcc.Checklist( + # options=[ + # {'label': 'Auto-Relock', 'value': 'on'}, + # ], + # values=controller.getLockRelock(self._deviceNumber, self._servoNumber), + # id='autoRelock_{0}_{1}'.format(self._deviceNumber, self._servoNumber), + # className='w-100 m-0', + # inputClassName='form-check-input', + # labelClassName='form-check form-check-inline' + # ), + # ], + # className='col-12 col-sm-4' + # ) + # ], + # className='row align-items-center' + # ), + html.Div( + children=[ + html.Div(['Search Range'], className='col-12'), + dcc.RangeSlider( + count=1, + min=-10, + max=10, + step=.5, + value=controller.getLockRange(self._deviceNumber, self._servoNumber), + allowCross=False, + id='lockSlider_{0}_{1}'.format(self._deviceNumber, self._servoNumber), + className='col-10 mt-1', + pushable=1, + updatemode='drag', + marks={i: '{}'.format(i) for i in range(-10, 11)}, + ), + ], + className='row justify-content-center align-items-center' + ), + ], + className='col-12' + ) + ], + className='row p-0 justify-items-start align-items-center', # The detail itself is a row + style={'margin': '.1vh .5vh'} + ) + return self._layout + + def setCallbacks(self): + """The function initiating all callbacks for the given element. + """ + # relock = 'autoRelock_{0}_{1}'.format(self._deviceNumber, self._servoNumber) + # relockStore = 'autoRelockStore_{0}_{1}'.format(self._deviceNumber, self._servoNumber) + # + # dynamically_generated_function = self.__createRelockCallback() + # self._app.callback( + # Output(relockStore, 'data'), + # [Input(relock, 'values')] + # )(dynamically_generated_function) + + # Servo status callback + dynamically_generated_function = self.__createLockStatusCallback(self._servoNumber) + self._app.callback( + Output('servoStatus_{0}_{1}'.format(self._deviceNumber, self._servoNumber), 'children'), + [Input('update_stamps_{}'.format(self._deviceNumber), 'n_intervals'), + Input('autolock_{}_{}'.format(self._deviceNumber, self._servoNumber), 'value'), + Input('lockSlider_{0}_{1}'.format(self._deviceNumber, self._servoNumber), 'value'), + Input('threshold_{0}_{1}'.format(self._deviceNumber, self._servoNumber), 'n_submit'), + Input('lockGreater_{0}_{1}'.format(self._deviceNumber, self._servoNumber), 'value')], + [State('threshold_{0}_{1}'.format(self._deviceNumber, self._servoNumber), 'value')] + )(dynamically_generated_function) + + def __createLockStatusCallback(self, servoNumber): + def callback(n_interval, lockstate, sliderlist, n_submit_threshold, greater, threshold): + context = dash.callback_context + return controller.lockStatus(lockstate, threshold, sliderlist, greater, context, self._deviceNumber, servoNumber) + return callback + + # def __createRelockCallback(self): + # def callback(values): + # return controller.callAutolockRelock(values, self._deviceNumber, self._servoNumber) + # return callback diff --git a/src/nqontrol/servo.py b/src/nqontrol/servo.py index b69b76b..fa17bfe 100644 --- a/src/nqontrol/servo.py +++ b/src/nqontrol/servo.py @@ -113,12 +113,12 @@ class Servo: JSONPICKLE = ['servoDesign'] MIN_REFRESH_TIME = .02 DEFAULT_FILTERS = [ - [1, 0, 0, 0, 0], - [1, 0, 0, 0, 0], - [1, 0, 0, 0, 0], - [1, 0, 0, 0, 0], - [1, 0, 0, 0, 0] - ] + [1, 0, 0, 0, 0], + [1, 0, 0, 0, 0], + [1, 0, 0, 0, 0], + [1, 0, 0, 0, 0], + [1, 0, 0, 0, 0] + ] DEFAULT_COLUMNS = ['input', 'aux', 'output'] _manager = mp.Manager() realtime = _manager.dict({ @@ -194,17 +194,25 @@ class Servo: 'offsetSw': False, 'outputSw': False, 'inputSw': False, - 'snapSw': False, - }) - self._snap = self._manager.dict({ - 'limit': 0, - 'greater': True, + # 'snapSw': False, }) + # self._snap = self._manager.dict({ + # 'limit': 0, + # 'greater': True, + # }) self._ramp = self._manager.dict({ 'amplitude': .1, 'minimum': 0, 'stepsize': 20, }) + self._autolock = self._manager.dict({ + 'state': 0, + 'threshold': 0, + 'min': -5, + 'max': 5, + 'greater': True, + 'relock': False, + }) self._fifo = self._manager.dict({ 'stepsize': self.DEFAULT_FIFO_STEPSIZE, 'maxlen': settings.FIFO_MAXLEN, @@ -264,39 +272,47 @@ class Servo: def _triggerReload(self): """Trigger bit to trigger reloading of parameters.""" - par = self._adw.Get_Par(2) + par = self._adw.Get_Par(settings.PAR_RELOADBIT) # only trigger if untriggered if not general.readBit(par, self._channel - 1): par = general.changeBit(par, self._channel - 1, True) - self._adw.Set_Par(2, par) + self._adw.Set_Par(settings.PAR_RELOADBIT, par) else: raise Exception("ADwin has been triggered to reload the shared RAM within 10µs or the realtime program doesn't run properly.") def _readFilterControl(self): - c = self._adw.Get_Par(10 + self._channel) + c = self._adw.Get_Par(settings.PAR_FCR + self._channel) # read control bits self._state['auxSw'] = general.readBit(c, 9) for i in list(range(5)): self._state['filtersEnabled'][i] = general.readBit(c, 4 + i) - self._state['snapSw'] = general.readBit(c, 3) + # self._state['snapSw'] = general.readBit(c, 3) self._state['offsetSw'] = general.readBit(c, 2) self._state['outputSw'] = general.readBit(c, 1) self._state['inputSw'] = general.readBit(c, 0) + def _readLockControl(self): + indexoffset = (self._channel - 1) * 5 + + state = self._adw.GetData_Long(settings.DATA_LOCK, 1 + indexoffset, 1)[0] + if state in range(8): + self._autolock['state'] = (state & 0x3) + self._autolock['relock'] = general.readBit(state, 2) + def _sendFilterControl(self): # read current state - c = self._adw.Get_Par(10 + self._channel) + c = self._adw.Get_Par(settings.PAR_FCR + self._channel) # set control bits c = general.changeBit(c, 9, self._state['auxSw']) for i in list(range(5)): c = general.changeBit(c, 4 + i, self._state['filtersEnabled'][i]) - c = general.changeBit(c, 3, self._state['snapSw']) + # c = general.changeBit(c, 3, self._state['snapSw']) c = general.changeBit(c, 2, self._state['offsetSw']) c = general.changeBit(c, 1, self._state['outputSw']) c = general.changeBit(c, 0, self._state['inputSw']) - self._adw.Set_Par(10 + self._channel, c) + self._adw.Set_Par(settings.PAR_FCR + self._channel, c) ######################################## # Change servo state @@ -321,6 +337,8 @@ class Servo: Defaults to :obj:`True`. Possible not to enable the FIFO buffering for this servo. """ + if self._autolock['state']: + raise UserInputError('Autolock is active, ramp cannot be activated on this channel.') if frequency is None: stepsize = self._ramp['stepsize'] @@ -340,8 +358,8 @@ class Servo: control = stepsize * 0x100 control += self._channel - self._adw.Set_Par(3, control) - self._adw.Set_FPar(1, amplitude / 10) + self._adw.Set_Par(settings.PAR_RCR, control) + self._adw.Set_FPar(settings.FPAR_RAMPAMP, amplitude / 10) if enableFifo: factor = 1.2 @@ -359,7 +377,7 @@ class Servo: def disableRamp(self): """Stop the ramp.""" self._ramp['minimum'] = 0 - self._adw.Set_Par(3, 0) + self._adw.Set_Par(settings.PAR_RCR, 0) @property def filterStates(self): @@ -412,7 +430,7 @@ class Servo: @property def rampEnabled(self): - control = self._adw.Get_Par(3) + control = self._adw.Get_Par(settings.PAR_RCR) if control & 15 == self._channel: return True else: @@ -488,7 +506,7 @@ class Servo: Before using it ensure to block the beam. It takes the mean value of {} data points. After changing the input amplification it may be necessary to adjust the offset. - """.format(10*settings.FIFO_MAXLEN) + """.format(10 * settings.FIFO_MAXLEN) self.enableFifo(1) n = 10000 self._waitForBufferFilling(n) @@ -497,101 +515,231 @@ class Servo: self.offset = - df['input'].mean() @property - def snapSw(self): - """ - Enable or disable the automatic snapping. + def lockState(self): + """Return the lock state. - :getter: Return the state of the switch. - :setter: Enable or disable the output. - :type: :obj:`bool` - """ - self._readFilterControl() - return self._state['snapSw'] + '0': off + `1`: search + `2`: lock - @snapSw.setter - def snapSw(self, enabled): - if not isinstance(enabled, bool): - raise TypeError('the value must be a bool.') + Returns + ------- + :obj:`int` + The lock state. - self._state['snapSw'] = enabled - self._sendFilterControl() + """ + self._readLockControl() + return self._autolock['state'] @property - def snap(self): + def lockThreshold(self): + """Get or set the autolock threshold. + + :getter: Return the threshold. + :setter: Set the threshold. + :type: :obj:`float` """ - Set or read the snap limit. + return self._autolock['threshold'] + + @lockThreshold.setter + def lockThreshold(self, threshold): + try: + float(threshold) + except ValueError: + raise TypeError('threshold must be a float or int.') + index_offset = (self._channel - 1) * 5 # the lock state parameter is set on index 1, 6, 12 etc., as each servo channel occupies 5 indices (as of current version) + self._autolock['threshold'] = threshold + threshold = _convertVolt2Int(threshold, self.auxSensitivity, True) + threshold = general.changeBit(threshold, 16, self.lockGreater) + # Sending values to ADwin + self._adw.SetData_Long([threshold], settings.DATA_LOCK, 2 + index_offset, 1) - :getter: Return the current limit. - :setter: Set the limit to a value. + @property + def lockSearchMin(self): + """Get or set the autolock search range minimum. + + :getter: Return the threshold. + :setter: Set the threshold. :type: :obj:`float` """ - self._snapRead() - return self._snap['limit'] + return self._autolock['min'] - @snap.setter - def snap(self, value): + @lockSearchMin.setter + def lockSearchMin(self, value): try: float(value) except ValueError: raise TypeError('value must be a float or int.') + if not -10 <= value <= 10: + raise ValueError('Search minimum has to be between -10 and 10 volts.') + if value > self._autolock['max']: + raise ValueError('Please make sure the maximum is greater than the minimum or try setting the maximum first.') + index_offset = (self._channel - 1) * 5 # the lock state parameter is set on index 1, 6, 12 etc., as each servo channel occupies 5 indices (as of current version) + self._autolock['min'] = value + min = _convertVolt2Int(value, self.auxSensitivity, True) + # Sending values to ADwin + self._adw.SetData_Long([min], settings.DATA_LOCK, 3 + index_offset, 1) + + @property + def lockSearchMax(self): + """Get or set the autolock search range maximum. - self._snap['limit'] = value - self.snapSend() + :getter: Return the threshold. + :setter: Set the threshold. + :type: :obj:`float` + """ + return self._autolock['max'] + + @lockSearchMax.setter + def lockSearchMax(self, value): + try: + float(value) + except ValueError: + raise TypeError('value must be a float or int.') + if not -10 <= value <= 10: + raise ValueError('Search maximum has to be between -10 and 10 volts.') + if value < self._autolock['min']: + raise ValueError('Please make sure the maximum is greater than the minimum or try setting the minimum first.') + index_offset = (self._channel - 1) * 5 # the lock state parameter is set on index 1, 6, 12 etc., as each servo channel occupies 5 indices (as of current version) + self._autolock['max'] = value + max = _convertVolt2Int(value, self.auxSensitivity, True) + self._adw.SetData_Long([max], settings.DATA_LOCK, 4 + index_offset, 1) @property - def snapGreater(self): + def lockGreater(self): """ - Set the snap direction to either greater (True) or lesser (False) than the limit. + Set the lock direction to either greater (True) or lesser (False) than the threshold. :getter: Return the current value. :setter: Set the condition. :type: :obj:`bool` """ - self._snapRead() - return self._snap['greater'] + return self._autolock['greater'] - @snapGreater.setter - def snapGreater(self, value): - if not isinstance(value, bool): + @lockGreater.setter + def lockGreater(self, greater): + if not isinstance(greater, bool): raise TypeError('value must be a bool.') + index_offset = (self._channel - 1) * 5 # the lock state parameter is set on index 1, 6, 12 etc., as each servo channel occupies 5 indices (as of current version) + threshold = _convertVolt2Int(self.lockThreshold, self.auxSensitivity, True) + threshold = general.changeBit(threshold, 16, greater) + # Sending values to ADwin + self._adw.SetData_Long([threshold], settings.DATA_LOCK, 2 + index_offset, 1) + self._autolock['greater'] = greater - self._snap['greater'] = value - self.snapSend() - - def snapSend(self, limit=None, greater=None): + @property + def relock(self): """ - Value to enable locking. + Set the lock to trigger a relock automatically when falling below or above threshold (according to `greater` setting). - Parameters - ---------- - limit: :obj:`float` - Threshold limit to start locking. - greater: :obj:`bool` - Start locking when the aux value is lower or greater than :obj:`limit`. + :getter: Return the current value. + :setter: Set the condition. + :type: :obj:`bool` """ - if limit is None: - limit = self._snap['limit'] - if greater is None: - greater = self._snap['greater'] - - try: - float(limit) - except ValueError: - raise TypeError('limit must be a float or int.') - if not isinstance(greater, bool): - raise TypeError('greater must be a bool.') - - self._snap['limit'] = limit - self._snap['greater'] = greater - - limit = _convertVolt2Int(limit, self.auxSensitivity, True) - limit = general.changeBit(limit, 16, greater) - self._adw.SetData_Long([limit], 7, self._channel, 1) + return self._autolock['relock'] - def _snapRead(self): - snapping_config = self._adw.GetData_Long(7, self._channel, 1)[0] - self._snap['limit'] = _convertInt2Volt(snapping_config & 0xffff, mode=self.auxSensitivity) - self._snap['greater'] = general.readBit(snapping_config, 16) + @relock.setter + def relock(self, value): + if not isinstance(value, bool): + raise TypeError('value must be a bool.') + self._autolock['relock'] = value + + # @property + # def snapSw(self): + # """ + # Enable or disable the automatic snapping. + # + # :getter: Return the state of the switch. + # :setter: Enable or disable the output. + # :type: :obj:`bool` + # """ + # self._readFilterControl() + # return self._state['snapSw'] + # + # @snapSw.setter + # def snapSw(self, enabled): + # if not isinstance(enabled, bool): + # raise TypeError('the value must be a bool.') + # + # self._state['snapSw'] = enabled + # self._sendFilterControl() + # + # @property + # def snap(self): + # """ + # Set or read the snap limit. + # + # :getter: Return the current limit. + # :setter: Set the limit to a value. + # :type: :obj:`float` + # """ + # self._snapRead() + # return self._snap['limit'] + # + # @snap.setter + # def snap(self, value): + # try: + # float(value) + # except ValueError: + # raise TypeError('value must be a float or int.') + # + # self._snap['limit'] = value + # self.snapSend() + # + # @property + # def snapGreater(self): + # """ + # Set the snap direction to either greater (True) or lesser (False) than the limit. + # + # :getter: Return the current value. + # :setter: Set the condition. + # :type: :obj:`bool` + # """ + # self._snapRead() + # return self._snap['greater'] + # + # @snapGreater.setter + # def snapGreater(self, value): + # if not isinstance(value, bool): + # raise TypeError('value must be a bool.') + # + # self._snap['greater'] = value + # self.snapSend() + # + # def snapSend(self, limit=None, greater=None): + # """ + # Value to enable locking. + # + # Parameters + # ---------- + # limit: :obj:`float` + # Threshold limit to start locking. + # greater: :obj:`bool` + # Start locking when the aux value is lower or greater than :obj:`limit`. + # """ + # if limit is None: + # limit = self._snap['limit'] + # if greater is None: + # greater = self._snap['greater'] + # + # try: + # float(limit) + # except ValueError: + # raise TypeError('limit must be a float or int.') + # if not isinstance(greater, bool): + # raise TypeError('greater must be a bool.') + # + # self._snap['limit'] = limit + # self._snap['greater'] = greater + # + # limit = _convertVolt2Int(limit, self.auxSensitivity, True) + # limit = general.changeBit(limit, 16, greater) + # self._adw.SetData_Long([limit], settings.DATA_SNAP, self._channel, 1) + # + # def _snapRead(self): + # snapping_config = self._adw.GetData_Long(settings.DATA_SNAP, self._channel, 1)[0] + # self._snap['limit'] = _convertInt2Volt(snapping_config & 0xffff, mode=self.auxSensitivity) + # self._snap['greater'] = general.readBit(snapping_config, 16) @property def outputSw(self): @@ -647,7 +795,7 @@ class Servo: self._state['offset'] = offset index = self._channel + 8 offsetInt = _convertVolt2Int(offset, self.inputSensitivity) - self._adw.SetData_Double([offsetInt], 2, index, 1) + self._adw.SetData_Double([offsetInt], settings.DATA_OFFSETGAIN, index, 1) @property def gain(self): @@ -665,7 +813,7 @@ class Servo: self._state['gain'] = gain index = self._channel effectiveGain = 1.0 * self.gain / pow(2, self.inputSensitivity) - self._adw.SetData_Double([effectiveGain], 2, index, 1) + self._adw.SetData_Double([effectiveGain], settings.DATA_OFFSETGAIN, index, 1) @property def inputSensitivity(self): @@ -699,13 +847,13 @@ class Servo: self._state['inputSensitivity'] = mode - currentRegister = self._adw.Get_Par(8) + currentRegister = self._adw.Get_Par(settings.PAR_SENSITIVITY) register = general.clearBit(currentRegister, self._channel * 2 - 2) register = general.clearBit(register, self._channel * 2 - 1) register += mode << self._channel * 2 - 2 - self._adw.Set_Par(8, register) + self._adw.Set_Par(settings.PAR_SENSITIVITY, register) # Update gain to correct gain change from input sensitivity self.gain = self.gain @@ -743,13 +891,13 @@ class Servo: self._state['auxSensitivity'] = mode - currentRegister = self._adw.Get_Par(8) + currentRegister = self._adw.Get_Par(settings.PAR_SENSITIVITY) register = general.clearBit(currentRegister, self._channel * 2 + 14) register = general.clearBit(register, self._channel * 2 + 15) register += mode << self._channel * 2 + 14 - self._adw.Set_Par(8, register) + self._adw.Set_Par(settings.PAR_SENSITIVITY, register) @property def filters(self): @@ -788,7 +936,7 @@ class Servo: for i in f: data.append(i) - self._adw.SetData_Double(data, 1, startIndex, len(data)) + self._adw.SetData_Double(data, settings.DATA_FILTERCOEFFS, startIndex, len(data)) self._triggerReload() @@ -849,7 +997,7 @@ class Servo: @property def _fifoBufferSize(self): """Get the current size of the fifo buffer on ADwin.""" - return self._adw.Fifo_Full(3) + return self._adw.Fifo_Full(settings.DATA_FIFO) @property def fifoStepsize(self): @@ -887,7 +1035,7 @@ class Servo: @property def fifoEnabled(self): - if self._adw.Get_Par(4) == self._channel: + if self._adw.Get_Par(settings.PAR_ACTIVE_CHANNEL) == self._channel: return True else: return False @@ -913,8 +1061,8 @@ class Servo: else: self._fifo['stepsize'] = stepsize # Enable on adwin - self._adw.Set_Par(4, self._channel) - self._adw.Set_Par(6, stepsize) + self._adw.Set_Par(settings.PAR_ACTIVE_CHANNEL, self._channel) + self._adw.Set_Par(settings.PAR_FIFOSTEPSIZE, stepsize) # set refresh time self._calculateRefreshTime() # Create local buffer @@ -924,8 +1072,8 @@ class Servo: """Disable the FiFo output if it is enabled on this channel.""" if self.fifoEnabled: # Disable on adwin only if this channel is activated - self._adw.Set_Par(4, 0) - self._adw.Set_Par(6, 0) + self._adw.Set_Par(settings.PAR_ACTIVE_CHANNEL, 0) + self._adw.Set_Par(settings.PAR_FIFOSTEPSIZE, 0) # Destroy local buffer self._fifoBuffer = None @@ -943,7 +1091,7 @@ class Servo: # Saving 3 16bit channels in a 64bit long variable # Byte | 7 6 | 5 4 | 3 2 | 1 0 | # Channel | | input | aux | output | - combined = np.array(self._adw.GetFifo_Double(3, n)[:], dtype='int') + combined = np.array(self._adw.GetFifo_Double(settings.DATA_FIFO, n)[:], dtype='int') def extract_value(combined, offset=0): shifted = np.right_shift(combined, offset) @@ -1314,6 +1462,63 @@ class Servo: return data[self.__class__.__name__] + ######################################## + # Autolock + ######################################## + def autolock(self, lock, threshold=None, min=None, max=None, greater=None, relock=None): + if not isinstance(lock, int): + raise TypeError('lock has to be an integer.') + if lock not in range(2): + raise ValueError('The lock state is given using integers, where `0: autolock-off`, `1: start/search-peak`, `2: lock-mode`. The user input should either be `0` or `1`, as the rest ist determined by the locking algorithm.') + if threshold is None: + threshold = self._autolock['threshold'] + if min is None: + min = self.lockSearchMin + if max is None: + max = self.lockSearchMax + if greater is None: + greater = self.lockGreater + if relock is None: + relock = self.relock + if not isinstance(greater, bool): + raise TypeError('greater must be a bool.') + if not isinstance(relock, bool): + raise TypeError('greater must be a bool.') + try: + float(threshold) + float(min) + float(max) + except ValueError: + raise TypeError('parameters must be floats or ints.') + self._autolock['state'] = lock + + # disable ramp when locking (should be disabled by the GUI, this is mostly for use with a terminal) + if lock and self.rampEnabled: + self.disableRamp() + + # disabling input and output while searching + if lock: + self.outputSw = False + self.inputSw = False + else: + self.inputSw = True + self.outputSw = True + + index_offset = (self._channel - 1) * 5 # the lock state parameter is set on index 1, 6, 12 etc., as each servo channel occupies 5 indices (as of current version) + # the fifth array index is occupied by the a "lastFound" value, which can be use in case of a relock. it is set within the autolock, not as part of the python program + + # set lockmode to 0 while sending new parameters + self._adw.SetData_Long([0], settings.DATA_LOCK, 1 + index_offset, 1) + # send all values to ADwin + self.lockSearchMin = min + self.lockSearchMax = max + self.lockThreshold = threshold + self.lockGreater = greater + self.relock = relock + lock = general.changeBit(lock, 2, relock) # adding relock bit + # activating lock + self._adw.SetData_Long([lock], settings.DATA_LOCK, 1 + index_offset, 1) # setting the lock state last + class FeedbackController(Thread): def __init__(self, servo, dT, mtd, voltage_limit, server, port, update_interval=1): @@ -1344,7 +1549,7 @@ class FeedbackController(Thread): return self._dT @dT.setter - def dT(self, value): + def dT(self, value): self._dT = value self._servo._tempFeedbackSettings['dT'] = value @@ -1353,7 +1558,7 @@ class FeedbackController(Thread): return self._mtd @mtd.setter - def mtd(self, value): + def mtd(self, value): value = tuple(value) self._mtd = value self._servo._tempFeedbackSettings['mtd'] = value @@ -1363,7 +1568,7 @@ class FeedbackController(Thread): return self._voltage_limit @voltage_limit.setter - def voltage_limit(self, value): + def voltage_limit(self, value): self._voltage_limit = value self._servo._tempFeedbackSettings['voltage_limit'] = value @@ -1372,7 +1577,7 @@ class FeedbackController(Thread): return self._update_interval @update_interval.setter - def update_interval(self, value): + def update_interval(self, value): self._update_interval = value self._servo._tempFeedbackSettings['update_interval'] = value diff --git a/src/nqontrol/servoDevice.py b/src/nqontrol/servoDevice.py index f6d78ef..0b308f9 100644 --- a/src/nqontrol/servoDevice.py +++ b/src/nqontrol/servoDevice.py @@ -8,7 +8,6 @@ from nqontrol.servo import Servo import json import logging as log from OpenQlab.analysis.servo_design import ServoDesign -from OpenQlab import io import jsonpickle from nqontrol import settings from shutil import copyfile @@ -38,8 +37,6 @@ class ServoDevice: DONT_SERIALIZE = ['adw', '_servos', 'deviceNumber'] DEFAULT_PROCESS = "nqontrol.TC1" JSONPICKLE = ['_servoDesign'] - NUMBER_OF_SERVOS = 8 - NUMBER_OF_MONITORS = 8 # Path of the compiled binary. It comes usually with the source code, but can be exchanged. def __init__(self, deviceNumber=None, @@ -54,10 +51,10 @@ class ServoDevice: else: self.adw = ADwin(deviceNumber, raiseExceptions) self._servoDesign = ServoDesign() # The dummy servo design object - self._servos = [None] * self.NUMBER_OF_SERVOS + self._servos = [None] * settings.NUMBER_OF_SERVOS self.deviceNumber = deviceNumber - self._monitors = [None] * self.NUMBER_OF_MONITORS + self._monitors = [None] * settings.NUMBER_OF_MONITORS try: self._bootAdwin(process, reboot=reboot) @@ -70,7 +67,7 @@ class ServoDevice: # Adding servos names = settings.SERVO_NAMES - for i in range(1, self.NUMBER_OF_SERVOS + 1): + for i in range(1, settings.NUMBER_OF_SERVOS + 1): # Check if a servo name is set in SETTINGS if (deviceNumber in names) and (i in names[deviceNumber]): self.addServo(channel=i, name=names[deviceNumber][i]) @@ -130,7 +127,7 @@ class ServoDevice: :getter: Runtime in seconds. :type: :obj:`int` """ - return int(self.adw.Get_Par(1)) + return int(self.adw.Get_Par(settings.PAR_TIMER)) @property def rampEnabled(self): @@ -140,12 +137,12 @@ class ServoDevice: :getter: :obj:`False` if disabled, channel number if enabled. :type: :obj:`False` or :obj:`int` """ - control = self.adw.Get_Par(3) + control = self.adw.Get_Par(settings.PAR_RCR) channel = control & 15 if channel > 0: return channel else: - return False + return 0 # 0 is now the false channel def _bootAdwin(self, process=DEFAULT_PROCESS, @@ -208,7 +205,7 @@ class ServoDevice: ------- :obj:`Servo` Servo object. - """.format(self.NUMBER_OF_SERVOS) + """.format(settings.NUMBER_OF_SERVOS) return self._servos[channel - 1] def addServo(self, channel, applySettings=None, name=None): @@ -221,9 +218,9 @@ class ServoDevice: Physical channel from 1 to {}. applySettings: :obj:`str` or :obj:`dict` You can directly apply settings from a json file or a dict. - """.format(self.NUMBER_OF_SERVOS) - if channel > self.NUMBER_OF_SERVOS or channel < 1: - raise IndexError("Choose a channel from 1 to {}!".format(self.NUMBER_OF_SERVOS)) + """.format(settings.NUMBER_OF_SERVOS) + if channel > settings.NUMBER_OF_SERVOS or channel < 1: + raise IndexError("Choose a channel from 1 to {}!".format(settings.NUMBER_OF_SERVOS)) if self._servos[channel - 1] is None: self._servos[channel - 1] = Servo(channel, self.adw, applySettings=applySettings, name=name) else: @@ -237,7 +234,7 @@ class ServoDevice: ---------- channel: :obj:`int` Number of the physical channel to remove from 1 to {}. - """.format(self.NUMBER_OF_SERVOS) + """.format(settings.NUMBER_OF_SERVOS) self._servos[channel - 1] = None def disableMonitor(self, monitor_channel): @@ -250,7 +247,7 @@ class ServoDevice: Channel to disable the output. """ self.monitors[monitor_channel - 1] = None - self.adw.SetData_Long([0], 6, monitor_channel, 1) + self.adw.SetData_Long([0], settings.DATA_MONITORS, monitor_channel, 1) def enableMonitor(self, monitor_channel, servo, card): """ @@ -281,7 +278,7 @@ class ServoDevice: raise ValueError('You should choose one of the possible cards for the monitor output.') self.monitors[monitor_channel - 1] = dict({'servo': servo, 'card': card}) - self.adw.SetData_Long([monitor], 6, monitor_channel, 1) + self.adw.SetData_Long([monitor], settings.DATA_MONITORS, monitor_channel, 1) def _backupSettingsFile(self, filename): if os.path.isfile(filename): @@ -345,7 +342,7 @@ class ServoDevice: Physical channel from 1 to {}. applySettings: :obj:`str` or :obj:`dict` Settings to apply to the selected :obj:`Servo`. - """.format(self.NUMBER_OF_SERVOS) + """.format(settings.NUMBER_OF_SERVOS) self.servo(channel).loadSettings(applySettings) def loadDeviceFromJson(self, filename=settings.SETTINGS_FILE): @@ -372,7 +369,8 @@ class ServoDevice: servos = data[self.__class__.__name__]['_servos'] for s in servos: channel = servos[s]['_channel'] - self.loadServoFromJson(channel, servos[s]) + if channel <= settings.NUMBER_OF_SERVOS: + self.loadServoFromJson(channel, servos[s]) # Loading device parameters self._applySettingsDict(data) diff --git a/src/nqontrol/settings.py b/src/nqontrol/settings.py index 013a2c1..58665af 100644 --- a/src/nqontrol/settings.py +++ b/src/nqontrol/settings.py @@ -44,6 +44,8 @@ LOG_FORMAT = user_config.get('LOG_FORMAT', '%(levelname)s: %(module)s: %(message DEBUG = user_config.get('DEBUG', False) SERVO_NAMES = user_config.get('SERVO_NAMES', {}) # currently only for one device +NUMBER_OF_SERVOS = user_config.get('NUMBER_OF_SERVOS', 8) +NUMBER_OF_MONITORS = user_config.get('NUMBER_OF_MONITORS', 8) # Temperature feedback DEFAULT_TEMP_HOST = user_config.get('DEFAULT_TEMP_HOST', '127.0.0.1') @@ -55,6 +57,28 @@ RAMP_DATA_POINTS = 0x20000 FIFO_BUFFER_SIZE = 30003 # Buffer size that is choosen on the adwin system. FIFO_MAXLEN = 1000 +########################################################################################### +# ADwin parameter index assignments (don't change, these are mostly for better readability) +########################################################################################### +PAR_TIMER = 1 +PAR_RELOADBIT = 2 +PAR_RCR = 3 # Ramp Control Register +PAR_ACTIVE_CHANNEL = 4 +PAR_FIFOSTEPSIZE = 6 +PAR_TIMEDIFF = 7 +PAR_SENSITIVITY = 8 +PAR_FCR = 10 # Filter Control Register, used as `10 + servo_channel` + +FPAR_RAMPAMP = 1 # Ramp amplitude + +DATA_FILTERCOEFFS = 1 +DATA_OFFSETGAIN = 2 +DATA_FIFO = 3 +DATA_MONITORS = 6 +DATA_SNAP = 7 +DATA_LOCK = 8 + + ########################################################## ################# local settings import ################## ########################################################## diff --git a/src/nqontrol/settings_local.sample.py b/src/nqontrol/settings_local.sample.py index 6388e37..e9c95ff 100644 --- a/src/nqontrol/settings_local.sample.py +++ b/src/nqontrol/settings_local.sample.py @@ -3,7 +3,7 @@ #################### Local configuration #################### # Use 0 to enable a dummy device. Otherwise use the channel number -# DEVICES_LIST = [0] # The 0 is reserved to mock device for testing! +DEVICES_LIST = [0] # The 0 is reserved to mock device for testing! # DEVICES_LIST = [1] # SETTINGS_FILE = 'test.json' @@ -30,4 +30,8 @@ # When initialized, the ServoDevice will check whether names are available for its deviceNumber. # DEBUG = True + +# NUMBER_OF_SERVOS = 8 # only for one device currently +# NUMBER_OF_MONITORS = 8 # same + # LOG_LEVEL = 'INFO' diff --git a/src/tests/test_servo.py b/src/tests/test_servo.py index ef11977..d0d76b8 100644 --- a/src/tests/test_servo.py +++ b/src/tests/test_servo.py @@ -66,7 +66,7 @@ class TestVoltConvertion(unittest.TestCase): mode = 0 self.assertAlmostEqual(servo._convertVolt2Int(10, mode), 0x7fff) self.assertAlmostEqual(servo._convertVolt2Int(10, mode, True), 0xffff) - self.assertAlmostEqual(servo._convertVolt2Int(3.7, mode), round(0x8000*.37), 0) + self.assertAlmostEqual(servo._convertVolt2Int(3.7, mode), round(0x8000 * .37), 0) self.assertAlmostEqual(servo._convertVolt2Int(0, mode), 0) self.assertAlmostEqual(servo._convertVolt2Int(0, mode, True), 0x8000) self.assertAlmostEqual(servo._convertVolt2Int(-10, mode), -0x8000) @@ -77,7 +77,7 @@ class TestVoltConvertion(unittest.TestCase): mode = 3 self.assertAlmostEqual(servo._convertVolt2Int(1.25, mode), 0x7fff) - self.assertAlmostEqual(servo._convertVolt2Int(0.4625, mode), round(0x8000*.37), 0) + self.assertAlmostEqual(servo._convertVolt2Int(0.4625, mode), round(0x8000 * .37), 0) self.assertAlmostEqual(servo._convertVolt2Int(0, mode), 0) self.assertAlmostEqual(servo._convertVolt2Int(-1.25, mode), -0x8000) # out of range @@ -105,16 +105,19 @@ class TestVoltConvertion(unittest.TestCase): class TestServo(unittest.TestCase): def setUp(self): + settings.NUMBER_OF_SERVOS = 8 # ensure this is 8 for all the servo tests, since sometimes numbers are explicitly set to 7, 8 etc.. + settings.NUMBER_OF_MONITORS = 8 # same thing self.sd = ServoDevice(settings.DEVICES_LIST[0], reboot=True) - # self.sd.reboot() - self.s = self.sd.servo(2) + self.sd.reboot() + self.testchannel = 2 + self.s = self.sd.servo(self.testchannel) import nqontrol log.warning('nqontrol path: {}'.format(nqontrol.__path__[0])) if 'site-packages' in nqontrol.__path__[0]: raise Exception('Not running the development code!!!') def test_checkNumberAndChannel(self): - self.assertEqual(self.s._channel, 2) + self.assertEqual(self.s._channel, self.testchannel) def test_filters(self): # default filter state @@ -125,7 +128,7 @@ class TestServo(unittest.TestCase): [1, 0, 0, 0, 0], [1, 0, 0, 0, 0] ] - filtersEnabled = [False]*5 + filtersEnabled = [False] * 5 self.assertEqual(self.s._state['filters'], filters) self.assertEqual(self.s._state['filtersEnabled'], filtersEnabled) @@ -143,7 +146,7 @@ class TestServo(unittest.TestCase): self.s._filters = [[0.0] * 5] * 5 self.assertEqual(self.s.filters, filters) self.assertEqual(self.s._state['filters'], filters) - for i in range(3, 9): + for i in range(3, settings.NUMBER_OF_SERVOS): self.assertEqual(self.sd.servo(i).filters, self.s.DEFAULT_FILTERS) def test_filterControlRegister(self): @@ -187,8 +190,8 @@ class TestServo(unittest.TestCase): # enable FIFO and test correct Parameters stepsize = 100 self.s.enableFifo(stepsize) - self.assertEqual(2, self.s._adw.Get_Par(4)) # Test channel - self.assertEqual(stepsize, self.s._adw.Get_Par(6)) # Test stepsize + self.assertEqual(2, self.s._adw.Get_Par(settings.PAR_ACTIVE_CHANNEL)) # Test channel + self.assertEqual(stepsize, self.s._adw.Get_Par(settings.PAR_FIFOSTEPSIZE)) # Test stepsize self.s.disableFifo() self.assertFalse(self.s.fifoEnabled) self.s.enableFifo(1) @@ -198,30 +201,30 @@ class TestServo(unittest.TestCase): def test_monitor(self): # assign different channels - self.sd.enableMonitor(8, 2, card='input') - self.sd.enableMonitor(5, 2, card='aux') - self.sd.enableMonitor(1, 2, card='output') - self.sd.enableMonitor(2, 2, card='input') - self.sd.enableMonitor(3, 2, card='ttl') - self.assertEqual(self.s._adw.GetData_Long(6, 8, 1)[0], 2) - self.assertEqual(self.s._adw.GetData_Long(6, 5, 1)[0], 10) - self.assertEqual(self.s._adw.GetData_Long(6, 1, 1)[0], 22) - self.assertEqual(self.s._adw.GetData_Long(6, 2, 1)[0], 2) - self.assertEqual(self.s._adw.GetData_Long(6, 3, 1)[0], 30) + self.sd.enableMonitor(8, self.testchannel, card='input') + self.sd.enableMonitor(5, self.testchannel, card='aux') + self.sd.enableMonitor(1, self.testchannel, card='output') + self.sd.enableMonitor(2, self.testchannel, card='input') + self.sd.enableMonitor(3, self.testchannel, card='ttl') + self.assertEqual(self.s._adw.GetData_Long(settings.DATA_MONITORS, 8, 1)[0], 2) + self.assertEqual(self.s._adw.GetData_Long(settings.DATA_MONITORS, 5, 1)[0], 10) + self.assertEqual(self.s._adw.GetData_Long(settings.DATA_MONITORS, 1, 1)[0], 22) + self.assertEqual(self.s._adw.GetData_Long(settings.DATA_MONITORS, 2, 1)[0], 2) + self.assertEqual(self.s._adw.GetData_Long(settings.DATA_MONITORS, 3, 1)[0], 30) # disable monitor self.sd.disableMonitor(1) self.sd.disableMonitor(8) - self.assertEqual(self.s._adw.GetData_Long(6, 1, 1)[0], 0) - self.assertEqual(self.s._adw.GetData_Long(6, 8, 1)[0], 0) + self.assertEqual(self.s._adw.GetData_Long(settings.DATA_MONITORS, 1, 1)[0], 0) + self.assertEqual(self.s._adw.GetData_Long(settings.DATA_MONITORS, 8, 1)[0], 0) # try wrong channels with self.assertRaises(IndexError): - self.sd.enableMonitor(0, 2, card='input') + self.sd.enableMonitor(0, self.testchannel, card='input') with self.assertRaises(IndexError): - self.sd.enableMonitor(9, 2, card='input') + self.sd.enableMonitor(9, self.testchannel, card='input') with self.assertRaises(IndexError): - self.sd.enableMonitor(-1, 2, card='input') + self.sd.enableMonitor(-1, self.testchannel, card='input') def test_saveLoadJson(self): # TODO better test @@ -249,14 +252,14 @@ class TestServo(unittest.TestCase): def test_offsetGain(self): self.s.offset = 9.4 self.s.gain = 1.5 - self.assertEqual(self.s._adw.GetData_Double(2, 2, 1)[:], [1.5]) - self.assertEqual(self.s._adw.GetData_Double(2, 2+8, 1)[0], 30802) + self.assertEqual(self.s._adw.GetData_Double(settings.DATA_OFFSETGAIN, self.testchannel, 1)[:], [1.5]) + self.assertEqual(self.s._adw.GetData_Double(settings.DATA_OFFSETGAIN, self.testchannel + 8, 1)[0], 30802) self.s.gain = 1.0 self.s.inputSensitivity = 3 - self.assertEqual(self.s._adw.GetData_Double(2, 2, 1)[:], [0.125]) + self.assertEqual(self.s._adw.GetData_Double(settings.DATA_OFFSETGAIN, self.testchannel, 1)[:], [0.125]) self.s.offset = 1 - self.assertEqual(self.s._adw.GetData_Double(2, 2+8, 1)[:], [26214]) + self.assertEqual(self.s._adw.GetData_Double(settings.DATA_OFFSETGAIN, self.testchannel + 8, 1)[:], [26214]) def test_offsetLimits(self): for mode in range(4): @@ -280,8 +283,8 @@ class TestServo(unittest.TestCase): self.s.enableRamp(5, 5) self.assertEqual(self.s._ramp['amplitude'], 5) - self.assertEqual(self.s._adw.Get_Par(3), 1282) - self.assertEqual(self.s._adw.Get_FPar(1), 0.5) + self.assertEqual(self.s._adw.Get_Par(settings.PAR_RCR), 1282) + self.assertEqual(self.s._adw.Get_FPar(settings.FPAR_RAMPAMP), 0.5) self.s.realtimePlot() settings.SAMPLING_RATE = 200e3 sleep(.1) @@ -291,8 +294,8 @@ class TestServo(unittest.TestCase): self.s.enableRamp(255, 10) self.assertEqual(self.s._ramp['amplitude'], 10) self.assertTrue(self.s.rampEnabled) - self.assertEqual(self.s._adw.Get_Par(3), 65282) - self.assertEqual(self.s._adw.Get_FPar(1), 1.0) + self.assertEqual(self.s._adw.Get_Par(settings.PAR_RCR), 65282) + self.assertEqual(self.s._adw.Get_FPar(settings.FPAR_RAMPAMP), 1.0) settings.SAMPLING_RATE = 200e3 self.s.realtimePlot() sleep(.1) @@ -314,16 +317,16 @@ class TestServo(unittest.TestCase): self.s.enableRamp() def test_inputGain(self): - self.assertEqual(self.s._adw.Get_Par(8), 0) + self.assertEqual(self.s._adw.Get_Par(settings.PAR_SENSITIVITY), 0) self.s.inputSensitivity = 2 self.sd.servo(8).inputSensitivity = 3 - self.assertEqual(self.s._adw.Get_Par(8), 49160) + self.assertEqual(self.s._adw.Get_Par(settings.PAR_SENSITIVITY), 49160) self.s.auxSensitivity = 3 - self.assertEqual(self.s._adw.Get_Par(8), 835592) + self.assertEqual(self.s._adw.Get_Par(settings.PAR_SENSITIVITY), 835592) self.sd.servo(7).auxSensitivity = 2 - self.assertEqual(self.s._adw.Get_Par(8), 537706504) + self.assertEqual(self.s._adw.Get_Par(settings.PAR_SENSITIVITY), 537706504) def test_runtime(self): self.s.enableFifo(1) @@ -332,10 +335,10 @@ class TestServo(unittest.TestCase): self.sd.enableMonitor(i, i, card='input') self.sd.servo(i).offset = 3 self.sd.servo(i).auxSw = True - self.sd.servo(i).filters = [[7]*5]*5 + self.sd.servo(i).filters = [[7] * 5] * 5 sleep(.1) - self.assertLess(self.s._adw.Get_Par(7), 4500) - self.assertGreater(self.s._adw.Get_Par(7), 2500) + self.assertLess(self.s._adw.Get_Par(settings.PAR_TIMEDIFF), 4500) + self.assertGreater(self.s._adw.Get_Par(settings.PAR_TIMEDIFF), 2500) def test_sampling_rate(self): CPU_CLK = 1e9 @@ -519,11 +522,11 @@ class TestServo(unittest.TestCase): def test_send_state_after_reboot(self): sleep(.1) time = self.sd.timestamp - self.assertEqual(self.s._adw.GetData_Double(2, 2, 1)[:], [1.0]) + self.assertEqual(self.s._adw.GetData_Double(settings.DATA_OFFSETGAIN, self.testchannel, 1)[:], [1.0]) self.s.gain = 1.5 - self.assertEqual(self.s._adw.GetData_Double(2, 2, 1)[:], [1.5]) + self.assertEqual(self.s._adw.GetData_Double(settings.DATA_OFFSETGAIN, self.testchannel, 1)[:], [1.5]) self.sd.reboot() - self.assertEqual(self.s._adw.GetData_Double(2, 2, 1)[:], [1.5]) + self.assertEqual(self.s._adw.GetData_Double(settings.DATA_OFFSETGAIN, self.testchannel, 1)[:], [1.5]) self.assertLessEqual(self.sd.timestamp, time) def test_saving_and_loading_with_plant_and_temp_feedback(self): @@ -547,55 +550,15 @@ class TestServo(unittest.TestCase): self.assertEqual(self.s._tempFeedbackSettings['voltage_limit'], 3.6) self.assertEqual(self.s._tempFeedbackSettings['update_interval'], 1.3) - def test_snapping_disables_output(self): - def out(): - return self.s._readoutNewData(10000)['output'].iloc[-1] - - self.s.enableFifo() - self.s.offset = 9 - self.s.offsetSw = True - self.s.inputSw = True - self.s.outputSw = True - sleep(.01) - self.assertGreater(out(), 2) - self.s.snapSend(5, True) - self.s.snapSw = True - sleep(.01) - self.assertEqual(out(), 0) - - def test_enable_snapping(self): - self.assertEqual(self.s._adw.Get_Par(12), 0) - self.s.snapSend(-5, False) - self.s.snapSw = True - self.assertEqual(self.s._adw.Get_Par(12), 8) - # Check if it snaps - self.s.snapSend(5, False) - sleep(1e-3) - self.assertEqual(self.s._adw.Get_Par(12), 2) - # Snap when signal is higher - self.s.snapSend(-5, True) - self.s.snapSw = True - sleep(1e-3) - self.assertEqual(self.s._adw.Get_Par(12), 2) - - def test_stop_ramp_when_snapping(self): - self.s.enableRamp(50, 10, False) - self.s.snapSend(5, False) - self.s.snapSw = True - # Check if it snaps - sleep(1e-3) - # Ramp stopped? - self.assertFalse(self.s.rampEnabled) - def test_apply_old_settings(self): self.s.outputSw = True dict = self.s.getSettingsDict() - del dict['_state']['snapSw'] - self.s.snapSw = True + # del dict['_state']['snapSw'] + # self.s.snapSw = True self.s.outputSw = False self.assertFalse(self.s.outputSw) self.s.loadSettings(dict) - self.assertTrue(self.s.snapSw) + # self.assertTrue(self.s.snapSw) self.assertTrue(self.s.outputSw) def test_offset_autoset(self): @@ -622,18 +585,18 @@ class TestServo(unittest.TestCase): self.s._waitForBufferFilling() mean_corrected = self.s._readoutNewData(10000)['output'].mean() self.assertNotEqual(mean_corrected, 0) - self.assertAlmostEqual(mean_corrected, 0, places=2) + self.assertAlmostEqual(mean_corrected, 0, places=1) def test_check_control_switch_updates(self): self.assertFalse(self.s.inputSw) self.assertFalse(self.s.outputSw) self.assertFalse(self.s.offsetSw) - self.assertFalse(self.s.snapSw) + # self.assertFalse(self.s.snapSw) self.assertFalse(self.s.auxSw) self.s.inputSw = True self.s.outputSw = True self.s.offsetSw = True - self.s.snapSw = True + # self.s.snapSw = True self.s.auxSw = True self.s._state['inputSw'] = False self.assertTrue(self.s.inputSw) @@ -641,33 +604,151 @@ class TestServo(unittest.TestCase): self.assertTrue(self.s.outputSw) self.s._state['offsetSw'] = False self.assertTrue(self.s.offsetSw) - self.s._state['snapSw'] = False - self.assertTrue(self.s.snapSw) + # self.s._state['snapSw'] = False + # self.assertTrue(self.s.snapSw) self.s._state['auxSw'] = False self.assertTrue(self.s.auxSw) - def test_snapping_getters_and_setters(self): + def test_lock_getters_and_setters(self): + with self.assertRaises(TypeError): + self.s.lockThreshold = 'wrong type' + with self.assertRaises(TypeError): + self.s.lockSearchMin = 'wrong type' + with self.assertRaises(TypeError): + self.s.lockSearchMax = 'wrong type' + with self.assertRaises(ValueError): + self.s.lockSearchMin = -12 + with self.assertRaises(ValueError): + self.s.lockSearchMax = 13 + self.s.lockSearchMax = 3 + with self.assertRaises(ValueError): + self.s.lockSearchMin = 5 + self.s.lockSearchMin = 2 + with self.assertRaises(ValueError): + self.s.lockSearchMax = 0 + with self.assertRaises(TypeError): + self.s.lockGreater = 345 + with self.assertRaises(TypeError): + self.s.lockGreater = 'hello' + with self.assertRaises(TypeError): + self.s.relock = 345 + with self.assertRaises(TypeError): + self.s.relock = 'hello' + + def test_servo_autolock(self): + with self.assertRaises(TypeError): + self.s.autolock('tach') + with self.assertRaises(ValueError): + self.s.autolock(5) with self.assertRaises(TypeError): - self.s.snapSw = 'wrong type' + self.s.autolock(1, greater='bla') with self.assertRaises(TypeError): - self.s.snapSw = 345 + self.s.autolock(0, threshold='bla') with self.assertRaises(TypeError): - self.s.snapGreater = 345 + self.s.autolock(0, min='bla') with self.assertRaises(TypeError): - self.s.snapGreater = 'bla' - - # Test it reads the real values from adwin - self.s.snap = 4.7 - self.s._snap['limit'] = 'something different' - self.assertAlmostEqual(self.s.snap, 4.7, places=4) - # Different sensitivity - self.auxSensitivity = 3 - self.s.snap = .7 - self.s._snap['limit'] = 'something different' - self.assertAlmostEqual(self.s.snap, .7, places=3) - self.s.snapGreater = False - self.s._snap['greater'] = 'something different' - self.assertEqual(self.s.snapGreater, False) + self.s.autolock(0, max='bla') + + indexoffset = (self.s._channel - 1) * 5 + print(indexoffset) + self.s.autolock(1, 9, 0, 5, True, True) # setting threshold to 9 should make sure it never runs out of lock state 1 + threshold = servo._convertVolt2Int(9, self.s.auxSensitivity, True) + threshold = general.changeBit(threshold, 16, True) + min = servo._convertVolt2Int(0, self.s.auxSensitivity, True) + max = servo._convertVolt2Int(5, self.s.auxSensitivity, True) + lock = general.changeBit(1, 2, True) + # testing the lock parameters + sleep(.1) + self.assertEqual(self.s._adw.GetData_Long(settings.DATA_LOCK, 1 + indexoffset, 1)[:], [lock]) # will this work? + self.assertEqual(self.s._adw.GetData_Long(settings.DATA_LOCK, 2 + indexoffset, 3)[:], [threshold, min, max]) + + def test_lock_search_state(self): + # set autolock to value that cant be reached, so lock continues looping + + # lock greater + self.s.autolock(1, 8, -1, 1, True, False) + # switches need to be off for output and Input + sleep(.1) + self.assertFalse(self.s.inputSw) + self.assertFalse(self.s.outputSw) + # check lock state, should be `1` + indexoffset = (self.s._channel - 1) * 5 + lock = self.s._adw.GetData_Long(settings.DATA_LOCK, 1 + indexoffset, 1)[0] + lock = (lock & 0x3) + self.assertEqual(lock, 1) + + # lock smaller + self.s.autolock(1, -9, -1, 1, False, True) + sleep(.1) + self.assertFalse(self.s.inputSw) + self.assertFalse(self.s.outputSw) + # check lock state, should be `1` + lock = self.s._adw.GetData_Long(settings.DATA_LOCK, 1 + indexoffset, 1)[0] + lock = (lock & 0x3) + self.assertEqual(lock, 1) + + def test_lock_found_state(self): + # set autolock to value that will always be reached, so lock gets activated + + # lock greater + self.s.autolock(1, -9, -1, 1, True, False) + sleep(.4) + # state should be `2` + # input/output should be enabled + self.assertTrue(self.s.inputSw) + self.assertTrue(self.s.outputSw) + indexoffset = (self.s._channel - 1) * 5 + lock = self.s._adw.GetData_Long(settings.DATA_LOCK, 1 + indexoffset, 1)[0] + lock = (lock & 0x3) + self.assertEqual(lock, 2) + + # lock smaller + self.s.autolock(1, 9, -1, 1, False, False) + sleep(.3) + self.assertTrue(self.s.inputSw) + self.assertTrue(self.s.outputSw) + # check lock state, should be `2` + lock = self.s._adw.GetData_Long(settings.DATA_LOCK, 1 + indexoffset, 1)[0] + lock = (lock & 0x3) + self.assertEqual(lock, 2) + + def test_lock_off_state(self): + self.s.inputSw = True + self.s.outputSw = True + self.s.autolock(0) + sleep(.1) + self.assertTrue(self.s.inputSw) + self.assertTrue(self.s.outputSw) + # check lock state + indexoffset = (self.s._channel - 1) * 5 + lock = self.s._adw.GetData_Long(settings.DATA_LOCK, 1 + indexoffset, 1)[0] + lock = (lock & 0x3) + self.assertEqual(lock, 0) + + def test_lock_disables_ramp(self): + self.s.enableRamp() + self.s.autolock(1) + sleep(1e-3) + self.assertFalse(self.s.rampEnabled) + + def test_lock_disables_output_input(self): + def out(): + return self.s._readoutNewData(10000)['output'].iloc[-1] + + self.s.enableFifo() + self.assertEqual(out(), 0) + self.s.offset = 5 + self.s.offsetSw = True + self.s.inputSw = True + self.s.outputSw = True + sleep(.01) + self.assertGreater(out(), 2) + self.s.autolock(1, 9, 1, 2, True, False) + sleep(.01) + self.assertFalse(self.s.inputSw) + self.assertFalse(self.s.outputSw) + self.assertLessEqual(out(), 2) + self.assertGreaterEqual(out(), 1) class TestServoDevice(unittest.TestCase): @@ -750,6 +831,7 @@ class TestServoDevice(unittest.TestCase): def test_servo_names(self): settings.DEVICES_LIST = [0] + settings.NUMBER_OF_SERVOS = 3 settings.SERVO_NAMES[0] = { 1: 'Cavity', 2: 'Testing', -- GitLab