308827778 -1- 1/26/2016 Каналы и запросы в системе управления Типы каналов 1 Для решения задач передачи данных между уровнями СУ с максимальной изоляцией каждого уровня от специфики реализации других уровней используется концепция каналов. Существует два типа каналов: аппаратные и операторские. Аппаратные каналы обеспечивают связь между аппаратурой (драйверами устройств) и средним (серверным) уровнем системы управления. Аппаратные каналы являются непосредственным отображением каналов аппаратуры (например, каждому каналу ЦАП и АЦП сопоставляется по аппаратному каналу). Значения аппаратных каналов содержатся в серверных программах, обслуживающих соответствующую аппаратуру. Кроме каналов, отражающих аппаратуру, предусмотрены каналы, непосредственно с аппаратурой не связанные, но необходимые для управления серверными программами и различными процессами, т.н. каналы-команды и информационные каналы. Наименования аппаратных каналов образуются иерархическим способом, отражающим обслуживание аппаратуры серверными программами. Операторские каналы отражают значения различных параметров управляемой установки; через операторские каналы осуществляется оперативный доступ к значениям аппаратных каналов, хранящихся в сервере. 1.1 Виды аппаратных каналов измерительный аппаратный канал соответствует чтению из устройства измеренных значений либо в виде числа, либо в виде битового кода; измерительный канал может содержать либо одно померенное значение, либо массив значений; управляющий аппаратный канал соответствует записи данных в управляющие устройства либо в виде числа, либо в виде битового кода; значение управляющего канала может быть прочитано из устройства; отработка записанных в аппаратный канал значений реализуется либо в устройстве, либо драйвером устройства; при этом; управляющий аппаратный канал имеет два значения: значение, заказанное для записи в аппаратный канал, и значение, отработанное устройством в текущий момент; при нормальной работе эти два значения относительно долго могут не совпадать во время процесса отработки драйвера или устройства, или в течение времени, когда серверу запрещено передавать новое значение для отработки; настроечный аппаратный канал для настройки режимов работы устройств и драйверов устройств (например, для устройств - время интегрирования АЦП, диапазон выходного напряжения ЦАПа, диапазон линии задержки и т.п., для драйверов – интервал чтения измерительного устройства); классифицируется отдельно от управляющих и измерительных каналов, т.к. канал не связан с управляемым оборудованием и замыкается "внутри" электронного устройства; канал–команда для управления работой одного устройства или системы устройств (стоп, старт отработки и т.п.); канал может быть не связан с каким-либо конкретным устройством; после отработки появившейся команды сервер сбрасывает значение канала-команды в исходное состояние; информационный канал 308827778 -2- 1/26/2016 канал не связан непосредственно с аппаратурой; служит для обеспечения общего доступа к неким данным, хранящимся в сервере (например, статус установки, тип ускоряемых частиц и т.п.); информационный канал можно читать и писать. 1.2 Виды операторских каналов: простой операторский канал (или "точка контроля", см. п. 1.3) связан пересчетным коэффициентом со значением только одного аппаратного канала, выражает значение некой управляемой или измеряемой физической величины, сигнала или контакта; связанного с данным аппаратным каналом вычисляемый операторский канал связан с несколькими простыми операторскими каналами, т.е. значение вычисляемого операторского канала определяется значениями нескольких простых операторских каналов (точек контроля); канал-ручка; по значению канала-ручки (или ручек) вычисляются значения сразу нескольких простых операторских каналов (точек контроля); значение ручки также определяется значениями нескольких точек контроля. 1.3 Связь между аппаратными и операторскими каналами Для связи управляемых и измеряемых физических величин с аппаратными каналами вводится дополнительная сущность: точка контроля (signal point). Точка контроля является простым операторским каналом и подразумевает либо наличие в системе некого сигнала, пропорционального физической величине или какому-то физическому параметру, либо наличие контакта, управляющего или отображающего состояние оборудования. Значение точки контроля, т.е. величина или форма сигнала является источником информации для системы управления. Эта информация "попадает" в систему при помощи аппаратного канала, т.е. точка контроля "прикрепляется" к определенному аппаратному каналу. Использование точки контроля позволяет в случае надобности для вычисления значений различных операторских каналов использовать значение одного аппаратного канала. И, наоборот, для вычисления значения одного операторского канала могут потребоваться значения нескольких точек контроля. Рассмотрим пример. Один канал АЦП измеряет сигнал, пропорциональный току в катушках магнита (привяжем к нему точку контроля iM1), а другой канал АЦП измеряет сигнал, пропорциональный напряжению на катушках магнита (привяжем к нему точку контроля vM1coil). Тогда, например, вычисляемый операторский канал pM1 (мощность, рассеиваемая в магните) связан с указанными точками контроля соотношением pM1= iM1* vM1coil. 2 Описание структуры каналов Канал характеризуется неким набором сущностей: имя канала, пересчетный коэффициент, состояние канала (используется или отключен) и т.д. Для различных типов каналов в базе данных имеются отдельные таблицы, поля (атрибуты) которых соответствуют этим сущностям. 2.1. Аппаратные каналы (DevChan) Данные из таблицы описания аппаратных каналов используются для настройки работы серверных программ и для формирования запросов к серверным программам, т.е. доступа к аппаратным каналам. Таблица содержит следующие поля: 1) Name – имя аппаратного канала, построенное иерархическим образом, полностью характеризует принадлежность данного канала к определенному серверу (системе) и устройству: Server.Dev.Chan. Полное имя каждого канала уникально и состоит из трех компонент, 308827778 -3- 1/26/2016 где Server – имя сервера (системы) управляемой установки, Dev – имя электронного устройства, Chan – имя канала устройства. Примеры полного имени аппаратного канала: Injector.DAC01.Out0, Injector.ADC01.In0. Примеры названий компоненты Chan: Out (0 – n) – выходной канал ЦАПа, , In – входной канал АЦП, Dout – канал цифрового вывода, Din – канал цифрового ввода, Start – каналкоманда для старта отработки устройства, Diap – канал настройки диапазона АЦП, и т.п. 2) Kind – вид аппаратного канала: mea – измерительный аналоговый, meb – измерительный бинарный, coa – управляющий аналоговый, cob – управляющий бинарный, tun – настроечный, com – команда, inf - информационный. 3) Rep – форма представления значения канала: int – целое 4х-байтное число, float – вещественное 4х-байтное число, int8 – байт, int16 - целое 2х-байтное число, int64 - целое 8ми-байтное число на вырост, text – текстовое поле. 4) Max – максимальное значение, допустимое для данного канала. 5) Min – минимальное значение, допустимое для данного канала. 6) Array – =1 - одночисленный канал, >1 – канал содержит массив значений. 7) Unit – ссылка на размерность аппаратного канала в таблице размерностей. 8) TimePhase – условный признак, определяющий фазу работы сервера по времени, во время которого сервер может обслуживать данный канал. Примеры: any – в любое время, ash – after shot, канал может быть обслужен внутри цикла после инжекции пучка, bsh – before shot, канал может быть обслужен внутри цикла после инжекции пучка, tab – запрещено обслуживать канал во время отработки ЦАПов по таблице 9) Avail – работоспособность канала: OK или BAD. 2.2. Операторские каналы Данные из таблицы описания операторских каналов используются для управления и наблюдения за физическими параметрами установки. Таблица описания операторских каналов содержит следующие поля: 1) Name – имя операторского канала, построенное иерархическим образом, полностью характеризует принадлежность данного канала к конкретной системе и устройству управляемой установки: Inst.Sys.Elem.Chan Полное имя каждого канала уникально и состоит из четырех компонент, где Inst – часть или установка (installation) комплекса, Sys – функциональная система, Elem – элемент системы, Chan – имя сигнала. Примеры полного имени операторского канала: 308827778 Injector.MagSys.M1.Iset, -4- 1/26/2016 Injector.VacSys.P1.Vac. 2) Kind – вид операторского канала. виды точек контроля (SignalPoints): сa – управляющий аналоговый, сb – управляющий бинарный, ma – измерительный аналоговый, mb – измерительный бинарный, вычисляемые каналы: mс – "измерительный" вычисляемый канал, значение которого определяется по значениям нескольких точек контроля; при этом точки контроля могут соответствовать как измерительным, так и управляющим аппаратным каналам; cс – "управляющий" вычисляемый канал, изменение значения которого требует изменения в определенной пропорции значений нескольких точек контроля, связанных с управляющими аппаратными каналами. Значение управляющего вычисляемого канала также определяется по значениям нескольких точек контроля. Различные управляющие вычисляемые каналы быть связаны друг с другом либо через воздействие на одни и те же точки контроля, либо значения каналов вычисляются с использованием значений одних и тех же точек контроля. 3) DataRep – форма представления значения канала: int – целое 4х-байтное число, float – вещественное 4х-байтное число, int8 – байт, int16 - целое 2х-байтное число, int64 - целое 8ми-байтное число на вырост, text – текстовое поле. 4) DevChan – ссылка на аппаратный канал, к которому "привязана" точка контроля (для простых операторских каналов). 5) Coef – для точки контроля коэффициент, переводящий значение аппаратного канала в значение, выраженное в физической величине параметра, соответствующего сигналу (ток, отклонение и т.п.): SigPointVal = DevVal / Coef + ShiftVal, где DevVal – значение, прочитанное из аппаратного канала или записанное в аппаратный канал, 6) ShiftVal – для точки контроля смещение для вычисления значения точки контроля: ShiftVal = SigPointVal – DevVal / Coef 7) Algorithm – для вычисляемого операторского канала имя файла, содержащего в текстовом формульном виде способ вычисления значения операторского канала с использованием имен точек контроля, пересчетных коэффициентов, смещений, и математических выражений, необходимых для вычислений. Для управляющего вычисляемого канала в файле также содержится алгоритм вычисления значений точек контроля, на которые воздействует данный канал, и ссылки на другие вычисляемые управляющие каналы, связанные через точки контроля с данным управляющим каналом (см. примеры алгоритмов в Приложении 1). 8) MaxVal – максимальное значение, допустимое для данного канала. 9) MinVal – минимальное значение, допустимое для данного канала. 10) OptVal – рекомендуемое значение канала по умолчанию (для канала управления). 11) OptModStep – рекомендуемое значение шага изменения канала (для канала управления). 308827778 -5- 1/26/2016 12) Avail – работоспособность канала: OK или BAD. 13) Unit – ссылка на размерность канала в таблице размерностей. 14) Check - тип int; способ проверки значения канала: =0 – NO, = 1 - Absolute - отличие в абсолютном значении, = 2 - Relative - относительное отклонение. 15) CkChan - ссылка на операторский канал, значение которого используется для сравнения при проверке значения данного канала. 16) CkValG - значение номинального отклонения от заданного значения ("зеленая" зона - Green): в пределах нормы, не требует никакого вмешательства. 17) CkValY – значение допустимого отклонения от заданного значения ("желтая" зона - Yellow): отклонение не приводит к серьезному нарушению режима работы. 18) CkValP – значение предельного отклонения от заданного значения ("фиолетовая" зона Purple): режим работы требует коррекции. Отклонение значения за "фиолетовую" зону означает попадание в "красную" зону. 19) GrValMax – значение верхнего предела шкалы для графика отображения значений данного канала. 20) GrValMin – значение нижнего предела шкалы для графика отображения значений данного канала. 21) OutRep – форма вывода значения канала по умолчанию (текст, кнопка, график, шкала, …) 22) OutFormat - формат вывода значения канала: строка типа %8.3f, %5.0f, ... 22) Label – развернутое обозначение канала (для пояснений назначения канала). 23) Tooltip - обозначение канала, "всплывающее" при наведении мыши. 24) Comment – комментарий. 25) CallTime – интервал времени по умолчанию, с которым рекомендуется обращаться к каналу для его наблюдения или журналирования. Представление данных в системе управления 3 3.1 Представление данных в сервере В сервере хранятся текущие значения аппаратных каналов. Значение аппаратного канала в сервере представляется либо целым 4х-байтным числом (int: ±2,147,483,648), например, код, содержащийся в устройстве, либо вещественным числом, выраженном в единицах размерности выходного или входного сигнала устройства (вольт, секунда, градус, кулон и т.п.). Вид представления значения аппаратного канала определяется типом устройства (драйвером) и указывается в описателе канала. Одно и то же устройство может иметь каналы обоих типов представления значений, например: выходное напряжение ЦАПа с интерполяцией имеет вещественное представление, а время отработки значения – целое представление. Каналы цифрового ввода/вывода в сервере представлены целым 4х-байтным числом в виде битового кода: 0/1 или значением всего регистра ввода/вывода. Для получения значений некоторых параметров ускорительных установок (бетатронные частоты, величина поля в магните, размер пучка) используются специальные приложения, реализующие сложные алгоритмы работы с аппаратурой и выполняющие различные 308827778 -6- 1/26/2016 математические преобразования данных (аппроксимация кривой определенного вида, фурьеанализ и т.п.). Для передачи данных из таких приложений в серверную программу используется универсальный механизм обмена: запись в виртуальный канал сервера. Например, чтение CCD, регистрирующей пятно от синхротронного излучения пучка, выделяется в отдельный процесс, в котором выполняются соответствующие действия и обработки данных, и из изображения извлекаются поперечные размеры пучка. Эти параметры (размеры пучка) описаны как виртуальные каналы. После получения значений процесс выставляет серверу запрос на запись их в соответствующие виртуальные каналы. 3.2 Представление данных в клиентских приложениях По запросу из сервера в клиентское приложение приходят значения аппаратных каналов, соответственно, из клиентского приложения в сервер также высылаются значения аппаратных каналов. Значения операторских каналов вычисляются из значений аппаратных каналов при помощи клиентской библиотеки, оформляющей и выполняющей запросы к серверу. Реализация вычисляемых операторских каналов и каналов-ручек делается при помощи простейшего «формульного языка», включающего операции вычислений, поддерживающего обозначения соответствующих аппаратных каналов, арифметические действия и локальные переменные. Значение операторского канала, как и аппаратного, представляется либо целым 4х-байтным числом, либо вещественным числом (double). Вид представления значения операторского канала указывается в описателе канала. 3.3 Представление данных в Базе Данных (БД) В общем случае все данные о конфигурации системы управления, в том числе и данные о каналах, хранятся в единой реляционной Базе Данных (БД). Предполагается, что сервером БД будет сервер PostgreSQL. Логически выделенные сущности системы управления (электронное устройство, шина связи, канал управления/измерения и т.п.) сохраняются в БД как объекты: для каждого типа объектов в БД существует отдельная таблица с их описанием. Кроме объектов в БД сохраняются различные объектные модели, включающие совокупности ссылок на отдельные объекты и характеризующие связи между объектами. Для каждого типа объектной модели существует своя отдельная таблица. Различные поля таблиц могут содержать данные любого типа: integer, real, varchar(n), text и т.д. Типы запросов к серверу 4 4.1 Запросы на чтение 4.1.1 Чтение одного значения из измерительного аппаратного канала Запрос на чтение канала АЦП или измерительного устройства другого типа (ВЦП, АЦПТ и т.п.) или канала цифрового ввода. Запрос может сопровождаться передачей настроечных параметров – имен и значений настроечных каналов, которые должны быть установлены для отработки данного запроса на чтение (например, время интегрирования АЦП, диапазон АЦП и т.п.). Список имен настроечных каналов можно получить из таблицы описания аппаратных каналов (см. 2.1) в виде списка настроечных каналов, относящихся к данному электронному устройству. В случае отсутствия в запросе настроечных параметров, или некоторых из них, чтение канала выполняется с теми настройками, какие уже установлены в устройстве. Серверная программа, при необходимости синхронизируясь с работой установки, передает запрос и настройки соответствующим драйверам. Драйверы, в определенной ситуации, также получают данные из устройств синхронно с работой установки. Например, для инжектора и бустера HITS максимальная частота обслуживания запросов, относящихся к устройствам, работающим синхронно с установкой (например, БИИП), составляет 10 Гц. 308827778 -7- 1/26/2016 4.1.2 Чтение массива чисел из измерительного аппаратного канала Запрос обрабатывается так же, как и в случае чтения одного числа. В настроечных параметрах запроса указывается с какого адреса и сколько значений требуется передать. 4.1.3 Чтение одного числа из измерительного аппаратного канала по подписке Запрос подразумевает либо регулярную высылку клиенту запрошенного значения, либо высылку значения в случае его отклонения от определенного значения на величину, превышающую заданную. Запрос циклически передается драйверу, который выполняет запрос и возвращает значение запрошенного канала серверу. Сервер принимает решение и высылает ответ запросившему клиенту. В случае потери связи с клиентом сервер прекращает обслуживать запрос. Настроечные параметры, аналогично случаю простого чтения измерительного канала, обрабатываются драйвером каждый раз при обработке запроса. Режим циклического чтения удобен в случае наблюдения за стабильностью работы устройств. В этом случае отсутствие циклической передачи запроса к серверу уменьшает загрузку сети и избавляет сервер от обработки принятого запроса. Для обеспечения строгой цикличности в режиме циклического чтения возможна предварительно установленная блокировка на чтение данного канала для других клиентских приложений. 4.1.4 Чтение массива чисел из измерительного аппаратного канала по подписке 4.1.5 Чтение одного числа из канала ЦАПа или управляющего устройства другого типа, либо из канала устройства цифрового вывода Помимо ЦАПов, управляющими устройствами могут служить преобразователь код-скважность, линия задержки и т.п. Сервер (если требуется, то синхронно с работой установки) передает запрос соответствующему драйверу, драйвер выполняет чтение и передает результат серверу. Сервер высылает ответ запросившему клиенту. 4.1.6 Чтение массива чисел из устройства Запрос предусмотрен для чтения из устройства массива данных, например: таблица отработки для ЦАПа с интерполяцией выходного сигнала. Запрос может содержать настроечную информацию, передаваемую в виде параметров, о том, какие данные нужно прочитать, например: из какого файла, с какой строки и сколько строк нужно прочитать из ЦАПа разработки В.Р. Козака. Обработка запроса выполняется драйвером устройства. 4.2 Запросы на запись 4.2.1 Запись одного числа в канал ЦАПа или управляющее устройство другого типа, либо в канал устройства цифрового вывода Клиентская программа заказывает запись некой величины, сервер делает проверку заносимого значения на максимум и минимум для данного аппаратного канала и передает значение на исполнение соответствующему драйверу устройства. В запросе также передается время, за которое должно быть отработано заносимое значение. Если есть необходимость, то происходит синхронизация передачи запроса драйверу с циклом работы установки. Драйвер заносит код в устройство и, если требуется, инициирует отработку значения в устройстве. После этого драйвер сообщает серверу результат отработки, а сервер высылает соответствующее сообщение клиенту. 308827778 -8- 1/26/2016 4.2.2 Запись массива чисел в устройство Запрос предусмотрен для передачи в устройство массива данных, например: таблица отработки для ЦАПа с интерполяцией выходного сигнала, таблица чисел для отработки ЦАПом с памятью (например, DDS разработки А. Селиванова). Запрос может содержать информацию о том, какие данные нужно записать в устройство, например: в какой файл, с какой строки и сколько строк нужно записать в ЦАП разработки В.Р. Козака. Обработка запроса и массива данных выполняется драйвером устройства. 4.3 Другие типы запросов к серверу 4.3.1 Запрос на блокировку/разблокировку канала Заказ блокировки данного канала для других клиентских приложений. В этом случае сервер высылает всем приложениям, заказывающим запись или чтение данного канала, или уже заказавшим ранее чтение, сообщение, содержащее информацию о клиентском приложении, наложившем блокировку на данный канал. Каждое клиентское приложение имеет свой приоритет на операцию блокировки/разблокировки. 308827778 -9- 1/26/2016 Приложение 1 Примеры алгоритмов вычисления операторских каналов Алгоритмы вычисления операторских каналов записаны в текстовом файле, имя которого указывается в описании каналов. Ниже приводятся примеры текстов управляющего вычисляемых каналов. алгоритмов вычислений для измерительного // // вычисление измерительного канала (энергия пучка линака) сhannel Inj.Linac.BeamParam.BeamEnergy input := Inj.Linac.Param.Voltage * Inj.Linac.BeamParam.Current * 0.03 // точка контроля Inj.Linac.Param.Voltage – напряжение ЛИНАКА (Мэв) // Inj.Linac.BeamParam.Current – ток пучка (A) // 0.03 – "длительность" пучка (мкс) (константа) // вычисление управляющего канала (хроматизм по Z) сhannel V4.Mag.SXZ.Z // вычисление "входного" значения канала input := V4.Mag.NES1.Iset * -1.818 + V4.Mag.SES1.Iset * -1.818 // вычисление добавок "выходных" значений канала output V4.Mag.NES1.Iset := this_ch * -0.275 output V4.Mag.SES1.Iset := this_ch * -0.275 relation 0 // указатель, что связанных каналов нет // указатель, что есть нормировка при вычислении // input/output значений на определенную величину norm 1 // указатель, что вычисление input делается после вычета // из текущих значений каналов неких опорных значений diff 1 // вычисление управляющего канала (бетатронная частота по X) сhannel V4.Mag.QXZ.X // вычисление "входного" значения канала и 308827778 - 10 - input := V4.Mag.EL3.Iset * -0.0027 + V4.Mag.EL4.Iset * 0.009 // вычисление добавок "выходных" значений канала output V4.Mag.El3.Iset := this_ch * 5.164 output V4.Mag.EL4.Iset := this_ch * 53.933 // указатель на связанные вычисляемые управляющие каналы relation V4.Mag.QXZ.Z norm 1 diff 1 // вычисление управляющего канала (бетатронная частота по Z) сhannel V4.Mag.QXZ.Z // вычисление "входного" значения канала input := V4.Mag.EL3.Iset * 0.018 + V4.Mag.EL4.Iset * -0.0009 // вычисление добавок "выходных" значений канала output V4.Mag.El3.Iset := this_ch * 107.866 output V4.Mag.EL4.Iset := this_ch * 15.491 // указатель на связанные вычисляемые управляющие каналы relation V4.Mag.QXZ.X norm 1 diff 1 1/26/2016