Стартовая страница › Форумы › Понять, как работает ПО › Использование формул › Отсутствие данных
Помечено: Быстрый шлюз, Формулы
- В этой теме 46 ответов, 5 участников, последнее обновление 2 года, 8 месяцев назад сделано Mikhail.
-
АвторСообщения
-
13.07.2021 в 08:20 #20363OlegSolУчастник
https://drive.google.com/file/d/1C2ozVcTuiKAWSx8ZBvwwz9rp4kwVpm0K/view?usp=sharing
Вопрос знатокам. Как получить на графике разрыв при отсутствии сигнала от удаленной SCADA? Центральная SCADA получает значения через Бsстрый шлюз с удаленной SCADA. Но при отсутствии сигнала центральная SCADA выводит последнее полученное значение по каналам. Хочется получить визуальный разрыв.
Второе, не могу получить архивные значения с удаленной базы после восстановления связи. Разрыв по идее должен заполнится.
На Скрине разрыв получен остановкой центрального сервера.- Эта тема была изменена 2 года, 8 месяцев назад от Mikhail.
13.07.2021 в 09:37 #20364RomirosУчастникКак получить на графике разрыв при отсутствии сигнала от удаленной SCADA?
Возможно это задается параметром «Недостоверность при неактивности» в настройках принимающего сервера.
13.07.2021 в 10:07 #20365OlegSolУчастникне работает данный параметр записи. Входной канал принимающей по быстрому шлюзу SCADA просто висит при обрывке связи на последнем переданном значении
13.07.2021 в 10:20 #20366RomirosУчастникА тип канала Телеизмерение? По истечении заданного времени статус меняется? Возможно он просто приобретает статус 5 и продолжает рисоваться на графике. Может есть смысл использовать в этом канале формулу: Val();Stat()==5?0:Stat()
13.07.2021 в 10:54 #20367OlegSolУчастникДа, все каналы идут в статус 5. Я по данному значению и определяю в виртуальном канале наличие связи с удаленной SCADA
public double MyFunc2()
{
int alarmCnt = 0;for (int cnlNum = 101; cnlNum <= 110; cnlNum++)
{
if (Stat(cnlNum) == 5 ^ Stat(cnlNum) == 0)
alarmCnt++;if (alarmCnt == 3)
return 0; // Нет
}return 1; // Есть
}
Спасибо за формулу, попробую.
А что значит значения статусов, 0,1,5,13 и пр??13.07.2021 в 11:15 #20368RomirosУчастникПосмотрите в Администраторе «Справочники» -> «Типы событий»
13.07.2021 в 11:33 #20369OlegSolУчастникVal();Stat()==5?0:Stat() не работает.
о- это тоже значение на графике.Мне нужно что то подобное, помогите ))
Val(112) ==1 ? Cnl : NULL
112 канал встает в 0 при 30 сек обрыве связи. КАК дать в каналы на графике -NULL ??
13.07.2021 в 11:52 #20370RomirosУчастникreturn Double.NaN
Но вообще при статусе 0 должен быть прочерк. Проверьте статусы.
13.07.2021 в 11:56 #20371OlegSolУчастникПри отсутствии связи статус у каналов, которые получают данные с удаленной SCADA по Быстрому шлюзу встают в 5((
13.07.2021 в 13:08 #20372RomirosУчастникПопробуйте эту формулу: CnlStat==5?Double.NaN:Cnl
Если нужен будет и статус, то: CnlStat==5?Double.NaN:Cnl;CnlStat==5?0:CnlStat13.07.2021 в 13:53 #20373OlegSolУчастникОбе не работают.
Каналы куда передаются данные с удаленного сервера — мертвые. У них нет никаких линий связи. Просто в них закидывается удаленно значение и все. При этом встает значение переданное и статус 1. При обрыве- остается цифра, статус меняется на 5. Все.
Единственное, чем я мог сменить статус на ноль это
Val();Stat()==5? SetStat(101,0):Stat()Но при восстановлении связи статус 0 так и остается
13.07.2021 в 14:05 #20374RomirosУчастникВидимо потому-что значение передается из вне, необходимо запускать дополнительный расчет после получения данных каналом. SetStat выполняется после присвоения значения и статуса тем самым заменяя его. Видимо это единственный вариант.
13.07.2021 в 14:11 #20375OlegSolУчастникПочему о после отработки SetStat и сброса статуса на ноль, дальнейшее поступление данных с удаленного сервера не меняют значение статуса на 1
13.07.2021 в 14:47 #20376RomirosУчастникПопробуйте так, вроде работает
Cnl;CnlStat!=5?CnlStat:SetStat(CnlNum,0)13.07.2021 в 15:27 #20377OlegSolУчастникБесполезно. Спасибо за попытки.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.