Видно в шестой версии сдвигов по данному вопросу не произошло. Понадобилось реализовать следующий алгоритм: 1. Обнулить счетчик (I7080); 2. Сформировать измерительное окно с помощью платы счетчиков установленной в компьютере; 3. По закрытию измерительного окна считать данные со счетчика; и повторить цикл...
Проблема одна - я не могу определить момент считывания данных со счетчика, если они на конец цикла совпали со значением на предыдущем цикле. Мне приходится делать паузу в 3 секунды, чтобы гарантированно получить новые данные с 46-ти счетчиков (это в три раза большее время, чем мне хотелось бы). То же самое касается выходных каналов (например сброса счетчика, хотя в данной конкретной ситуации это не очень важно) - я бы не хотел менять его значение, а отрабатывать текущее. Отрабатывать то его я могу, но факт отработки зафиксировать не получается, т.к. время изменения канала не изменяется при его отработке. Так вот, я считаю что это не верно! Раз уж данные опросили, то они актуальны на момент опроса и время канала должно измениться. Конечно при этом некорректно называть его временем изменения, ну введите тогда ещё один атрибут - время отработки! (или счетчик отработок)
Короче, нужен какой-то атрибут указывающий на отработку канала. EXEC не годится! Он практически не отлавливается, - если отработка происходит быстрее времени пересчета узла, то часть каналов не видит его изменения. Сообщения / Posts 340 | Из / From: Russia
| IP / IP: IP адрес / IP address |
отправлено / posted
1) Формировать по закрытию окна свой собственный флаг в канале. 2) Ловить EXEC на Input'е не нужно - если там 0 после пункта №1 - это уже означает, что упешно отработан. Тогда можно и свой собственный флаг сбросить в ноль до следующей операции.
Сообщения / Posts 17322 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Kramarenko Stanislav
Forum Professor / Завсегдатай форума
Участник № / Member № 119
отправлено / posted
Т.е. можно сделать так: (?) 1) определяем конец измерительного окна 2) программа трансляции в каждом канале счетчика устанавливает своему счетчику EXEC:=1 и флаг "отработка":=1 3) далее, если [(EXEC==0) and ("отработка"==1)], то "отработка":=0 и новые данные готовы.
Сообщения / Posts 340 | Из / From: Russia
| IP / IP: IP адрес / IP address |