v4orb2.wiki

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

commit 1e95f6ca3ba87b1073530f523b1cb0bb8a4a5316
parent dafa35b1c336bac6a4edbe0592817bb21626c7bd
Author: S S <ss@qoo>
Date:   Wed Feb  3 18:30:42 +0600

upd

Diffstat:
broadcast.md | 8++++++++
index.md | 17+++++++++++------
internal.md | 37+++++++++++++++++++++++++++++++++++++
obzor.md | 60++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
v4-pv-list.md | 406+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5 files changed, 522 insertions(+), 6 deletions(-)
diff --git a/broadcast.md b/broadcast.md @@ -0,0 +1,7 @@ +Title: Броадкасты + +[TOP](index) + +# Броадкасты + +https://wiki-ext.aps.anl.gov/epics/index.php/How_to_Make_Channel_Access_Reach_Multiple_Soft_IOCs_on_a_Linux_Host+ \ No newline at end of file diff --git a/index.md b/index.md @@ -2,8 +2,14 @@ Title: Система измерения положения пучка ВЭПП4 # Система измерения положения пучка ВЭПП4 -1. [Обзор системы](obzor) -2. [установка CSS](CSS-install) -3. [установка библиотеки EPICS](epics) -4. [получение данных](measure) -5. [Управление IOC ВЭПП3-4](vXbpmd)- \ No newline at end of file +1. [Обзор](obzor) +1. [внутренне устройство](internal) +1. [получение данных](measure) +1. [Управление IOC ВЭПП3-4](vXbpmd) + +# howto + +1. [установка CSS](CSS-install) +1. [установка библиотеки EPICS](epics) +1. [Броадкасты](broadcast) + diff --git a/internal.md b/internal.md @@ -0,0 +1,37 @@ +Title: Внутренности + +[TOP](index) + +# Внутреннее устройство + +# Конфигурация связей IOC + +В рамках имеющихся граничных условий, система измерения положения была разбита на 3 независимые части. Stap IOC отвечает за импорт данных из stap файла, и выработку синхронизирующих сигналов. Pstation IOC отвечает за взаимодействие с конкретным экземпляром пикап станции, проведение измерений. Reaper IOC отвечает за сбор данных и экспорт измеренных данных в систему управления ВЭПП4. Связи между IOC представлены на рис. + +Существенные для работы системы данные из stap файла предоставляются в формате понятном для системы EPICS, также генерируется периодическое событие для одновременности измерений всеми пикап станциями. Пикап станции проводят измерения. Сборщик собирает данные со всех пикап станции и посылает их в систему PAUK и записывает в файлы. + +Описание IOC +stap IOC +обеспечивает импорт данных из stap файла в EPICS. +Должен быть запущен на dbm1. +pstation IOC +Обеспечивает измерение одной пикапстанции +Должен быть запущен на pult6. +Режимы работы pstation IOC +pstation IOC производит измерения нескольких типов +STOP – измерения не производятся + +SINGLE – основной режим, измеряет координаты пучка. Кроме основной точки проводит измерение точек в диапазоне ±3 * step_single-SP. Используется для поиска максимума и коррекции тонкой задержки. Производится раз в секунду по внешнему событию, все пикапстанции начинают этот тип измерения синхронно + +SEP – фоновый режим, сканирование по току сепаратрис. + +FINE – фоновый режим, сканирование тонкой задержки в сепаратрисах с банчем с шагом step_fine-SP, используется для вычисления смещения нуля и как исходные данные для перекрестной компенсации. + +TURNS – приоритетный режим, проведение пооборотных измерений. Прерывает все остальные режимы, происходит по сигналу из stap файла. + +FAST – фоновый режим, подробное сканирование по току в сапаратрисах с шагом sca_fast_mult-SP. Используется для автоматической подстройки сапаратрисы, пока работает плохо. +TIMEBACK – эксклюзивный фоновый режим. Предназначен для посмертного анализа сброса пучка, останавливает все виды сканирования и мониторит пропадание пучка. В случае обнаружения сброса пучка читает пооборотные данные перед сбросом. + +reaper IOC +Собирает данные со всех пикапстанций и экспортирует в формате совместимом с системой управления ВЭПП4. +Запущен на pult6, должен быть запущен под пользователем vepp4. diff --git a/obzor.md b/obzor.md @@ -4,5 +4,65 @@ Title: Обзор # Обзор системы +Программное обеспечение системы измерения положения пучка построено с использованием библиотеки EPICS. В рамках данной технологии большая задача разбивается на несколько более простых задач. Каждая отдельная подзадача реализуется посредством IOC (Input Output Controller), программы следующей установленным стандартным протоколам библиотеки EPICS. Объединенная группа IOC образует сеть передачи и обработки данных, выполняющую поставленную задачу. + ## введенеи в EPICS +Желающие могут приобщиться к первоисточнику + +1. [Developer Guide](http://www.aps.anl.gov/epics/base/R3-14/12-docs/AppDevGuide/node6.html) +1. [Record manual](https://wiki-ext.aps.anl.gov/epics/index.php/RRM_3-14_Concepts) + +Но для того чтобы получать представление как все работает попробую пояснить попроще. + +EPICS можно представить как эмулятор принципиальной схемы, в которой вместо напряжений и тока передаются данные. + +![scheme](scheme-1.png) +пример принципиальной схемы + +Есть небольшое количество универсальных блоков обрабатывающих данные. Блоки предназначенные для ввода/вывода данных на внешние устройства, блоки производящие вычисления, мультиплексоры и другие. У каждого блока есть несколько входов выходов к которым можно обратиться. Выходы блоков соединяются каналами передачи данных в заданном порядке при загрузке программы. В результате получается сеть обработки данных. Воспользовавшись стандартным протоколом доступа к данным библиотеки EPICS есть возможность прочитать состояние любого входа или выхода блока, а если есть возможность записать, то и записать. Запись дает возможность влиять на поведение сети. + +Обратиться к блоку можно по его имени. Имя блока это произвольная текстовая строка, но по сображениям удобства имена выбирают в виде иерархии "Установка:Прибор:Параметр", где Установка, Прибор, Параметр обычные имена в смысле универсального языка программитрования. Разумно также выбирать имена так чтобы их можно было писать в шелле без кавычек. + +По архитектурным соображениям блоки целесообразно объединять в группы, которые обслуживаются одной программой. Такие программы называются IOC (InputOutputController) + +![scheme](scheme-2.png) +IOC + +Каждый IOC предоставляет документированный набор парметров для доступа, называемых PV (ProcessVariable). +Записывая данные в PV пользователь задает режим работы и отдает команды вычислительной сети, читая PV получает результат. + +# Типы данных + +В системе пикапов используются следующие типы PV + +* long - целые +* float - числа сплавающей точкой +* enum - перчисления, также представляются целыми +* string - строка, это такой объект размером 40 символов +* long[] - массив целых чисел +* float[] - массив чисел с плавающей точкой + +# Схема наименования PV + +В соответствии с принятой иерархией имена PV в системе имеют вид + +* VEPP3:имяIOC:параметр-Suf +* VEPP4:имяIOC:параметр-Suf +* STAP:параметр-Suf + +где VEPP3, VEPP4 - имя установки, +STAP - специальный IOC для импорта данных из stap файла, он присутствует в единственном экземпляре и поэтому поле имяIOC у него отсутствует. + +имяIOC - имя IOC, чаще всего имя пикапа, но есть и служебные IOC различного назначения. + +параметр - имя параметра, имя в том смысле в каком оно определено в C. + +Suf - суффикс, передает назначение/происхождение переменной, наиболее интересные + +* SP - SetPoint - установка параметров, например длительность измерения +* Cmd - бинарный флаг запись, разрешить/запретить какое-либо измерение или вычисление, запустить измерение +* Sts - бинарный флаг чтение, есть/нет соединение, завершение вычисления +* I - (Instrumet?) измеренные данные, чаще всего float + +# Одновременность diff --git a/v4-pv-list.md b/v4-pv-list.md @@ -0,0 +1,406 @@ +Описание PV + +Описание PV stap IOC +VEPP4:ch_elpo-I +VEPP4:ch_ready-I +VEPP4:ch_status-I +VEPP4:ch_status_prev-I +VEPP4:ch_v3_sepa-I +VEPP4:heart_ +VEPP4:isok-I +VEPP4:perepusk-I +VEPP4:perepusk_prev-I +VEPP4:stap_dat-I +VEPP4:turns_bunch-Sts +VEPP4:turns_do-I +VEPP4:turns_kick-Sts +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 + + +Описание PV pstation IOC + +Данные из STAP файла +$(P)ch_v3_sepa-RB +$(P)ch_v3_sepa-SP +$(P)v3_1_current-RB +$(P)v3_1_current-SP +$(P)v3_2_current-RB +$(P)v3_2_current-SP + +Управление ioc +$(P)HW:Host-RB +$(P)HW:Host-SP +$(P)HW:Port-RB +$(P)HW:Port-SP +$(P)connect-Cmd +$(P)connect-Sts +$(P)connected-Sts +$(P)delay_hf-RB +$(P)delay_hf-SP +$(P)Error-RB +$(P)Error-SP +$(P)heart_ +$(P)Heart-RB +$(P)Heart-SP + +Режимы работы +$(P)mode_single-Cmd +$(P)mode_single-Sts +$(P)mode_fine-Cmd +$(P)mode_fine-Sts +$(P)mode_sep-Cmd +$(P)mode_sep-Sts +$(P)mode_turns-Cmd +$(P)mode_turns-Sts +$(P)mode_fast-Cmd +$(P)mode_fast-Sts +$(P)mode-I + +Автоматические подстройки +auto – автоматическая подстройка, auto1 – однократная подстройка +$(P)fine_auto1-Cmd +$(P)fine_auto1-Sts +$(P)fine_auto-Cmd +$(P)fine_auto-Sts +$(P)delay_button_auto1-Cmd +$(P)delay_button_auto1-Sts +$(P)delay_button_auto-Cmd +$(P)delay_button_auto-Sts +$(P)fine_bunch_auto1-Cmd +$(P)fine_bunch_auto1-Sts +$(P)fine_bunch_auto-Cmd +$(P)fine_bunch_auto-Sts +$(P)gain_auto-Cmd +$(P)gain_auto-Sts +$(P)fine_max-RB +$(P)fine_max-SP +$(P)fine_min-RB +$(P)fine_min-SP +$(P)scan_fast_auto1-Cmd +$(P)scan_fast_auto1-Sts +$(P)scan_fast_auto-Cmd +$(P)scan_fast_auto-Sts +$(P)u0_button_auto1-Cmd +$(P)u0_button_auto1-Sts +$(P)u0_button_auto-Cmd +$(P)u0_button_auto-Sts + +масштабные коэффициенты для кнопок +$(P)delay_button0_desired-I +$(P)delay_button0-RB индивидуальная задержка для кнопки +$(P)delay_button0-SP +$(P)delay_button1_desired-I +$(P)delay_button1-RB +$(P)delay_button1-SP +$(P)delay_button2_desired-I +$(P)delay_button2-RB +$(P)delay_button2-SP +$(P)delay_button3_desired-I +$(P)delay_button3-RB +$(P)delay_button3-SP +$(P)g0_button0-RB корректирующий множитель напряжения для кнопки при коэффициенте усиления 0 +$(P)g0_button0-SP +$(P)g0_button1-RB +$(P)g0_button1-SP +$(P)g0_button2-RB +$(P)g0_button2-SP +$(P)g0_button3-RB +$(P)g0_button3-SP +$(P)g1_button0-RB +$(P)g1_button0-SP +$(P)g1_button1-RB +$(P)g1_button1-SP +$(P)g1_button2-RB +$(P)g1_button2-SP +$(P)g1_button3-RB +$(P)g1_button3-SP +$(P)u0_button0_desired-I +$(P)u0_button0-RB смещение нуля кнопки +$(P)u0_button0_sigma-I +$(P)u0_button0-SP +$(P)u0_button1_desired-I +$(P)u0_button1-RB +$(P)u0_button1_sigma-I +$(P)u0_button1-SP +$(P)u0_button2_desired-I +$(P)u0_button2-RB +$(P)u0_button2_sigma-I +$(P)u0_button2-SP +$(P)u0_button3_desired-I +$(P)u0_button3-RB +$(P)u0_button3_sigma-I +$(P)u0_button3-SP +$(P)u0_button_sigma-RB +$(P)u0_button_sigma-SP + +Настройки измерений +$(P)sep0-RB смещение номера сепаратрисы, +$(P)sep0-SP +$(P)fine_e_desired-I +$(P)fine_e-RB тонкая задержка для частиц типа e +$(P)fine_e-SP +$(P)fine_p_desired-I +$(P)fine_p-RB тонкая задержка для частиц типа p +$(P)fine_p-SP +$(P)gain-RB код усиления +$(P)gain-SP + +Настройки измерений в моде SINGLE +$(P)nturns_single-RB длительность измерения в режиме single, в оборотах +$(P)nturns_single-SP +$(P)gap_single-RB 0 +$(P)gap_single-SP +$(P)np_adc_read_single-RB 0 +$(P)np_adc_read_single-SP +$(P)step_single-RB шаг сканирования в режиме single +$(P)step_single-SP + +Настройки измерений в моде FINE +$(P)step_fine-RB шаг сканирования в режиме fine +$(P)step_fine-SP +$(P)nturns_fine-RB длительность измерения в режиме fine, в оборотах +$(P)nturns_fine-SP +$(P)gap_fine-RB 0 +$(P)gap_fine-SP +$(P)np_adc_read_fine-RB 0 +$(P)np_adc_read_fine-SP +$(P)fine_auto_min-RB предел в кодах ниже которого не выполняется подстройка задержки +$(P)fine_auto_min-SP + +Настройки измерений в моде SEP +$(P)nturns_sep-RB длительность измерения в режиме sep, в оборотах +$(P)nturns_sep-SP +$(P)np_adc_read_sep-RB +$(P)np_adc_read_sep-SP +$(P)gap_sep-RB +$(P)gap_sep-SP + +Настройки измерений в моде TURNS +$(P)turns_bunch-RB банч для которого производятся пооборотные измерения +$(P)turns_bunch-SP +$(P)turns_do-RB запись не 0 производит пооборотные измерения, по окончании измерения сбрасывается в 0 +$(P)turns_do-SP +$(P)turns_kick-RB причина измерений INJ, UDAR, SOFT +$(P)turns_kick-SP +$(P)turns_start0-RB количество оборотов в начале измерения координаты которых зануляются, скрывается шум в отсутствие пучка +$(P)turns_start0-SP +$(P)turns_timeout-RB таймаут пооборотных измерений +$(P)turns_timeout-SP +$(P)nturns_turns-RB длительность пооборотных измерений в оборотах, авоматически увеличивается, должно быть по крайней мере 2 в степени np_adc умножить на gap+1 +$(P)nturns_turns-SP +$(P)np_adc_read_turns-RB размер массива пооборотных измерений, 2 в соответствующей степени, 0 – 1024, 1 – 2048, 2 – 4096, 3 – 8192. +$(P)np_adc_read_turns-SP +$(P)gap_turns-RB прореживание, измерение производится для каждого gap+1 оборота, при gap равном нулю на каждом обороте +$(P)gap_turns-SP + +Настройки измерений в моде FAST +$(P)nturns_fast-RB +$(P)nturns_fast-SP +$(P)gap_fast-RB +$(P)gap_fast-SP +$(P)np_adc_read_fast-RB +$(P)np_adc_read_fast-SP +$(P)scan_fast_mult-RB +$(P)scan_fast_mult-SP + +Настройки измерений в моде TIMEBACK + +Параметры пикапа +$(P)g0_gI-RB множитель тока при коде коэффициента усиления 0 +$(P)g0_gI-SP +$(P)g1_gI-RB множитель тока при коде коэффициента усиления 1 +$(P)g1_gI-SP +$(P)GI-RB множитель по току +$(P)GI-SP +$(P)GX-RB геометрический множитель по горизонтальной координате +$(P)GX-SP +$(P)GY-RB геометрический множитель по вертикальной координате +$(P)GY-SP +$(P)X0-RB смещение нуля по горизонтали +$(P)X0-SP +$(P)Y0-RB смещенеи нуля по вертикали +$(P)Y0-SP + +Результаты измерений +сигналы готовности, инкрементирующийся счетчик, соответствующего режима измерений. Задумывалось что он будет последним в обновлении данных соответствующего типа измерений, и когда он меняется все данные можно считать окончательными. Основывается на предположении что CA не переупорядочивает данные. +$(P)ready_fast-I +$(P)ready_fine-I +$(P)ready_sep-I +$(P)ready_single-I +$(P)ready_turns-I + +Результаты измерений в моде SINGLE +$(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 напряжение на кнопке, с учетом смещения 0 и коррктирующего множителя напряжения +$(P)$(B)_scan_fine_U1-I +$(P)$(B)_scan_fine_U2-I +$(P)$(B)_scan_fine_U3-I +$(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_y-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 + + +Настройки банча +B – одно из e1, e2, p1, p2 +$(P)$(B)_bunch-Cmd разрешение измерения банча +$(P)$(B)_bunch-Sts +$(P)$(B)_extr-RB тип экстеремума 1 – максимум -1 - минимум +$(P)$(B)_extr-SP +$(P)$(B)_sep-RB номер сепаратрисы +$(P)$(B)_sep-SP +$(P)$(B)_fine_desired-I +$(P)$(B)_fine-RB тонкая задержка +$(P)$(B)_fine-SP +$(P)$(B)_scan_fast_base-RB +$(P)$(B)_scan_fast_base-SP + +Результат измерений банча +$(P)$(B)_x-I +$(P)$(B)_y-I +$(P)$(B)_i-I +$(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)$(CROSS)_enable-Cmd разрешение +$(P)$(CROSS)_enabled-Sts +$(P)$(CROSS)_enable-Sts +$(P)$(CROSS)_clear-Cmd +$(P)$(CROSS)_clear-Sts +$(P)$(CROSS)_bunch-RB банч +$(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-RB задержка в опорном банче +$(P)$(CROSS)_ref_fine-SP +$(P)$(CROSS)_ref_min-RB минимальный уровень сигнала +$(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 + +Описание PV reaper IOC +Получение данных из 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_ +$(R)heart-RB +$(R)heart-SP + +информация принятатя из пикапстанций +$(R)$(PN)-Cmd +$(R)$(PN)-Sts +$(R)$(PN)_connected-Cmd +$(R)$(PN)_connected-Sts +$(R)$(PN)_e1_i-RB +$(R)$(PN)_e1_i-SP +$(R)$(PN)_e1_x-RB +$(R)$(PN)_e1_x-SP +$(R)$(PN)_e1_y-RB +$(R)$(PN)_e1_y-SP +$(R)$(PN)_e2_i-RB +$(R)$(PN)_e2_i-SP +$(R)$(PN)_e2_x-RB +$(R)$(PN)_e2_x-SP +$(R)$(PN)_e2_y-RB +$(R)$(PN)_e2_y-SP +$(R)$(PN)_error-RB +$(R)$(PN)_error-SP +$(R)$(PN)_gain-RB +$(R)$(PN)_gain-SP +$(R)$(PN)_name-RB +$(R)$(PN)_name-SP +$(R)$(PN)_p1_i-RB +$(R)$(PN)_p1_i-SP +$(R)$(PN)_p1_x-RB +$(R)$(PN)_p1_x-SP +$(R)$(PN)_p1_y-RB +$(R)$(PN)_p1_y-SP +$(R)$(PN)_p2_i-RB +$(R)$(PN)_p2_i-SP +$(R)$(PN)_p2_x-RB +$(R)$(PN)_p2_x-SP +$(R)$(PN)_p2_y-RB +$(R)$(PN)_p2_y-SP +$(R)$(PN)_ready_single-RB +$(R)$(PN)_ready_single-SP +$(R)$(PN)_ready_turns-RB +$(R)$(PN)_ready_turns-SP +$(R)$(PN)_single_error-RB +$(R)$(PN)_single_error-SP +$(R)$(PN)_turns_bunch-RB +$(R)$(PN)_turns_bunch-SP +$(R)$(PN)_turns_error-RB +$(R)$(PN)_turns_error-SP +$(R)$(PN)_turns_kick-RB +$(R)$(PN)_turns_kick-SP + +$(P)VEPP4:NEP0:turns_error-I +