Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Rolich

Страницы: 1 2 [3] 4 5 6
31
Ваши вопросы / Данные в отчёте
« : 09 Декабря 2023, 21:03:28 »
Доброго всем времени суток
Добавил в существующий отчёт новые источники данных, значения по которым пишутся в базу с 09.12.2023
При попытке построения отчёта за даты ранее 09.12.2023 он не строится, висит в бесконечном цикле
Как сделать так, чтобы при формирования отчёта игнорировалось отсутствие данных в базе за более ранние периоды и в полях новых источников проставлялись ноли ?

32
Ваши вопросы / Re: Печать графиков
« : 29 Ноября 2023, 11:50:58 »
Да, из Web
Спасибо, буду ждать

33
Ваши вопросы / Re: Печать графиков
« : 27 Ноября 2023, 13:13:40 »
Проверил, галочка на этом пункте установлена, тем не менее сам график печатается на чёрном фоне

34
Ваши вопросы / Печать графиков
« : 27 Ноября 2023, 07:30:18 »
Добрый день, уважаемые коллеги
Сегодня в первый раз печатал графики, непосредственно из Scada и вот с чем столкнулся:
1. При масштабировании по умолчанию на лист не помещаются шкалы, приходится уменьшать масштаб до 83% (не критично, возможно особенности принтера)
2. Графики печатаются так же, как видятся на экране, т.е. на чёрном фоне, что ведёт к жуткому перерасходу тонера. Можно это как-то исправить ?
Спасибо

35
Спасибо, всё получилось !

36
Добрый день
То есть, если разместить код
StartPing('10.11.12.1',2000,Ping1);
StartPing('10.11.12.2',2000,Ping2);
StartPing('10.11.12.3',2000,Ping3);
в скрипте "Старт проекта", то переменные Ping1..Ping3 будут принимать значение True при наличии ответа от узла и False при отсутствии ?
Или всё-таки нужно добавлять обработку этих переменных в скрипте "Изменился пинг", добавляя дополнительные переменные для контроля наличия связи ?

37
Доброго всем времени суток
Подскажите, пожалуйста, как контролировать наличие связи с несколькими устройствами в локальной сети ?
Я так понял, что в скрипте "Старт проекта" нужно прописать что-то типа
StartPing('192.168.0.1',3000,device1), но будет ли это работать, есть device1 имеет тип boolean ?
Что нужно прописывать в скрипте по событию "Изменился пинг" ?
Спасибо

38
Большое спасибо !

39
Доброго всем времени суток
Вопрос подсчёта длительности событий решил путём накопления секунд событий нарастающим итогом, а потом вычисления их разности в отчёте
Теперь есть вопрос по форматированию выводимой информации
Сейчас используется выражение
{new DateTime().AddSeconds(Данные.Peremennaya_Prostoya).ToString("HH:mm:ss")}
Это работает, выводит значение в заданном формате времени
Но вот если отчёт строится за длительный период, значение длительности может переваливать за 24 часа и тогда значение формируется неправильно, при переходе через 24 часа обнуляется
Как сделать так, чтобы отображалось фактическое количество часов простоя, более 24 часа ?

40
Тут не получилось, отписался в личку

41
Да, это помогло, спасибо !

42
Доброго всем времени суток
Имеется битовая переменная, фиксирующая включение/отключение агрегата
В системе отчётов стоит задача отображать количество включений и длительность работы, для чего в источник данных эта переменная внесена в признаками "включения" и "время вкл"
Время простоя отображается с использованием скрипта
{(int)Данные.var1.TotalHours + ":" +(Данные.var1.Minutes).ToString("00")}
Как отобразить количество включений ?

43
Добрый день, уважаемые форумчане
В проекте имеется глобальная переменная, типа DateTime, в которую несколько раз в сутки записывается длительность определённых событий
Вопрос: как подсчитать общую длительность события по этой переменной в отчёте ?

44
Доброго всем времени суток
Решил проблему чуть более элегантно, без костылей с созданием таблиц и сообщениями.
Суть идеи - в "отложенной" записи значений переменной остановки.
Это вполне решает задачу подсчёта количества остановок от 3 до 5 минут и их длительности штатными средствами Simple Scada
Привожу код, может кому-то будет полезно для решения аналогичной задачи:
Код: (delphi)
K := TimerGetState(Timer_prostoya); // проверяем статус работы таймера простоя

// если переменная механизма в false и таймер простоя не запущен - запускаем его
if ((Var1.value = false) and (K = -1)) then
  TimerStart(Timer_prostoya, 0);

// если механизм включился и таймер простоя в диапазоне 180-300 секунд
if ((Var1.value = true) and ((SecondsBetween(0, Timer_prostoya.AsDateTime) > 180) and
   (SecondsBetween(0, Timer_prostoya.AsDateTime) < 300))) then
begin
  Var2.value := true;  // взводим переменную простоя 3-5 минут
  Dlitelnost_prostoya.value := SecondsBetween(0, Timer_prostoya);  // фиксируем длительность произошедшего простоя
  TimerStart(Timer_3_5, 0);  // стартуем таймер простоя 3-5 минут
end;

// если таймер 3-5 минут достиг значения фактического простоя
if SecondsBetween(0, Timer_3_5.AsDateTime) = Dlitelnost_prostoya.value then
begin
  Dlitelnost_prostoya.value := 0;  // обнулили переменную длительности
  TimerReset(Timer_3_5);  // остановили таймер простоя 3-5 минут
  Var2.value := false;    // сбросили переменную простоя 3-5 минут
end;

if ((Var1.value = true) and (K = 1)) then
  TimerReset(Timer_prostoya); // реальный простой окончен, сбрасываем таймер
Спасибо всем за участие в дискуссии, было познавательно !

45
Я понял своё заблуждение касательно ArchiveValueByTime, оно не запишет мне значение Var1 в указанное время, а только прочитает значение AlwTRue/False
Понятно, что задачу можно решить только через БД
Но остаётся ещё вопрос: можно ли работать со значением Var1 в основной БД Simple SCADA, не создавая свои таблицы ?

Страницы: 1 2 [3] 4 5 6