Ответы в темах
-
АвторЗаписи
-
kustarУчастникЗадача простая.
Я по SNMP от сетевого устройства (коммутатора, маршрутизатора etc) получаю SysUpTime в тиках и значения накопительных счетчиков по интерфейсам этих устройств — ifInOctets, ifOutOctets, etc. Задача — посчитать и показать на схеме мгновенную скорость по интерфейсам. Для этого и нужны текущее и предыдущее значение.
Проблема, собственно, в том, что некоторые сетевые устройства выдают SysUpTime периодом в 1 тик (0,01 сек), а некоторые неторопливые — с периодом аж 1500 тиков (15 сек.)
Четыре входных канала делал только для понимания процесса, достаточно двух.
kustarУчастникДобрый день, Михаил!
Коммуникатором регулировать не очень удобно. КП будет много (сетевое оборудование корпоративной сети), частота опроса будет падать по мере добавления новых КП. А как сделать цикл для дорасчетных каналов? Можно ли его синхронизировать чем-нибудь?
kustarУчастникДа, конечно, можно и с else:
public double Trigger(double sut, int stat, int n, int m, int l, int k)
{
if (sut != Val(n))
{
SetData(k, Val(l), Stat(l));
SetData(l, Val(m), Stat(m));
SetData(m, Val(n), Stat(n));
SetData(n, sut, stat);
}
else
{
SetData(k, Val(k), Stat(k));
SetData(l, Val(l), Stat(l));
SetData(m, Val(m), Stat(m));
SetData(n, Val(n), Stat(n));
}
return sut;
}
Для понимания происходящего сделал для сдвига 4 канала.
Номер канала, в котором вызывается формула, не влияет на результат.
То есть, не имеет значения, работает ли сначала формула, а потом считывается «текущий» канал, являющийся источником данных для сдвига, или наоборот — сначала вычисляется «текущий» канал, а потом канал с формулой.
С четырьмя каналами ситуация стала еще более запутанной.
На сервере сейчас порядка 600 рабочих входных каналов.
Коммуникатор (SNMP) поставляет данные с периодичностью ок 2 сек. — стандартный MIB’овский SysUpTime.
Отображаю значения всех каналов на схеме. Наблюдаю периодичность обновления схемы ок. 15 секунд.
На схеме значения текущего канала и канала n совпадают. В каналах m, l и k — некие промежуточные значения SysUpTime, которые не появляются на схеме в 15-ти секундном режиме обновления.
Выходит, значения каналов записываются (или вычисляются) быстрее, чем обновляется схема?
И формула работает, только с другой «тактовой» частотой, намного быстрее, чем обновляется схема?
kustarУчастникСтатический IP на 4G у Вас публичный?
Если наподобие 10.120.хх.хх, то работать не будет.
Ping до сервера проходит?СКАДА с бука со «свистком» работает запросто.
kustarУчастникТак просто!
Спасибо, Михаил!
kustarУчастникС работой формулы в канале управления и с передачей значения входному каналу все понятно. Это работает.
Я говорю о возможности передачи по каналу управления значения, введенного вручную оператором в каком-нибудь TestBox, а не выбранного из списка.
kustarУчастникМихаил, ну не томите! 🙂
Есть в Rapid готовый инструмент?
kustarУчастникОк, это работает!
Михаил, ручной ввод значений возможен?
kustarУчастникВ идеале нужна возможность ввода значения оператором (в окошке, терминале) и передача этого значения в дорасчетные входные каналы.
Самое простое: получаю с устройства текущее значение объема жидкости. Необходим ручной ввод значения плотности для расчета (а также отображения и сохранения истории) массы этой самой жидкости.
Возможности такого ввода пока не вижу. Можно для начала организовать ввод нескольких значений плотности из списка (перечня).
Вопрос в том, как передать значение из команды в дорасчетный входной канал?Кстати, первая часть задачи тоже актуальна!
kustarУчастникСпасибо, Михаил! Все ОК.
kustarУчастникВопрос об ошибке при обновлении данных снимаю.
Мои эксперименты с командами привели к непреднамеренному изменению данных в регистрах устройства.
В частности, один из параметров стол равен нулю, а у меня в СКАДЕ он используется в одном из дорасчетных каналов в знаменателе формулы.
Вылечил перезагрузкой самого устройства.
Видимо, деление на ноль пагубно влияет на логику работы сервера.Скорости добавить, увы, не могу. Интернет канал до промысла дохленький.
По дате текущего среза: посмотрел логи за предыдущие дни — там тоже есть подобные сообщения. Видимых проблем это не вызывало.
kustarУчастникБлагодарю, коллеги! 🙂
kustarУчастникЗаработало!
Значения ShowNumber в таблице Format файла ScadaBase.sdf для форматов ASCII, UNICODE и прочих «нецифровых» были True. Сделал False по образцу базы из новой версии.
Работает вывод ASCII ( 8 зн.), UNICODE (4 зн.) и DateTime.
Количество чаров ограничено 8 байтами double?
Нужно, конечно, больше. Делать два (и больше) канала, выводить их на схему друг за другом? Фонты в разных браузерах будут выглядеть по-разному. Будет кривовато.
Впрочем, «ВКЛ» и «ВЫКЛ» уже можно! 🙂
kustarУчастникМихаил, правильно ли я понимаю?
ВебСтанция должна выводить на схему:
1. значение в десятичном формате, если значение «Формат» не выбрано
и
2. знак (Char), соответствующий этому значению, если в ячейке «Формат» выбрано «Текст ASCII».
Дело в том, что я по шагам апгрейдил всю СКАДУ до крайней (текущей) версии, просто последовательно перенося директории со всеми новыми приложениями в рабочую директорию на сервере. Возможно, что-то при этом упустил. Так, например, форматы и формулы импортировал из новой версии. А может быть надо еще и «Величины» и «Размерность»?
Мой результат — вывод дорасчетного ТИ со значением в ячейке формулы 0х42 — 66, независимо от значения ячейки «Формат» (пустое либо «Текст ASCII» либо «Текст UNICODE»). До собственно формул дело еще не дошло.
Прошу помочь.
kustarУчастникПонятно. Где поподробнее почитать про статусы?
-
АвторЗаписи