Специальная отработка типов вызова 12-16
Кроме атрибутов, которые имеют каналы всех классов (см. Общие атрибуты каналов ), каналы класса CALL имеют специфические атрибуты:
Тип вызова (123, What) (см. ниже);
Параметр (34, FPrnt) – уточняет функциональное назначение канала при некоторых типах вызова;
Интервал выборки (34, FPrnt) – выбирается из списка sql_call.tmc. Этот атрибут используется для задания интервала выборки их архива при соответствующих типах вызова (см. Выборка и обработка данных SIAD );
Активен (40, ACTIVE) – при отработке свойства вызов канала CALL этот атрибут принимает значение 1, в противном случае он равен 0;
Запись в файл (129, WFile) – при посылке в этот атрибут неотрицательного значения V текущие значения аргументов канала записываются в текстовый файл <имя канала>_<N>.dat (N – целая часть V; если N=0, файл имеет имя <имя канала>.dat), каждая строка которого содержит обозначение аргумента и его значение.
В NTFS: если имя канала содержит двоеточие (т.е. имеет вид <строка1>:<строка2>), то текущие значения аргументов канала записываются в секцию N файла с именем <строка1>.
Чтение из файла (128, RFile) – при посылке в этот атрибут неотрицательного значения V в аргументы канала считываются значения из файла <имя канала>_<N>.dat или из файла <имя канала>.dat или из секции N файла с именем <строка1> без расширения (см. выше описание атрибута 129, WFile).
Единовременно может быть отработано чтение из файла или запись в файл только для одного канала.
Начальное значение атрибутов Тип вызова, Параметр и Интервал выборки задается в редакторе канала.
Привязка аргументов каналов CALL имеет особенности (см. Связь через аргументы ).
В профайлере канал CALL индицируется как C1_Control (атрибут 126, TsT), подтип – 10, номер дополнения к подтипу соответствует номеру типа вызова (DEC) (см. Подтип 10 ).
Атрибут Тип вызова определяет функциональное назначение канала (в ряде случаев уточняется значением атрибута Параметр). Ниже при описании каждого типа вызова в скобках слева указан его номер (задан в call_type.tmc) – для изменения типа вызова в реальном времени это значение нужно присвоить атрибуту (123, What) (работает для типов вызова с номерами больше 14):
(0) No – запрет пересчета канала;
(1) Program – вызов программы, см. Выполнение программы в реальном времени ;
(2) SQLQuery – вызов связи с БД, см. Выполнение SQL-запросов в реальном времени ;
(3) Document(Report) – генерация документа (отчета), см. Генерация файлов документов ;
(4) Screen – вызов графического экрана; см. Особенности вызова графического экрана ;
(5) Panel – вызов графической панели, см. Графические панели ;
(7) Mnemo – вызов мнемосхемы, см. Мнемосхемы ;
(8) ChGroupReq – см. Канал CALL.ChGroupReq ;
(9) TableFunction – каналы OUTPUT с этим типом вызова задают табличные функции, используемые FBD-блоками LINTER (см. Раздел ‘Алгебраические’ );
(10) LongFromBits – функция канала зависит от атрибута Параметр:
Параметр = 0 – формирование битов аппаратного значения по значениям аргументов канала (анализируется до 32 аргументов):
– бит принимает значение 0, если аргумент, соответствующий ему по номеру, равен 0 или отсутствует;
– бит принимает значение 1, если аргумент, соответствующий ему по номеру, отличен от 0;
Параметр = 2 – биты, привязанные к аргументам типа OUTPUT, упаковываются (операцией сдвига) в число, записываемое в ближайший аргумент типа INPUT. Количество битов в числе – не больше 32;
Параметр = 6 – если аргументы типа OUTPUT привязаны к атрибутам, объединяющим биты (2, 4 и 8), то упаковка в число производится адекватно привязкам. Число записывается в ближайший аргумент типа INPUT. Количество битов в числе – не больше 32;
(11) BitsFromLong – канал выполняет функции, обратные функциям канала (10) LongFromBits:
Параметр = 0 – формирование значений аргументов (0 или 1) по аппаратному значению канала;
Параметр = 2 – если аргумент имеет тип INPUT, то он распаковывается в последующие аргументы OUTPUT (до следующего аргумента типа INPUT);
Параметр = 6 – аналог (10) LongFromBits с Параметр=6;
Параметр = 1, 3, 7 – аналог Параметр = 0, 2, 6 со следующим дополнением: если аргументы INPUT и OUTPUT привязаны к атрибутам каналов и аргумент OUTPUT должен изменить привязанный атрибут, то в привязанный к нему канал копируются атрибуты 45 и достоверность канала, привязанного к соответствующему атрибуту типа INPUT;
(12) = , (13) <, (14) <= – при этих типах вызова значение нулевого аргумента канала сравнивается со значениями всех остальных аргументов, а также анализируются привязки аргументов:
Параметр=0 – если хотя бы один результат сравнения истинен, устанавливается бит 4 (0x10) A. Если все результаты сравнения истинны, дополнительно устанавливается бит 0 (0x1) A;
значение младшего полубайта атрибута Параметр равно 1 – биты 0 и 4 A имеют то же назначение. Бит 7 (0x80) A устанавливается, если хотя бы в одном из каналов, привязанных к аргументам, установлен признак аппаратной недостоверности. Бит 8 (0x100) A устанавливается, если хотя бы в одном из привязанных каналов установлен признак программной недостоверности. R канала типа INPUT индицирует число каналов, которые удовлетворяют условию. При изменении R или A устанавливается b14 (бит 0 атрибута 46) и фиксируется время (атрибут 45);
(15) Sum – см. Канал CALL.Sum ;
(16) Set – при этом типе вызова реальное значение канала (0...65535) присваивается всем его аргументам (тип аргументов должен быть OUT или IN/OUT, тип данных – любой целочисленный или STRING; в последнем случае в аргумент записывается символ, код которого равен реальному значению канала);
Каналы CALL с типами вызова 12-16 могут быть сконфигурированы и отработаны специальным образом – см. ниже Специальная отработка типов вызова 12-16.
(17) RT_Statistics – статистическая обработка значений каналов. Для корректной работы канала CALL с этим типом вызова его аргументы создаются группами по 6. К первому по порядку аргументу типа IN группы привязывается анализируемый канал (ch1), в последующие 5 аргументов типа OUT или IN/OUT при отработке канала CALL записываются результаты статистической обработки:
сумма значений канала ch1;
число суммирований;
среднее значение канала ch1;
максимальное значение канала ch1;
минимальное значение канала ch1.
Для сброса результата статистической обработки можно присвоить 0 соответствующему аргументу или установить соответствующий бит значения канала RT_Statistics:
бит 0 – сброс суммы и числа суммирований;
бит 1 – сброс максимального значения;
бит 2 – сброс минимального значения;
(18) Collection_1 – многократная подмена привязок аргументов одного канала класса CALL с его отработкой после каждой перепривязки на одном такте пересчета. К нулевому аргументу канала Collection_1 привязывается канал класса CALL (пусть он имеет имя call1). Пусть нулевой аргумент канала call1 привязан к атрибуту attr некоторого канала ch2, при этом в таблице аргументов канала call1 существуют другие аргументы, привязанные к атрибуту attr или иным атрибутам канала ch2. При пересчете канала Collection_1, в его таблице аргументов ищется первая по списку привязка аргумента к каналу не класса CALL (пусть найденный таким образом канал имеет имя ch1, атрибут не имеет значения), после чего все связи аргументов канала call1 с каналом ch2 заменяются на связи с каналом ch1 с сохранением ранее выбранных атрибутов (т.е., например, нулевой аргумент канала call1 привяжется к атрибуту attr канала ch1), и канал call1 отрабатывается. Далее в таблице аргументов канала Collection_1 ищется следующая по списку привязка аргумента к каналу не класса CALL, аргументы канала call1 перепривязываются, и канал call1 отрабатывается – и т.д. до конца списка аргументов канала Collection_1;
(19) Collection_2 – аналог Collection_1 для трех каналов класса CALL. Каналы класса CALL должны быть привязаны к аргументам канала Collection_2 начиная с нулевого;
(20) Move – Параметр=0 – присвоение значения аргумента типа IN всем последующим аргументам типа OUT или IN/OUT.
Параметр=4:
если к аргументу типа IN привязан атрибут 0, R канала CALL.ChGroupReq (call_1), а к последующему аргументу типа OUT или IN/OUT привязан атрибут 2, In другого канала CALL.ChGroupReq (call_2), то значения аргументов call_1 копируются в соответствующие аргументы call_2;
если к аргументу типа IN привязан атрибут 45, T канала CALL.TVC (tvc_1), а к последующему аргументу типа OUT или IN/OUT привязан атрибут 45, T другого канала CALL.TVC (tvc_2), то все метки времени из tvc_1 копируются в tvc_2;
если к аргументу типа IN привязан атрибут m (m=142, 143…) канала CALL.TVC (tvc_1), а к последующему аргументу типа OUT или IN/OUT привязан атрибут k (k=142, 143…) другого канала CALL.TVC (tvc_2), то все аргументы, задающие кривую (m-142) в канале tvc_1, копируются в аргументы, задающие кривую (k-142) в канале tvc_2;
(21) MResource_1 – используется при решении задач T-FACTORY (см. Канал CALL с типом вызова MRESOURCE_1 );
(22) MResource_2 – зарезервировано;
(23) LArc0, (24) LArc1 – см. Индивидуальный архив ;
(25) DifSnap – см. Дифференциальный срез локального архива ;
(26) LocalSnap1, (27) LocalSnap2, (28) LocalSnap3 – срез локального архива с номером 1, 2 и 3 соответственно (см. Срез локального архива );
(29) LocalStatistics – см. Обработка данных локального архива по каналу ;
(30) LocalQuick – см. Быстрая выборка данных из локального архива ;
(31) LocalList – см. Выборка данных из локального архива по каналу ;
(32) LocalQuick-T – см. Расширенная быстрая выборка данных из локального архива ;
(33) MUX – см. Канал CALL.MUX ;
(34) DifSnapSums – см. Дифференциальный срез локального архива ;
(41) RemSIADauto – см. Запрос данных удаленного архива ;
(42) RemoteSIAD – см. Копирование данных из удаленных архивов в локальные ;
(43) RemoteStatistics – см. Обработка данных удаленного архива по каналу ;
(44) RemoteList – см. Выборка данных из удаленного архива по каналу ;
(45) RemoteSnap – см. Срез удаленного архива ;
(46) RemoteSIADSnap – см. Срез удаленного архива с записью в локальный архив ;
(47) RemArc0, (48) RemArc1 – см. Запрос удаленного индивидуального архива ;
(49) RemArgument – в аргументы канала CALL с данным типом вызова записываются значения аргументов привязанного канала CALL удаленного узла (число аргументов и их тип данных должны совпадать у каналов). Тип канала CALL.RemArgument должен быть INPUT, тип пересчета – цикл IDLE;
(50) AsyncCollection – см. Канал CALL.AsyncCollection ;
(52) Writer – принудительная запись в SIAD (см. Канал CALL.Writer );
(53) DI_DO – см. Канал CALL.DI_DO ;
(54) MLink – канал CALL с этим типом вызова в основном предназначен для обмена с мониторами версии 5. Если тип канала – INPUT, он запрашивает по M-LINK N значений (N – число аргументов канала CALL) у узла с номером, заданным атрибутом Параметр канала CALL, по каналу с индексом, заданным значением канала CALL. Полученные значения записываются в аргументы канала CALL.
Если канал CALL имеет тип OUTPUT, в нем может быть создано до 16 пар аргументов. Первый аргумент пары задает индекс канала, в который требуется передать по M-LINK значение, заданное вторым аргументом пары. Номер бита значения канала CALL, равный 1, задает номер пары для отработки. При отработке канала CALL отрабатывается одна пара, заданная самым младшим битом из всех, равных 1, после чего этот бит сбрасывается;
(56) TVarray – копирование значений в заданное время. Аргументы канала создаются группами по 3. Абсолютное время Ti копирования arg2i в arg3i зависит от arg1i, периода пересчета канала Tch и номера группы i=0,1.... Алгоритм зависит от атрибута Параметр; команда отработки канала – In=1, в процессе отработки In (R) индицирует номер обрабатываемой группы аргументов, по завершении отработки In=0 автоматически. Если бит 0 атрибута Параметр равен 1, по завершении отработки In=1 (циклическая отработка).
Если arg1i меньше числа секунд в году или не заданы, при экспорте проекта автоматически устанавливается бит 4 (0x10) атрибута Параметр, и
Если бит 4 (0x10) атрибута Параметр равен нулю, arg1i (arg1i >= arg1i-1) приблизительно определяют абсолютные времена копирования (в этом случае только аргументы могут быть привязаны к arg1i):
(57) EvReg – см. Регистратор аварийных событий ;
(58) Exec – запуск приложения Windows XP при выполнении следующих условий:
значение канала отлично от 0;
в канале создан хотя бы один аргумент.
Если Параметр = 0, имя канала задает имя exe-файла, атрибут 80, CMNT – путь к файлу.
Если Параметр = 1, имя канала задает путь и имя exe-файла, атрибут 80, CMNT – параметры запуска;
(59) TVC – см. Канал CALL.TVC ;
(60) OtherProj – см. Канал CALL.OtherProj ;
(61) STRING – см. Запись длинных строк в канал CALL ;
(64) ObjModel – зарезервировано;
(65) ObjZ – зарезервировано;
(66) ObjKlapan – зарезервировано;
(67) ObjPReg – выбор закона управления (FBD-блока) с помощью посылки в канал значения от 100 до 300. Эти значения соответствуют описаниям FBD-блоков в файле dodef.cfg;
(124) AS_DOCUMENT – см. Отчеты АСКУЭ ;
(125) AS_DATA – см. Отчеты АСКУЭ ;
(126) EXCEPT_DAY – см. Канал CALL.EXCEPT_DAY ;
(127) EMAIL – см. Канал CALL.EMAIL .
Специальная отработка типов вызова 12-16
Каналы CALL с типами вызова 12-14 при наличии двух аргументов (нулевой – константа сравнения, первый – канал-образец) и типами вызова 15-16 при наличии одного аргумента (канал-образец) пересчитываются и отрабатываются специальным образом.
Если монитор обнаруживает такой канал:
если значение битов 4-7 (маска 0xF0) атрибута Параметр канала равно 0, МРВ выбирает из базы каналов узла все каналы, которые связаны с тем же оборудованием, что и канал-образец, создает дополнительные аргументы канала CALL, привязывает их к найденным каналам и затем отрабатывает функцию канала CALL;
если значение битов 4-7 (маска 0xF0) атрибута Параметр канала равно 1, МРВ выбирает из базы каналов узла все каналы (за исключением каналов CALL.12-16), имена которых совпадают с именем канала CALL (см. прим. ниже), создает дополнительные аргументы канала CALL, привязывает их к найденным каналам и затем отрабатывает функцию канала CALL;
если значение битов 4-7 (маска 0xF0) атрибута Параметр канала равно 2, МРВ выбирает из базы каналов узла все каналы (за исключением каналов CALL.12-16), кодировка которых совпадает с кодировкой канала CALL (см. прим. ниже), создает дополнительные аргументы канала CALL, привязывает их к найденным каналам и затем отрабатывает функцию канала CALL;
если значение битов 4-7 (маска 0xF0) атрибута Параметр канала равно 4, МРВ выбирает из базы каналов узла все каналы CALL.12-16, кодировка которых совпадает с кодировкой канала CALL (см. прим. ниже), создает дополнительные аргументы канала CALL, привязывает их к найденным каналам и затем отрабатывает функцию канала CALL.
Примечание. При посимвольном сравнении строк:
сравнивается N символов, где N – длина имени (кодировки) канала. Следствия:
аргументы не добавляются, если имя (кодировка) канала длиннее, чем имя (кодировка) канала, обнаруженного в базе;
аргументы добавляются, если имя (кодировка) канала короче, чем имя (кодировка) канала, обнаруженного в базе, и сравнение N символов истинно;
сравнение с символом "?" всегда истинно.