v4orb2.wiki

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

measure.md (7259B)


      1 Title:  получение данных
      2 
      3 [TOP](index)
      4 
      5 {{TOC}}
      6 
      7 # Получение данных
      8 
      9 Для получения данных существуют биндинги для разных языков
     10 
     11 [полный список](http://www.aps.anl.gov/epics/extensions/index.php)
     12 
     13 ## C
     14 
     15 [Channel Access Reference Manual](http://www.aps.anl.gov/epics/base/R3-14/12-docs/CAref.html)
     16 
     17 [пример использования стандартной билиотеки](measure-c)
     18 
     19 [библиотека genlib](http://www.inp.nsk.su/~bekhte/genlib-example.git)  
     20 на этой библиотеке реализованы IOC для пикапстанций ВЭПП 3/4.
     21 
     22 ## Python
     23 
     24 Давно не пробовал, ничего посоветовать не могу
     25 
     26 * [cothread](http://controls.diamond.ac.uk/downloads/python/cothread/)
     27 * [pyepics](http://pyepics.github.io/pyepics/)
     28 
     29 ## Консольные программы
     30 
     31 В стандартной поставке эпикса есть программы для доступа к переменным
     32 
     33 * caget - чтение переменной
     34 * caput - запись переменной
     35 * camonitor - мониторинг изменения значения переменной
     36 
     37 ```
     38 [vepp4@vepp4-pult6 ~]$ camonitor VEPP4:NEP0:e1_x-I VEPP4:NEP0:e1_z-I VEPP4:NEP0:e1_i-I
     39 VEPP4:NEP0:e1_x-I              2016-02-02 14:01:01.263315 0.478965
     40 VEPP4:NEP0:e1_z-I              2016-02-02 14:01:01.263319 0.533542
     41 VEPP4:NEP0:e1_i-I              2016-02-02 14:01:01.263292 1.79869
     42 VEPP4:NEP0:e1_i-I              2016-02-02 14:01:02.296130 1.79863
     43 VEPP4:NEP0:e1_x-I              2016-02-02 14:01:02.296158 0.479525
     44 VEPP4:NEP0:e1_z-I              2016-02-02 14:01:02.296162 0.53962
     45 VEPP4:NEP0:e1_i-I              2016-02-02 14:01:03.266532 1.79846
     46 VEPP4:NEP0:e1_x-I              2016-02-02 14:01:03.266559 0.47096
     47 VEPP4:NEP0:e1_z-I              2016-02-02 14:01:03.266564 0.544391
     48 ...............................................
     49 ```
     50 
     51 ## Программа логгирования
     52 
     53 Мировым сообществом написано несколько программных продуктов для логгирования значения переменных разной степени жирности. В основном весьма, с базами данных и прочим. Так что в лучших традициях была написана своя маленька программа которая логгирует в текстовый файл.
     54 
     55 * calogger - мониторинг переменных с записью в индивидульный текстовый файл
     56 
     57 Использование
     58 
     59 ```
     60 calogger имяфайла_со_списком_переменных
     61 ```
     62 
     63 Файл списка переменных можно сформировать из полного списка переменных системы, который генерируется при компиляции.
     64 Это файл **iocBoot/ioclogger/v4group.cmd** . С помощью grep из него можно выбрать то что интересно. Например вас интересует координата X для первых банчей электронов и позитронов в семействе пикапов [SN]RP*.
     65 
     66 ```
     67 cat iocBoot/ioclogger/v4group.cmd | grep -E "[NS]RP[^ ]+[ep]1_x-I" > имяфайла
     68 ```
     69 
     70 формат файла следующий
     71 
     72 ```
     73 имядиректории имяфайла_переменной тип имя_переменной формат_опционально
     74 ```
     75 
     76 поле формат присутствует если формат выдачи отличается от формата по умочанию.
     77 
     78 В результате логгер создаст для каждой переменной свой файл в соответствующей директории. В имени файла содержится момент начала записи. И при каждом изменении значения переменной будет добавлять в файл строчку в формате
     79 
     80 ```
     81 дата время значение
     82 ```
     83 
     84 При достижении файлома размера 10М запись в старый файл прекращается и начинается в новый с соответствующей датой и временем в имени файла.
     85 
     86 ### Интерфейс
     87 
     88 * ENTER - краткая статистика, подсказка
     89 * q - выход
     90 * c - список подключенных переменных
     91 * d - список не подключенных переменных
     92 
     93 ### Пример
     94 
     95 ```
     96 [vepp4@vepp4-pult6 tmp]$ cat /opt/ppc860/v4bpm_build_cache/iocBoot/ioclogger/v4group.cmd | grep -E "NEP5[^ ]+e1_.-I" > list
     97 [vepp4@vepp4-pult6 tmp]$ ll
     98 итого 4
     99 -rw-rw-r-- 1 vepp4 vepp4 162 Фев  2 14:06 list
    100 [vepp4@vepp4-pult6 tmp]$ cat list
    101 VEPP4_NEP5 e1_x-%Y%m%d-%H%M%S FLOAT VEPP4:NEP5:e1_x-I
    102 VEPP4_NEP5 e1_z-%Y%m%d-%H%M%S FLOAT VEPP4:NEP5:e1_z-I
    103 VEPP4_NEP5 e1_i-%Y%m%d-%H%M%S FLOAT VEPP4:NEP5:e1_i-I
    104 [vepp4@vepp4-pult6 tmp]$ /opt/ppc860/v4bpm_build_cache/bin/linux-x86/calogger list
    105 2016-02-02 14:07:13:calogger.cpp:546:calogger
    106 2016-02-02 14:07:13:calogger.cpp:413:parse list
    107 2016-02-02 14:07:13:epe_notify.cpp:31:inotify_add_watch(/opt/ppc860/v4bpm_build_cache/bin/linux-x86/calogger) wd=1
    108 2016-02-02 14:07:13:epe_notify.cpp:31:inotify_add_watch(list) wd=1
    109 <press ENTER>
    110 2016-02-02 14:07:19:epe_con.cpp:27:EPE_con::process
    111 2016-02-02 14:07:19:epe_con.cpp:44:EPE_con fd=0
    112 2016-02-02 14:07:19:epe_notify.cpp:47:EPE_notify fd=6 /opt/ppc860/v4bpm_build_cache/bin/linux-x86/calogger
    113 2016-02-02 14:07:19:epe_notify.cpp:47:EPE_notify fd=7 list
    114 2016-02-02 14:07:19:calogger.cpp:472:rn=1 buf=
    115 
    116 pv connected: 3/3
    117 quit - quit, c - print connected pv, d - print disconnected pv
    118 <press q ENTER>
    119 2016-02-02 14:07:27:epe_con.cpp:27:EPE_con::process
    120 2016-02-02 14:07:27:calogger.cpp:472:rn=2 buf=q
    121 
    122 pv connected: 3/3
    123 quit - quit, c - print connected pv, d - print disconnected pv
    124 [vepp4@vepp4-pult6 tmp]$ ls -lR
    125 .:
    126 итого 8
    127 -rw-rw-r-- 1 vepp4 vepp4  162 Фев  2 14:06 list
    128 drwxr-xr-x 2 vepp4 vepp4 4096 Фев  2 14:07 VEPP4_NEP5
    129 
    130 ./VEPP4_NEP5:
    131 итого 12
    132 -rw-rw-r-- 1 vepp4 vepp4 468 Фев  2 14:07 e1_i-20160202-140713
    133 -rw-rw-r-- 1 vepp4 vepp4 481 Фев  2 14:07 e1_z-20160202-140713
    134 -rw-rw-r-- 1 vepp4 vepp4 481 Фев  2 14:07 e1_z-20160202-140713
    135 [vepp4@vepp4-pult6 tmp]$
    136 [vepp4@vepp4-pult6 tmp]$ cat VEPP4_NEP5/e1_i-20160202-140713
    137 2016-02-02 14:07:14.534445493 1.756
    138 2016-02-02 14:07:15.635094328 1.756
    139 2016-02-02 14:07:16.736056401 1.756
    140 ```
    141 
    142 # Настройки безопасности на ВЭППе
    143 
    144 В системе эпикс есть возможность управлять доступом к переменным с помощью списков контроля доступа. 
    145 
    146 На ВЭППе списки контроля доступа настроены таким образом, что право на запись имеет пользователь vepp4 с машин семейства vepp4-*, все остальные имеют право только на чтение.