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-*, все остальные имеют право только на чтение.