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

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

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

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


Сообщения - Simple Scada

Страницы: [1] 2 3 ... 20
1
Здравствуйте.

К объекту можно привязать только две переменные (основная и доп. переменная) и отслеживать их изменение. Отслеживать изменение более двух переменных можно только в скрипте с типом события "Изменились переменные".

Самый простой и правильный способ для описанной задачи – это создать на ПЛК отдельную Boolean переменную, которая будет менять свое значение в зависимости от значений указанных трех переменных. Затем использовать полученную переменную в скада-системе для изменения видимости объекта.

Если на ПЛК это сделать не получается, то можно попробовать реализовать то же самое в скада-системе через скрипт "Изменились переменные" и затем использовать полученную переменную для изменения видимости объекта.

Для этого необходимо создать скрипт с типом события "Изменились переменные", добавить в него переменные "tag1", "tag2", "tag3" и использовать следующий код:
Код: (delphi)
begin
  vrBlink.Value := (tag1.AsBool) and (tag2.AsBool) and (tag3.AsBool);
end.
Далее переменную "vrBlink" нужно связать с требуемым объектом и на событие "OnDataChange" использовать скрипт:
Код: (delphi)
begin
  if Sender is TM_Object then    // проверяем, что Sender это объект
    with Sender as TM_Object do  // приводим Sender к типу "TM_Object"
      Visible := AsBool;         // изменить видимость объекта в зависимости от значения связанной с ним переменной
end.

2
Здравствуйте.

Какого-либо штатного функционала для описанной задачи нет.

В данном случае можно изначально разбить данные на четыре отдельных источника данных, создать в отчете четыре диаграммы и связать каждую диаграмму со своим источником. Далее в скрипте для формирования отчета задавать необходимые интервалы времени (методы для работы с датой/временем описаны по ссылке) для каждого источника. Например:
Код: (delphi)
var
  aReport: TM_Report;
begin
  // задаем период для первого источника данных
  vrTimeBeginChart1.Value := vrTimeBegin.AsDateTime;
  vrTimeEndChart1.Value := IncHour(vrTimeBegin.AsDateTime, 6);

  // задаем период для второго источника данных
  vrTimeBeginChart2.Value := vrTimeEndChart1.AsDateTime;
  vrTimeEndChart2.Value := IncHour(vrTimeEndChart1.AsDateTime, 6);

  // и т.д.

  aReport := ReportBuild('Отчет');
  aReport.View(GetClientName);
end.
, где "vrTimeBegin" – начало периода времени, за который требуется сформировать отчёт, "vrTimeBeginChart1" – начало периода времени для первого источника данных, "vrTimeEndChart1" – конец периода времени для первого источника данных и т.д.

Также, для страницы отчета можно использовать альбомную ориентацию, что позволит увеличить доступную область для размещения диаграммы. 

3
Ваши вопросы / Re: Графики за время
« : 06 Августа 2026, 11:50:50 »
Здравствуйте.

Компонент "Временные тренды" накапливает данные по трендам в оперативной памяти и не использует архивные данные. Поэтому, после перезапуска проекта накопление данных во "Временных трендах" начнется сначала. Максимальный интервал времени для временных трендов = 60 минут. Соответственно, данный компонент Вам не подойдет в любом случае.

Чтобы была возможность просматривать данные за необходимые промежутки времени, необходимо настроить подключение к БД и включить архивацию у нужных переменных. Тогда можно будет просматривать архивные данные через тренды или строить отчеты.

Для архивации и просмотра трендов нужно:
1. Установить и настроить подключение к СУБД – пример для MySQL.
2. У необходимых переменных включить архивацию.
3. Добавить нужные переменные в тренды.
4. Сохранить проект и перезапустить его на сервере Simple-Scada.
5. Перейти к просмотру трендов и просматривать тренды за требуемые интервалы времени.

Также, по архивным данным можно будет строить отчеты за необходимый промежуток времени. Пример отчета с выводом трендов см. по ссылке. Пример отчета с выводом времени работы/простоя можно найти по ссылке.

4
Здравствуйте.

Цитировать
Это норма для сообщений, добавленных через скрипт?
Да, для сообщений, которые формируются через скрипты, колонки "Завершено" и "Длительность" не заполняются.

5
Здравствуйте.

Да, это возможно. Подробное руководство по отчетам можно найти в дистрибутиве любой версии Simple-Scada или по ссылке. Если мы правильно поняли, то у Вас с расходомера приходит накопленный расход (т.е. значение переменной постоянно растет). В этом случае Вам подойдет пример построения "Периодического отчета" с использованием типа обработки "разница".

Подробнее:
1. Включите архивацию "по-изменению" у переменной "Объем".
2. Создайте новый отчет. Создайте в отчете источник данных с типом "Периодический".
3. Значение переменной-интервала выставьте в соответствии с необходимым интервалом(например 3600 – это 1 час в секундах). Как изменить значение для переменной интервала, можно посмотреть в примере по ссылке.
4. Добавьте в источник данных переменную "Объем" с типом обработки "разница".
5. Перетяните источник данных на страницу отчета.
Готово. Теперь в отчете будет отображаться таблица, в каждой строке которой будет объем воды за указанный интервал. Остаётся только задать время начала и конца и построить отчет. Принцип отчета и процесс его создания такой же, как в этой статье руководства.

6
Ваши вопросы / Re: Вопрос по отчётам
« : 11 Июня 2026, 11:30:58 »
Здравствуйте.

1. Если требуется сформировать список с интервалами, в которых переменная (бит переменной) = 0, то это можно реализовать через сообщения, по аналогии с описанием из этой темы.
2. Если требуется сформировать отчет с общим временем простоя агрегата за необходимый интервал, то можно использовать периодический источник данных, в который нужно добавить переменную с типом обработки "время выкл.". Если используется целочисленная внешняя переменная, в которой хранятся значения битов, то эту переменную необходимо разбить на отдельные переменные, как описано в руководстве, и работать с каждым битом переменной отдельно.
3. Если способы, указанные выше, не подходят, то используя SQL-запросы, Вы можете записывать необходимую информацию в свою таблицу БД (примеры работы с БД см. по ссылке) и далее, используя пользовательский источник данных (пример см. по ссылке), строить отчет на основании накопленных в таблице данных.

7
Здравствуйте.

Цитировать
я еще не опытный пользователь, подскажите - есть ли возможность или функция "скопировать формат"? или "групповое редактирование"?
Грубо говоря - есть 10 однотипных полей, и возникло желание их "перекрасить", через стандартный интерфейс тыкать в несколько полей - это очень долго и непродуктивно.
1. Поддерживается групповое редактирование свойств однотипных объектов и свойств переменных. Для этого выделите нужные объекты или переменные – теперь при изменении свойств они будут применяться для всех выделенных объектов. Чтобы выделить несколько объектов, можно зажать клавишу "Shift" и кликать ЛКМ по нужным объектам. Ознакомиться с другими горячими клавишами можно в руководстве по ссылке.
2. Для создания однотипных объектов, окон, страниц и сообщений в Simple-Scada можно использовать систему шаблонов. Для работы с шаблонами необходимо использовать однотипные имена переменных, тогда для создания шаблонного объекта можно будет указать, например, только одну цифру. Для быстрого редактирования свойств множества переменных можно использовать групповое редактирование или возможности импорта / экспорта переменных в файл Excel. Рекомендуем изучить статьи, которые относятся к работе с шаблонами – это значительно упростит разработку проекта и поиск допущенных ошибок.

Цитировать
Хотелось бы (по возможности) увидеть функционал типа "равномерные интервалы между объектами"
Цитировать
не хватает только возможности включить фильтр по найденым значениям. чтобы отображались ТОЛЬКО попадающие под условия поиска, те которые выделяются цветом.
Пожелания обязательно учтем и рассмотрим.

Для быстрого редактирования свойств множества переменных также можно использовать импорт / экспорт переменных в файл Excel. В Excel можно сортировать данные по заданным условиям. Но следует учитывать, что через импорт/экспорт из файла не получится изменить имя переменной, т.к. при импорте имя используется как ключевой параметр.

8
Здравствуйте.

Чтобы вернуть изначальный цвет объекта, можно использовать процедуру "SetInitialColor".
Код: (delphi)
begin
  if Sender is TM_Image then    // проверяем, что Sender это изображение
    with Sender as TM_Image do  // приводим Sender к типу "TM_Image"
      if AsBool then            // если значение переменной изображения равно True/1, то
        Color := clRed          // изменить цвет изображения на красный
      else                      // иначе
        SetInitialColor;        // вернуть изначальный цвет
end.

9
Здравствуйте.

Если в процедуру необходимо передавать переменные в качестве параметра, то для этого переменные необходимо объявлять как класс "TM_Variable":
Код: (delphi)
procedure GomControlPumpRun(AMqttPumpRun, APumpRun, AStatePump: TM_Variable; bit: Byte);
begin
  if AMqttPumpRun.AsBool then
    if not GetBit(AStatePump.AsInt, bit) then
      APumpRun.Value := AMqttPumpRun.AsBool
    else
    begin
      APumpRun.Value := False;
      AMqttPumpRun.Value := False;
    end;
end;
Вызов процедуры:
Код: (delphi)
GomControlPumpRun(mqtt_Gom_Run_pump5, drskGom_SN5_Run, drskGom_State_Pump57, 2);

10
Здравствуйте.

Вопрос: можно ли каким то образом считать изменения (получить значение/номер выбранной строки) списка внутри формы до отправки формы
Такой возможности нет. Формы ввода используются для одновременной работы нескольких пользователей, т.е. чтобы каждый пользователь мог ввести свои данные и не мешать другим. В формах ввода не выполняются изменения переменных через компоненты, изменения свойств объектов и т.п. Данные из формы ввода передаются на сервер только после заполнения и отправки формы.

11
Здравствуйте.

Такой возможности нет. Можно открыть в браузере требуемую ссылку используя процедуру GoToLinkClient.

12
Здравствуйте.

Если переменная на ПЛК/устройстве может принимать только отрицательные значения, например от 0 до -100, то у переменной можно задать шкалу от 0 до -100, а визуальную шкалу в режиме масштабирования установить 0-100. Тогда значения переменной будут автоматически преобразовываться из шкалы 0 .. -100 в шкалу 0 .. 100.

13
Здравствуйте.

Для этого можно использовать фильтр по переменной.
1. Создайте внутреннюю переменную с типом Boolean (например, с именем "vrBool") и включите у нее архивацию по изменению.
2. Создайте скрипт с типом события "Изменились переменные" и добавьте в него переменную, по которой необходимо выводить среднее в отчет (в примере скрипта это "vrMyVar").
3. Для скрипта используйте следующий код:
Код: (delphi)
begin
  vrBool.Value := (vrMyVar.AsInt >= 10);
end.
4. Готово. Теперь переменную, созданную на первом этапе, можно использовать в отчете как фильтр.
5. При необходимости у источника данных можно включить отображение пустых строк.

14
Здравствуйте.

В отчетах для трендов не работает логорифмическая шкала. Или как отобразить тренд в логорифмическом виде?
В Simple-Scada используется система отчетов Stimulsoft Reports. К сожалению, в данной системе отчетов есть ряд ограничений, связанных с отображением логарифмических шкал в диаграммах, а именно:
1. Логарифмическая шкала работает только в диаграммах с типом "Точечная"(см. скриншот во вложении), для остальных типов включение опции не даст результата.
2. На одной диаграмме нельзя разместить логарифмический тренд и обычный.  Все тренды в диаграмме должны быть либо логарифмическими, либо обычными (без смешивания).
3. Работать как логарифмическая может только левая шкала Y. Правая шкала Y может отображаться как логарифмическая, но она не влияет на отображение самого тренда.

15
Здравствуйте.

Цитировать
Возникла вот какая задача: по дискретной переменной, которая соответствует режиму работы агрегата (1 - в работе, 0 - простаивает), необходимо формировать периодический отчёт о времени его работы (время начала и окончания отчёта задаётся пользователем), только не во всём диапазоне заданного времени, а также с интервалами, задаваемыми пользователем. Например, в период с 01.04.2026 8:00 по 08.04.2026 8:00 сформировать время работы агрегата в интервале 8:00-12:00 и 16:00-20:00 ежедневно.
Периодический источник данных, может разбивать данные только на равные промежутки времени. Например, для указанного Вами диапазона, источник данных можно разбить на интервалы по 4 часа и, используя "Фильтр", скрыть ненужные промежутки. Например, используя выражение:
Код: (c#)
(Источник1.Время.Hour == 12 && Источник1.Время.Minute == 0) ||
(Источник1.Время.Hour == 20 && Источник1.Время.Minute == 0)
В отчете останутся только данные за промежутки 8:00-12:00 и 16:00-20:00.

Цитировать
Кроме времени работа, также необходимо рассчитывать КИО (время работы агрегата делить на полное время заданных интервалов)
Например, в бенд данных можно добавить компонент "Текст" со следующим выражением:
Код: (c#)
{((Источник1.vrBool).TotalHours) / 4}
При необходимости в выражениях можно использовать переменные из скада системы. См. пример проекта во вложении.

Страницы: [1] 2 3 ... 20