v4orb2.wiki

описание пикапов и диссектора ВЭПП3-4
git clone https://star.inp.nsk.su/~bekhte/v4orb2.wiki.git
Log | Files | Refs

dissector-pv-list.md (17953B)


      1 Title:   Описание PV
      2 
      3 [TOP](index)
      4 
      5 {{TOC}}
      6 
      7 # Обозначение
      8 
      9 Как описано в [обзоре](obzor#Схеманаименованияpv) название PV имеет иерархию **УСТАНОВКА:СИСТЕМА:значение-СУФФИКС**.
     10 Для одного IOC часть имени **УСТАНОВКА:СИСТЕМА** Обычно одинакова и задается чарез переменные окружения $(P).
     11 В описании используется похожий синтаксис. В тексте сокращенно на переменную ссылаются как на **значение**.
     12 
     13 Макрос $(P) для диссектора раскрывается как
     14 
     15 - **VEPP4:dissector_e:** - для электронов
     16 - **VEPP4:dissector_p:** - для позитронов
     17 - **VEPP3:dissector_v3:** - для VEPP3
     18 
     19 Для мод параметры имеют вид **$(P)параметр_мода-Суф**.
     20 
     21 Для результата имеют вид **$(P)мода_результат-Суф**.
     22 
     23 Автоподстройки имеют вид 
     24 
     25 - **auto_*** для периодической автоподстройки
     26 - **auto1_*** для однократной автоподстройки
     27 
     28 # Описание PV
     29 
     30 Ток вертикальная шкала вычисляется по формуле
     31 
     32 
     33     I = (U - U0) * pow10( step_gain * gain / 20) * GI
     34 
     35 где [U0](#u0), [step_gain](#step_gain), [gain](#gain), [GI](#gi).
     36 
     37 
     38 
     39 ## Общие настройки
     40 
     41 <a name="connect"></a>	$(P)**connect**-Cmd  
     42 :   производить подключение
     43 
     44 <a name="connected"></a>	$(P)**connected**-Sts  
     45 :   статус подключения
     46 
     47 <a name="host"></a>	$(P)**host**-SP  
     48 :   IP адрес пикапстанции, диапазон адресов 192.168.1.150-152
     49 
     50 <a name="port"></a>	$(P)**port**-SP  
     51 :   порт подключения, по умолчанию 2195
     52 
     53 <a name="error"></a>	$(P)**error**-SP  
     54 :   счетчик ошибок, при ошибке инкрементируется
     55 
     56 ## Коэффициент усиления
     57 
     58 <a name="gain"></a> $(P)**gain**-SP  
     59 :   усиление код
     60 
     61 <a name="step_gain"></a> $(P)**step_gain**-SP  
     62 :   вес шага усиления (10дБ)
     63 
     64 <a name="auto_gain"></a> $(P)**auto_gain**-Cmd  
     65 :   автоматическая подстройка усиления(пока не работает)
     66 
     67 <a name="scan_gain"></a> $(P)**scan_gain**-Cmd  
     68 :   зарезервированно
     69 
     70 <a name="level_nosig_gain"></a> $(P)**level_nosig_gain**-SP  
     71 :   если сигнал меньше указанного уровня, усиление ставится в [default_gain](#default_gain)
     72 
     73 <a name="tau_gain"></a> $(P)**tau_gain**-SP  
     74 :   зарезервированно
     75 
     76 <a name="lim_gain"></a> $(P)**lim_gain**-SP  
     77 :   зарезервированно
     78 
     79 <a name="default_gain"></a> $(P)**default_gain**-SP  
     80 :   усиление при отсутствии сигнала
     81 
     82 <a name="min_gain"></a> $(P)**min_gain**-SP  
     83 :   минимальное усиление 0
     84 
     85 <a name="max_gain"></a> $(P)**max_gain**-SP  
     86 :   максимальное усиление 1
     87 
     88 
     89 ## Банчи
     90 
     91 <a name="bunch1"></a> $(P)**bunch1**-SP  
     92 <a name="bunch2"></a> $(P)**bunch2**-SP  
     93 <a name="bunch3"></a> $(P)**bunch3**-SP  
     94 <a name="bunch4"></a> $(P)**bunch4**-SP  
     95 :   разрешить измерение соответствующего банча
     96 
     97 <a name="sep0"></a> $(P)**sep0**-SP  
     98 :   смещение нумерации сепаратрис
     99 
    100 <a name="sep1"></a> $(P)**sep1**-SP  
    101 <a name="sep2"></a> $(P)**sep2**-SP  
    102 <a name="sep3"></a> $(P)**sep3**-SP  
    103 <a name="sep4"></a> $(P)**sep4**-SP  
    104 :   номер сепаратрисы для соответствующего банча
    105 
    106 <a name="fine1"></a> $(P)**fine1**-SP  
    107 <a name="fine2"></a> $(P)**fine2**-SP  
    108 <a name="fine3"></a> $(P)**fine3**-SP  
    109 <a name="fine4"></a> $(P)**fine4**-SP  
    110 :   задержка в пределах сепаратрисы
    111 
    112 <a name="extr1"></a> $(P)**extr1**-SP  
    113 <a name="extr2"></a> $(P)**extr2**-SP  
    114 <a name="extr3"></a> $(P)**extr3**-SP  
    115 <a name="extr4"></a> $(P)**extr4**-SP  
    116 :   знак максимума, 0 - любой
    117 
    118 <a name="auto_sep"></a> $(P)**auto_sep**-SP  
    119 <a name="auto1_sep"></a> $(P)**auto1_sep**-SP  
    120 :   автоподстройка сепаратрисы, про результатам сканирования [scan2d_i](#scan2d_i) в
    121 диапазоне +-2 сепартрисы относительно текущего значения вычисляется амплитуда
    122 сигнала и номер сепаратрисы настраивается на максимум, при условии что сигнал превышает [level_nosig_gain](#level_nosig_gain).
    123 Если [extr](#extr1) больше нуля считаются значения сигнала больше нуля, если меньше - меньше, если равно - по модулю.
    124 
    125 ## Шкала
    126 
    127 <a name="gi"></a> $(P)**GI**-SP  
    128 :   множитель тока
    129 
    130 <a name="x1"></a> $(P)**X1**-SP  
    131 :   левая граница шкалы профиля
    132 
    133 <a name="x2"></a> $(P)**X2**-SP  
    134 :   правая граница шкалы профиля
    135 
    136 <a name="u0"></a> $(P)**U0**-SP  
    137 :   смещение нуля
    138 
    139 <a name="gi0"></a> $(P)**GI0**-SP  
    140 :   зарезервированно
    141 
    142 <a name="gi1"></a> $(P)**GI1**-SP  
    143 :   зарезервированно
    144 
    145 
    146 ## Моды
    147 
    148 Соответствующий тип измерения называется модой. Основным типом измерений
    149 является профиль **mode_prof**. Также есть дополнительные виды измерения.
    150 Пооборотные измерения **turns** и сканирование профиля по сепаратрисам **scanprof**.
    151 Измерение производится если его проведенеие разрешено **mode_*** и заказано однократное
    152 ***_do** или периодическое измерение ***_cont**.
    153 
    154 С целью экономии ресурсов измерение **turnslong** с размером буфера до 1М, производится
    155 если разрешены **mode_turns**, **mode_turnslong** и количество заказанных оборотов **ne_turns**
    156 больше 16384. При этом первые 16384 оборота копируются в результат **mode_turns**.
    157 
    158 <a name="mode"></a> $(P)**mode**-I  
    159 :   текущее состояние измерения
    160 
    161 <a name="mode_turns"></a> $(P)**mode_turns**-Cmd  
    162 :   разрешение пооборотных измерений
    163 
    164 <a name="mode_turnslong"></a> $(P)**mode_turnslong**-Cmd  
    165 :   разрешение пооборотных измерений до миллиона точек
    166 
    167 <a name="mode_scan"></a> $(P)**mode_scan**-Cmd  
    168 :   зарезервированно
    169 
    170 <a name="mode_scanprof"></a> $(P)**mode_scanprof**-Cmd  
    171 :   сканирование для подстройки сепаратрис
    172 
    173 <a name="mode_prof"></a> $(P)**mode_prof**-Cmd  
    174 :   измерение профиля
    175 
    176 
    177 ## Общие для всех мод
    178 
    179 <a name="ndel0"></a> $(P)**ndel0**-SP  
    180 :   задержка между ВЧ и частоты оборотов
    181 
    182 <a name="gap"></a> $(P)**gap**-SP  
    183 :   прореживание
    184 
    185 
    186 ## Настройки профиля[opt_prof]
    187 
    188 <a name="prof_do"></a> $(P)**prof_do**-SP  
    189 :   провести однократное измерение профиля
    190 
    191 <a name="prof_cont"></a> $(P)**prof_cont**-SP  
    192 :   проводить периодические измерения профиля
    193 
    194 <a name="ne_prof"></a> $(P)**ne_prof**-SP  
    195 :   количество оборотов элементарного измерения, кратно 4 (по соображениям упрощения прошивки)
    196 
    197 <a name="n_prof"></a> $(P)**n_prof**-SP  
    198 :   количество точек профиля
    199 
    200 <a name="naver_prof"></a> $(P)**naver_prof**-SP  
    201 :   усрелнение по формуле U[i] = U[i-1] * (1 - 1/naver) + U * 1/naver
    202 
    203 <a name="tdel_prof"></a> $(P)**tdel_prof**-SP  
    204 :   задержка старта следуюжего измерения для банча NONE
    205 
    206 <a name="ext_ramp_prof"></a> $(P)**ext_ramp_prof**-Cmd  
    207 :   при старте ждать импульса 50 Гц
    208 
    209 <a name="ext_start_prof"></a> $(P)**ext_start_prof**-Cmd  
    210 :   при старте ждать импульса на входе старт
    211 
    212 <a name="timeout_prof"></a> $(P)**timeout_prof**-SP  
    213 :   тайм аут операци в моде prof, мсек
    214 
    215 Полное время измерения (ne_prof + 4) * n_prof оборотов, например для
    216 
    217 ```
    218 ne_prof = 24
    219 n_prof  = 512
    220 (24 + 4) * 512 = 7/8 * 16384
    221 ```
    222 
    223 время сканирования составит 17.5 мсек (считая что 16384 оборота 20 мсек)
    224 
    225 ## Результат измерения профиля[prof]
    226 
    227 <a name="ready_prof"></a> $(P)**ready_prof**-I  
    228 :   триггер готовности, всегда обновляется последним
    229 
    230 <a name="prof_i1"></a> $(P)**prof_i1**-I  
    231 <a name="prof_i2"></a> $(P)**prof_i2**-I  
    232 <a name="prof_i3"></a> $(P)**prof_i3**-I  
    233 <a name="prof_i4"></a> $(P)**prof_i4**-I  
    234 :   профиль для банчей
    235 
    236 <a name="prof_axis"></a> $(P)**prof_axis**-I  
    237 :   горизонтальная ось профиля [X1](#x1) - [X2](#x2)
    238 
    239 <a name="prof_time"></a> $(P)**prof_time**-I  
    240 :   время измерения профиля, сек
    241 
    242 
    243 ## Настройки сканирования[opt_scan]
    244 
    245 Сдующие парамеры берутся из [**prof**](#opt_prof)
    246 
    247 - [ne_prof](#ne_prof)
    248 - [n_prof](#n_prof)
    249 - [naver_prof](#naver_prof)
    250 - [ext_ramp_prof](#ext_ramp_prof)
    251 - [ext_start_prof](#ext_start_prof)
    252 - [timeout_prof](#timeout_prof)
    253 
    254 <a name="scan_do"></a> $(P)**scan_do**-SP  
    255 :   провести однократное сканирование
    256 
    257 <a name="scan_cont"></a> $(P)**scan_cont**-SP  
    258 :   проводить периодические сканирование каждые [per_scan](#per_scan)
    259 
    260 <a name="per_scan"></a> $(P)**per_scan**-SP  
    261 :   проводить сканирование через сек
    262 
    263 <a name="refresh_scan"></a> $(P)**refresh_scan**-SP  
    264 :   обновлять результат сканирования через сек
    265 
    266 <a name="timeout_scan"></a> $(P)**timeout_scan**-SP  
    267 :   время затраченно на сканирование, мсек
    268 
    269 
    270 ## Результат сканирования[scan]
    271 
    272 <a name="ready_scan"></a> $(P)**ready_scan**-I  
    273 :   триггер окончанич сканирования
    274 
    275 <a name="scan2d_i"></a> $(P)**scan2d_i**-I  
    276 :   результат сканирования 2D массив размерностью 222 * [n_prof](#n_prof), контурный график
    277 
    278 <a name="scan2d_height "></a> $(P)**scan2d_height**-I  
    279 :   высота контурного графика
    280 
    281 <a name="scan2d_width  "></a> $(P)**scan2d_width**-I  
    282 :   ширина контурного графика
    283 
    284 <a name="scan2d_i_min  "></a> $(P)**scan2d_i_min**-I  
    285 :   минимальное значение контурного графика по вертикали( по сепаратрисам)
    286 
    287 <a name="scan2d_i_max  "></a> $(P)**scan2d_i_max**-I  
    288 :   максимальное значение контурного графика по вертикали( по сепаратрисам)
    289 
    290 <a name="scan2d_min    "></a> $(P)**scan2d_min**-I  
    291 <a name="scan2d_max    "></a> $(P)**scan2d_max**-I  
    292 :   минимальное и максимальное значение контурного графика, по модулю равны
    293 
    294 <a name="scan_time"></a> $(P)**scan_time**-I  
    295 :   время затраченное на сканирование, сек
    296 
    297 
    298 ## Настройки пооборотных[opt_turns]
    299 
    300 <a name="turns_do"></a> $(P)**turns_do**-SP  
    301 :   провести однократное пооборотное измерение
    302 
    303 <a name="turns_cont"></a> $(P)**turns_cont**-SP  
    304 :   проводить периодическое пооборотное измерение
    305 
    306 <a name="bunch_turns"></a> $(P)**bunch_turns**-SP  
    307 :   для какого сгустка проводить пооборотные измерения
    308 
    309 <a name="ne_turns"></a> $(P)**ne_turns**-SP  
    310 :   количество оборотов пооборотного измерения, если меньше 16384 заполняется только результат [turns_i](#turns_i), если
    311 больше то и [turnslong_i](#turnslong_i)
    312 
    313 <a name="ext_ramp_turns"></a> $(P)**ext_ramp_turns**-Cmd  
    314 :   запуск 50 Гц
    315 
    316 <a name="ext_start_turns"></a> $(P)**ext_start_turns**-Cmd  
    317 :   запуск от старт
    318 
    319 <a name="per_turns"></a> $(P)**per_turns**-SP  
    320 :   периодичность проведение пооборотных измерений, сек
    321 
    322 <a name="timeout_turns"></a> $(P)**timeout_turns**-SP  
    323 :   таймаут, мсек
    324 
    325 
    326 ## Результат пооборотных измерений[turns]
    327 
    328 CSS может показывать только 128к оборотов, тем не менее в Edit->Prefernce->CSS Core->EPICS->max_array_bytes 
    329 надо прописать обьем достаточный для приема 1М точек: 4200000.
    330 
    331 <a name="ready_turns"></a> $(P)**ready_turns**-I  
    332 :   триггер окончания пооборотных измерений
    333 
    334 <a name="turns_i"></a> $(P)**turns_i**-I  
    335 :   ток пооборотных измерений
    336 
    337 <a name="turns_axis"></a> $(P)**turns_axis**-I  
    338 :   горизонтальная ось обороты
    339 
    340 <a name="turnslong_i"></a> $(P)**turnslong_i**-I  
    341 :   ток пооборотных измерений до 1М
    342 
    343 <a name="turnslong_axis"></a> $(P)**turnslong_axis**-I  
    344 :   горизонтальная ось обороты до 1М
    345 
    346 <a name="turns_time"></a> $(P)**turns_time**-I  
    347 :   время потраченное на проведение измерения, сек
    348 
    349 ## Внутренние параметры
    350 
    351 <a name="prof_i"></a> $(P)**prof_i**-I  
    352 :   необработанный профиль для банча NONE
    353 
    354 <a name="fine"></a> $(P)**fine**-SP  
    355 :   задержка в пределах сепаратрисы
    356 
    357 <a name="sep"></a> $(P)**sep**-SP  
    358 :   номер сепаратрисы
    359 
    360 
    361 # FFT
    362 
    363 Спектр вычисляется для каждого банча 
    364 
    365 * **turns_i1**
    366 * **turns_i2**
    367 * **turns_i3**
    368 * **turns_i4**
    369 
    370 для краткости параметры приведены только для первого банча **turns_i1**,
    371 для остальных банчей аналогично.
    372 
    373 ## Параметры FFT
    374 
    375 <a name="pre_filter"></a> $(P)**turns_i1:pre_filter**-SP  
    376 <a name="pre_delta"></a>  $(P)**turns_i1:pre_delta**-SP  
    377 :   зарезервировано
    378 
    379 <a name="wnd"></a>    $(P)**turns_i1:wnd**-SP  
    380 <a name="arg1"></a>   $(P)**turns_i1:arg1**-SP  
    381 <a name="arg2"></a>   $(P)**turns_i1:arg2**-SP  
    382 <a name="subwnd"></a> $(P)**turns_i1:subwnd**-SP  
    383 <a name="mtbwnd"></a> $(P)**turns_i1:mtbwnd**-SP  
    384 :   настройка окна, wnd - форма окна, arg1,arg2 - параметры окна, subwnd - вычитать среднее окна, mtbwnd - нормировать на площадь окна
    385 
    386 ## Результат FFT
    387 
    388 <a name="turns_timestep"></a> $(P)**turns_timestep**-I
    389 :   шаг по времени пооборотных измерений, зависит от [gap](#gap) и VEPP4:FrequencySet-RB.
    390 В **turns_timestep-I.C** можно записать множитель шага, данное значени не сохраняется при перезагрузке IOC
    391 
    392 
    393 <a name="FFT_turns_axis"></a> $(P)**FFT:turns_axis**-I
    394 :   ось частоты, зависит от [turns_timestep](#turns_timestep)
    395 
    396 <a name="FFT_turns_i1"></a> $(P)**FFT:turns_i1:turns_i1**-I  
    397 <a name="FFT_turns_i2"></a> $(P)**FFT:turns_i2:turns_i2**-I  
    398 <a name="FFT_turns_i3"></a> $(P)**FFT:turns_i3:turns_i3**-I  
    399 <a name="FFT_turns_i4"></a> $(P)**FFT:turns_i4:turns_i4**-I  
    400 :   спектр пооборотных измерений, для соответствующего банча
    401 
    402 <a name="FFT_turns_i1_window"></a> $(P)**FFT:turns_i1:window:turns_i1**-I  
    403 <a name="FFT_turns_i2_window"></a> $(P)**FFT:turns_i2:window:turns_i2**-I  
    404 <a name="FFT_turns_i3_window"></a> $(P)**FFT:turns_i3:window:turns_i3**-I  
    405 <a name="FFT_turns_i4_window"></a> $(P)**FFT:turns_i4:window:turns_i4**-I  
    406 :   применённое окно
    407 
    408 
    409 --------------------------------------------------------
    410 
    411 ========================================================
    412 
    413 Не используется
    414 
    415 <a name="finestep_scan"></a> $(P)**finestep_scan**-SP  
    416 :   зарезервированно
    417 
    418 <a name="finecount_scan"></a> $(P)**finecount_scan**-SP  
    419 :   зарезервированно
    420 
    421 <a name="sep_beg_scan"></a> $(P)**sep_beg_scan**-SP  
    422 :   зарезервированно
    423 
    424 <a name="sep_end_scan"></a> $(P)**sep_end_scan**-SP  
    425 :   зарезервированно
    426 
    427 <a name="sep_step_scan"></a> $(P)**sep_step_scan**-SP  
    428 :   зарезервированно
    429 
    430 <a name="sep_range_scan"></a> $(P)**sep_range_scan**-SP  
    431 :   зарезервированно
    432 
    433 <a name="delayramp_scan"></a> $(P)**delayramp_scan**-SP  
    434 :   зарезервированно
    435 
    436 <a name="ne_scan"></a> $(P)**ne_scan**-SP  
    437 :   количество оборотов элементарного измерения
    438 
    439 <a name="scan_axis"></a> $(P)**scan_axis**-I  
    440 :   горизонтальная ось сканирования
    441 
    442 <a name="delayramp_turns"></a> $(P)**delayramp_turns**-SP  
    443 :   зарезервированно
    444