Title: Описание PV CSS: table.css [TOP](index) [[_TOC_]] # Обозначение Как описано в [обзоре](obzor#Схеманаименованияpv) название PV имеет иерархию **УСТАНОВКА:СИСТЕМА:значение-СУФФИКС**. Для одного IOC часть имени **УСТАНОВКА:СИСТЕМА** Обычно одинакова и задается чарез переменные окружения, в описании используется похожий синтаксис. В тексте сокращенно на переменную ссылаются как на **значение**. # Описание PV ## Описание PV stap IOC[stap-IOC] IOC отвечает за импорт данных из stap файла VEPP4:heart_ : периодическое событие, возбуждается 1 раз в секунду, пикапстанции по этому событию начинают измерение равновесной орбиты VEPP4:stap_dat-I : инкрементируется при каждом чтении stap файла VEPP4:ch_elpo-I VEPP4:ch_ready-I VEPP4:ch_status-I VEPP4:ch_status_prev-I VEPP4:ch_v3_sepa-I VEPP4:isok-I VEPP4:perepusk-I VEPP4:v3_1_current-I VEPP4:v3_2_current-I VEPP4:v4_bunc_udar-I VEPP4:v4_current-I VEPP4:v4_inj_permitted-I VEPP4:v4_sep_injection-I : значения из stap файла, смотри описание файла VEPP4:turns_bunch-Sts VEPP4:turns_kick-Sts VEPP4:turns_do-I : основываясь на значениях stap файла IOC определяет команду для проведения пооборотных измерений bunch - банч, kick - причина измерения, do - сигнал на проведение измерения ## Описание PV pstation IOC[pstation-ioc] Макрос $(P) для пикапстанции раскрывается как **VEPP4:ИМЯ_ПИКАПА:**. ### Управление ioc[pstation-control] $(P)HW:Host-SP : IP адрес пикапстанции, диапазон адресов 192.168.1.20-90 $(P)HW:Port-SP : порт подключения, по умолчанию 2195 $(P)connect-Cmd : производить подключение $(P)connected-Sts : статус подключения $(P)delay_hf-SP : задержка между опорной частотой 180 МГц и пооборотной частотой 800 кГц. выбирается из соображений отсутствия дрожжания счетчика сепаратрис. Дрожжание приводит в прыжкам +-1 сепаратриса,и в результаттах измерений видны провалы. $(P)Error-SP : счетчик ошибок, при любой ошибке обмена, истечении таймаута и прочих ошибках счетчик инкрементируется, причину ошибки можно посмотреть в консоли IOC. $(P)Heart-SP : результат отслеживания периодического события, должно меняться одновременно с VEPP4:heart_ ### Режимы работы режим измерения, мода измерения - синонимы. [Подробнее по режимы](internal#Режимыработыpstationiocvepp4) $(P)mode_single-Cmd : разрешение измерения равновесной орбиты $(P)mode_fine-Cmd : разрешение режима тонкого сканирования $(P)mode_sep-Cmd : разрешения сканирования по току сепаратрис $(P)mode_turns-Cmd : разрешение проведения пооборотных измерений, команда на проведение [смотри ниже](#turns). $(P)mode_fast-Cmd : разрешение проведения уточненного сканирования по току сепаратрис, в отличие от mode_sep, измеряется 16 точек на сепаратрису $(P)mode_lowfreq-Cmd : разрешение измерения чизкочастотных колебаний пучка $(P)mode-I : текущая мода измерения ### Автоматические подстройки auto – автоматическая подстройка, auto1 – однократная подстройка $(P)fine_auto1-Cmd $(P)fine_auto-Cmd : подстройка тонкой задержки [fine_e](#fine_e), [fine_p](#fine_p) $(P)fine_max-SP $(P)fine_min-SP : пределы подстройки общей тонкой задержки [fine_e](#fine_e), [fine_p](#fine_p), должнобыть 100, 400 $(P)fine_bunch_auto1-Cmd $(P)fine_bunch_auto-Cmd : подстройка тонкой задержки для каждого банча: [e1_fine](#e1_fine), [e2_fine](#e2_fine), [p1_fine](#p1_fine), [p2_fine](#p2_fine). $(P)delay_button_auto1-Cmd $(P)delay_button_auto-Cmd : подстройка индивидуальной задержки электрода [delay_button](#delay_button0) $(P)delay_button_e_auto1-Cmd $(P)delay_button_e_auto-Cmd : подстройка индивидуальной задержки электрода для электронов [delay_button_e](#delay_button0_e) $(P)delay_button_p_auto1-Cmd $(P)delay_button_p_auto-Cmd : подстройка индивидуальной задержки электрода для позитронов [delay_button_p](#delay_button0_p) $(P)gain_auto-Cmd : подстройка коэффициента усиления [gain](#gain) $(P)scan_fast_auto1-Cmd $(P)scan_fast_auto-Cmd : зарезервированно, должно выть выключенно $(P)u0_button_auto1-Cmd $(P)u0_button_auto-Cmd : подстройка смещения нуля [u0_button](#u0_button0) ### тонкая задержка для электродов АЦП на каждом входе пикапстанции имеет индивидуальную регулировку задержки, для того чтобы скомпенсировать длинну входных кабелей и неравенство внутренних задержек блока. Полная задердка находится как сумма общей и индивудуальной для типа частиц. $(P)delay_button0-SP $(P)delay_button1-SP $(P)delay_button2-SP $(P)delay_button3-SP : индивидуальная задержка для канала АЦП $(P)delay_button0_e-SP $(P)delay_button1_e-SP $(P)delay_button2_e-SP $(P)delay_button3_e-SP : добавочная индивидуальная задержка для входа для электронов $(P)delay_button0_p-SP $(P)delay_button1_p-SP $(P)delay_button2_p-SP $(P)delay_button3_p-SP : добавочная индивидуальная задержка для входа для позитронов на сколько надо изменить тонкую задержку чтобы попасть на экстремум. $(P)delay_button0_desired-I $(P)delay_button1_desired-I $(P)delay_button2_desired-I $(P)delay_button3_desired-I : ожидаемая задержка для входа $(P)delay_button0_e_desired-I $(P)delay_button1_e_desired-I $(P)delay_button2_e_desired-I $(P)delay_button3_e_desired-I : индивидуальная ожидаемая задержка для входа для электронов $(P)delay_button0_p_desired-I $(P)delay_button1_p_desired-I $(P)delay_button2_p_desired-I $(P)delay_button3_p_desired-I : индивидуальная ожидаемая задержка для входа для позитронов ### масштабные коэффициенты для кнопок $(P)g0_button0-SP $(P)g0_button1-SP $(P)g0_button2-SP $(P)g0_button3-SP $(P)g1_button0-SP $(P)g1_button1-SP $(P)g1_button2-SP $(P)g1_button3-SP : корректирующий множитель напряжения для кнопки при коэффициенте усиления 0 ### Смещение нуля В качестве исходных данных вычисления смещения нуля берется результат тонкого сканирования [фине](#B_scan_fine_U0). Для каждой кнопки вычисляется среднее и среднеквадратичная амплитуда. Среднее записывается о ожидаемое [*desired*](#u0_button0_desired), среднеквадратичное в [*sigma*](#u0_button0_sigma). Если [*sigma*](#u0_button0_sigma) всех кнопок меньше порогового [*u0_button_sigma*](#u0_button_sigma), считается что пучка нет. И если это разрешено [*u0_button_auto*](#u0_button_auto) смещение сохраняется в [*u0_button*](#u0_button0). $(P)u0_button0-SP $(P)u0_button1-SP $(P)u0_button2-SP $(P)u0_button3-SP : смещение нуля кнопки $(P)u0_button0_desired-I $(P)u0_button1_desired-I $(P)u0_button2_desired-I $(P)u0_button3_desired-I : ожидаемое смещение нуля $(P)u0_button0_sigma-I $(P)u0_button1_sigma-I $(P)u0_button2_sigma-I $(P)u0_button3_sigma-I : среднеквадратичная амплитуда $(P)u0_button_sigma-SP : предельная среднеквадратичная амплитуда ### Настройки измерений Номер сепаратрисы банча вычисляется как сумма смещения [sep0](#sep0) и индивидуального номера сепаратрисы банча [e1 e2 p1 p2_sep](#B_sep). $(P)sep0-SP : смещение номера сепаратрисы, Тонкая задержка вычисляется как сумма тонкой задержки по типу частиц [fine_e](#fine_e) [fine_p](#fine_p) и индивидуальной задержки банча [e1 e2 p1 p2_fine](#B_fine). $(P)fine_e-SP : тонкая задержка для частиц типа e $(P)fine_p-SP : тонкая задержка для частиц типа p $(P)fine_e_desired-I : смещение до экстремума для типа частиц $(P)fine_p_desired-I : смещение до экстремума для типа частиц $(P)gain-SP : код усиления ### Настройки измерений в моде SINGLE #### Настройки банча макрос B – одно из e1, e2, p1, p2 $(P)\$(B)_bunch-Cmd : разрешение измерения банча $(P)\$(B)_extr-SP : тип экстеремума: 1 – максимум -1 - минимум $(P)\$(B)_sep-SP : номер сепаратрисы $(P)\$(B)_fine-SP : тонкая задержка $(P)\$(B)\_fine_desired-I : контроль подстройки #### Общие для всех банчей $(P)nturns_single-SP : длительность измерения в режиме single, в оборотах $(P)gap_single-SP : 0 $(P)np_adc_read_single-SP : 0 $(P)step_single-SP : шаг сканирования в режиме single ### Настройки измерений в моде FINE $(P)step_fine-SP : шаг сканирования в режиме fine $(P)nturns_fine-SP : длительность измерения в режиме fine, в оборотах $(P)gap_fine-SP : 0 $(P)np_adc_read_fine-SP : 0 $(P)fine_auto_min-SP : предел в кодах ниже которого не выполняется подстройка задержки ### Настройки измерений в моде SEP $(P)nturns_sep-SP : длительность измерения в режиме sep, в оборотах $(P)np_adc_read_sep-SP : $(P)gap_sep-SP : ### Настройки измерений в моде TURNS[turns] $(P)turns_bunch-SP : банч для которого производятся пооборотные измерения $(P)turns_do-SP : запись не 0 производит пооборотные измерения, по окончании измерения сбрасывается в 0 $(P)turns_process-I : фактичкское состояние процесса пооборотных измерений $(P)turns_kick-SP : причина измерений INJ, UDAR, SOFT $(P)turns_e_start0-SP $(P)turns_p_start0-SP : количество оборотов в начале измерения координаты которых зануляются, скрывается шум в отсутствие пучка, для электронов и позитронов $(P)turns_timeout-SP : таймаут пооборотных измерений $(P)nturns_turns-SP : длительность пооборотных измерений в оборотах, авоматически увеличивается, должно быть по крайней мере 2 в степени np_adc умножить на gap+1 $(P)np_adc_read_turns-SP : размер массива пооборотных измерений, 2 в соответствующей степени, 0 – 1024, 1 – 2048, 2 – 4096, 3 – 8192. $(P)gap_turns-SP : прореживание, измерение производится для каждого gap+1 оборота, при gap равном нулю на каждом обороте ![Временная диаграмма смены значений PV при успешных пооборотных измерениях.](turns-success.png) где: * t1 - завершение предидущего измерения, типично 1 - 20 мсек * t2 - ожидание прихода импульса запуска, от 0 до [turns_timeout-SP](#turns_timeout) * t3 - измерение от 1 мсек до 0.3 сек плюс чтение от 0.1 до 1.5 сек в зависимости от [прореживания](#gap_turns) и [размера массива](#np_adc_read_turns) плюс повторное чтение в случае ошибки до 5 секунд в худшем случае. * t4 - обновление PV, типично 1 мсек ![Временная диаграмма смены значений PV при не успешных пооборотных измерениях.](turns-fail.png) где: * t1 - завершение предидущего измерения, типично 1 - 20 мсек * t2 - ожидание прихода импульса запуска, от 0 до [turns_timeout-SP](#turns_timeout) плюс, в наихудшем худшем случае, время измерения и три повторных неудачных чтения в сумме до 7 сек. * t4 - обновление PV, типично 1 мсек ### Настройки измерений в моде FAST Сканирование по всем сапаратрисам, 16 точек на сепартрису. Сканируется с тонкой задержкой для электронов, поэтому для позитронов сигналы с пластин для пикапов семества [NS]RP* расползаются. $(P)nturns_fast-SP : 800 - 1 мс $(P)gap_fast-SP : 0 $(P)np_adc_read_fast-SP : 0 $(P)scan_fast_mult-SP : множитель компенсации нелинейности задержки, номинально в диапазоне 32-34 $(P)\$(B)\_scan_fast_base-SP : зарезервированно ### Настройки измерений в моде TIMEBACK ### Параметры пикапа $(P)g0_gI-SP : множитель тока при коде коэффициента усиления 0 $(P)g1_gI-SP : множитель тока при коде коэффициента усиления 1 $(P)GI-SP : множитель по току $(P)GX-SP : геометрический множитель по горизонтальной координате $(P)GZ-SP : геометрический множитель по вертикальной координате $(P)X0-SP : смещение нуля по горизонтали $(P)Z0-SP : смещенеи нуля по вертикали ### Произвольное преобразование координат IOC посзволяет применять произвольное преобразование координат к пикапу с помощью полиномов до 3-го порядка. С помощью этого преобразования можно исправлять нелинейность передаточной характеристики пикапа, вращать или отражать координаты $(P)poly_x_e-SP : полином для преобразования горизонтальной координаты для электронов $(P)poly_z_e-SP : полином для преобразования веритикальной координаты для электронов $(P)poly_x_p-SP : полином для преобразования горизонтальной координаты для позитронов $(P)poly_z_p-SP : полином для преобразования вертикальной координаты для позитронов Порядок вычислений в начале производися предварительное вычисление координат по формуле для вертикальногоризонтального или диагонального расположения электродов, после умножения на GX, GZ получаем предварительные координаты x и z. Из них формруем вертораргумент Vxz = (1, x, z, x\*x, x\*z, z\*z, x\*\*3, x\*\*2\*z, x\*z\*\*2, z\*\*3) затем скалярно умножаем на соответствующий полином и получаем скорректированную координату, после этого к координате применяются постоянные смещения связанные со смежением нуля пикапа (X0, Z0) и геодезические смещения (GeodX0, GeodZ0) На вход принимаются полиномы -1, 0, 1, 2, и 3-го порядков(длинна массива 0, 1, 3, 6, 10 элементов), если порядки полиномов не совпадают или длины не правильные, преобразование не производится. Примеры: Тривиальное преобразование ``` poly_x = 0 1 0 poly_z = 0 0 1 ``` Отражение координат, вращение на 180 градусов ``` poly_x = 0 -1 0 poly_z = 0 0 -1 ``` Обмен координат, отражение по диагонали ``` poly_x = 0 0 1 poly_z = 0 1 0 ``` Поворот координат на угол a ``` poly_x = 0 cos(a) -sin(a) poly_z = 0 sin(a) cos(a) ``` ## Результаты измерений сигналы готовности, инкрементирующийся счетчик, соответствующего режима измерений. Задумывалось что он будет последним в обновлении данных соответствующего типа измерений, и когда он меняется все данные можно считать окончательными. Основывается на предположении что CA не переупорядочивает данные. $(P)ready_fast-I $(P)ready_fine-I $(P)ready_sep-I $(P)ready_single-I $(P)ready_turns-I : триггеры готовности данных ### Результаты измерений в моде SINGLE Описание [измерения в моде SINGLE](internal) $(P)e1_x-I $(P)e2_x-I $(P)p1_x-I $(P)p2_x-I : положение пучка X для каждого банча $(P)e1_z-I $(P)e2_z-I $(P)p1_z-I $(P)p2_z-I : положение пучка Z для каждого банча $(P)e1_i-I $(P)e2_i-I $(P)p1_i-I $(P)p2_i-I : ток для каждого банча Следующие Параметры требуются для диагностики правильности работы режима SINGLE. Переменная $(B) раскрывается как e1, e1, p1, p2. $(P)\$(B)_u0-I $(P)\$(B)_u1-I $(P)\$(B)_u2-I $(P)\$(B)_u3-I : необработанное напряжение на кнопке в кодах АЦП, без учета смещения нуля и корректирующих множителей. $(P)\$(B)\_scan_single_axis-I $(P)\$(B)\_scan_single_U0-I $(P)\$(B)\_scan_single_U1-I $(P)\$(B)\_scan_single_U2-I $(P)\$(B)\_scan_single_U3-I : сканирование вокруг максимума $(P)\$(B)\_sep_desired-I $(P)\$(B)\_scan_fast_sep-I $(P)\$(B)\_scan_fast_U-I : $(P)scan_single_to_avr-I : среднее время потраченное на измерение $(P)scan_single_to_max-I : максимальное время $(P)scan_single_to_min-I : минимальное $(P)scan_single_total-I : полное время ### Результаты измерений в моде FINE $(P)scan_fine_to_avr-I $(P)scan_fine_to_max-I $(P)scan_fine_to_min-I : среднее время потраченное на измерение $(P)scan_fine_total-I : полное время $(P)\$(B)\_scan_fine_axis-I : ось $(P)\$(B)\_scan_fine_U0-I $(P)\$(B)\_scan_fine_U1-I $(P)\$(B)\_scan_fine_U2-I $(P)\$(B)\_scan_fine_U3-I : напряжение на кнопке, с учетом смещения 0 и коррктирующего множителя напряжения $(P)\$(B)\_scan_fine_U-I : среднее напряжение на всех кнопках ### Результаты измерений в моде SEP $(P)scan_sep_e-I : ток в каждой сепаратрисе, с тонкой задержкой настроенной на максимум электронов $(P)scan_sep_p-I : ток в сепаратрисе для позитронов $(P)scan_sep_to_avr-I : среднее время измерения $(P)scan_sep_to_max-I $(P)scan_sep_to_min-I $(P)scan_sep_total-I : полное время измерения ### Результаты измерений в моде TURNS $(P)turns_axis-I : номер оборота $(P)turns_i-I : пооборотный ток $(P)turns_x-I : пооборотный горизональная координата $(P)turns_z-I : вертикальная координата $(P)turns_U0-I $(P)turns_U1-I $(P)turns_U2-I $(P)turns_U3-I : пооборотный код АЦП $(P)turns_total-I : полное время измерения, включает ожидание запуска, время измерения и чтение данных ### Результаты измерений в моде FAST $(P)scan_fast_to_avr-I $(P)scan_fast_to_max-I $(P)scan_fast_to_min-I $(P)scan_fast_total-I : $(P)scan_fast_U_axis-I : $(P)scan_fast_U-I : ### Результат измерений банча ### Настройки перекрестной коррекции Вблизи мест встречи пучков, в центре технического, экспериментального промежутков и полуколец, хвост частиц одного типа наезжает на сигнал частиц другого типа. Всего для четырех сгустков возможно два таких случая. Для каждого случая предусмотрен свой набор параметров компенсации хвоста. Алгоритм компенсации работает следующим образом, в параметрах компенсации запоминается при каких условиях работает компенсация, сгусток для которого проводится компенсация, сгусток который влияет, сепаратрисы в которых ожидаются сгустки, результат сканирования fine, задержка при которой сканирование было полученно. Если текущие настройки банчей не соответствуют условиям срабатывания алгоритма компенсации , алгоритм не срабатывает. Если все условия удовлетворены, то производится компенсация, по току в опорном банче определяется велична хвоста в корректируемом банче и поправка вычитается. макрос $(CROSS) раскрывается как cross1, cross2. $(P)\$(CROSS)\_enable-Cmd : разрешение $(P)\$(CROSS)_enabled-Sts : $(P)\$(CROSS)_clear-Cmd : $(P)\$(CROSS)_bunch-SP : банч $(P)\$(CROSS)_sep-RB $(P)\$(CROSS)_sep-SP : сеператриса банча $(P)\$(CROSS)_ref-SP $(P)\$(CROSS)_ref-RB : опорный банч $(P)\$(CROSS)\_ref_sep-RB $(P)\$(CROSS)\_ref_sep-SP : сепаратриса опроного банча $(P)\$(CROSS)\_ref_fine_desired-I $(P)\$(CROSS)\_ref_fine-SP : задержка в опорном банче $(P)\$(CROSS)\_ref_min-SP : минимальный уровень сигнала $(P)\$(CROSS)\_sigma-I $(P)\$(CROSS)\_u0_desired-I $(P)\$(CROSS)\_u0-RB $(P)\$(CROSS)\_u0-SP $(P)\$(CROSS)\_u1_desired-I $(P)\$(CROSS)\_u1-RB $(P)\$(CROSS)\_u1-SP $(P)\$(CROSS)\_u2_desired-I $(P)\$(CROSS)\_u2-RB $(P)\$(CROSS)\_u2-SP $(P)\$(CROSS)\_u3_desired-I $(P)\$(CROSS)\_u3-RB $(P)\$(CROSS)\_u3-SP : ### Данные из STAP файла $(P)ch_v3_sepa-SP $(P)v3_1_current-SP $(P)v3_2_current-SP : полученно из stap файла # Описание PV reaper IOC Макрос $(R) раскрывается как "VEPP4:AGR:" ## Получение данных из stap файла $(R)ch_v3_sepa-RB $(R)ch_v3_sepa-SP $(R)v3_1_current-RB $(R)v3_1_current-SP $(R)v3_2_current-RB $(R)v3_2_current-SP $(R)error-RB $(R)error-SP $(R)heart-SP : полученно из stap файла ## информация принятатя из пикапстанций Макрос $(PN) раскрывается как p1, p2 ... p54 $(R)\$(PN)-Cmd : сбор разрешен $(R)\$(PN)\_connected-Cmd $(R)\$(PN)\_e1_i-SP $(R)\$(PN)\_e1_x-SP $(R)\$(PN)\_e1_z-SP $(R)\$(PN)\_e2_i-SP $(R)\$(PN)\_e2_x-SP $(R)\$(PN)\_e2_z-SP $(R)\$(PN)\_error-SP $(R)\$(PN)\_gain-SP $(R)\$(PN)\_name-SP $(R)\$(PN)\_p1_i-SP $(R)\$(PN)\_p1_x-SP $(R)\$(PN)\_p1_z-SP $(R)\$(PN)\_p2_i-SP $(R)\$(PN)\_p2_x-SP $(R)\$(PN)\_p2_z-SP $(R)\$(PN)\_ready_single-SP $(R)\$(PN)\_ready_turns-SP $(R)\$(PN)\_single_error-SP $(R)\$(PN)\_turns_bunch-SP $(R)\$(PN)\_turns_error-SP $(R)\$(PN)\_turns_kick-SP : захваченные данные # Описание PV fftvepp4 IOC # Описание PV sep_all IOC # Описание PV sep_helper IOC