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

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

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

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


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

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

Цитировать
Возникла вот какая задача: по дискретной переменной, которая соответствует режиму работы агрегата (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}
При необходимости в выражениях можно использовать переменные из скада системы. См. пример проекта во вложении.

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

Цитировать
Нужно посчитать удельник, тоесть: расход газа / (отпущенная тепловая энергия ТС + отпущенная тепловая энергия СН)
Код: (c#)
{Данные.Расход_газа_м3_ч / (Данные.Отпущ__тепл__энергия_СН * 0.2388 + Данные.Отпущ__тепл__энергия_ТС * 0.2388)}

Если не разберётесь, то пришлите для проверки на support@simple-scada.com текущую версию Вашего проекта из директории "..\Simple-Scada 2\Projects\" и укажите отчет, который нужно проверить.

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

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

Не совсем понятно, что Вы имеете в виду.
1. Если Вы переустановили сервер Simple-Scada на другой ПК и требуется перенести архивные данные с одного ПК на другой, то следуйте инструкции по ссылке. Время создания резервной копии и время восстановления из резервной копии напрямую зависит от размера БД и производительности ПК.
2. Если Вы подключаетесь к серверу Simple-Scada с другого ПК, то удаленный клиент будет получать все данные с сервера.

Если имеется в виду что-то другое, то опишите более подробно, что именно требуется.

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

К сожалению, средствами скада-системы такой график создать не получится, но его можно создать, используя систему отчетов(полноценная система отчетов доступна в версии Professional). Пример создания X/Y тренда в отчете см. по ссылке.

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

1. В любых непонятных ситуациях нужно в первую очередь проверить журнал сервера скады. С большой вероятностью в нем будут содержаться ошибки или предупреждения, которые укажут, в чем именно проблема.
2. В примере по ссылке описано, как сохранять значение требуемой переменной с заданной периодичностью в свою таблицу БД. Если строго следовать руководству, то проблем быть не должно. Убедитесь, что в проекте настроено подключение к БД и в указанной БД создана таблица "my_archive".
3. Какая версия Simple-Scada используется? Возможно, Вы используете версию с ограничением на выполнение SQL-запросов – это версии Minimal и Demo-64.
4. Если требуется архивация переменных, то в этом случае использовать скрипты не требуется. Для этого нужно у требуемых переменных настроить архивацию – описание доступных способов архивации и их настроек доступно по ссылке. Тогда, после запуска проекта переменные, у которых включена архивация будут архивироваться в БД и можно будет работать с архивными данными этих переменных, например просмотреть тренды, создать отчет и т.д.

Если самостоятельно разобраться не получится, то пришлите на support@simple-scada.com целиком папку с логами "..\Simple-Scada 2\Logs", текущую версию проекта из директории "..\Simple-Scada 2\Projects\" и укажите проблемный скрипт. Также, пришлите скриншот вкладки "Состояние сервера".

6
Ваши вопросы / Re: Время, таймер и так далее
« : 18 Февраля 2026, 10:52:37 »
Здравствуйте.

Цитировать
Timer:TDateTime;
Timer := SecondsBetween(StrToTime(tblSchedule.GetCell(4, 1).Text), StrToTime(tblSchedule.GetCell(2, 1).Text));
См. описание функции "SecondsBetween" – она возвращает целое число, а вы пытаетесь записать его в переменную TDateTime.

Цитировать
tblSchedule.GetCell(5, 2).Text := TimeToStr(Timer); // не работает, выводит только нули
Чтобы преобразовать секунды в строку, необходимо использовать функцию "SecondsToStr".

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

Для этого в колонке данных с переменной "Qтв" можно выполнять умножение на 0.2388 – см. скриншот во вложении.

Если не разберётесь, то пришлите для проверки на support@simple-scada.com текущую версию Вашего проекта из директории "..\Simple-Scada 2\Projects\" и укажите отчет, который нужно проверить.

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

В нашем примере время задаётся по переменной "vrTime", которая расположена в календаре. Для календаря задан формат времени "мм:сс" (минуты и секунды), чтобы задавать часы, нужно изменить формат времени, например на "чч:мм:сс".

Внесли изменения в проект – во вложении.

9
Для этого в окне можно разместить компонент "Фигура", растянуть её на всё окно и установить нужный цвет. Чтобы фигура не мешала при редактировании, её можно выделить и "заморозить" через меню "Действия -> Заморозить".

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

Чтобы цвет, введённый в формате HEX, применился, необходимо нажать кнопку "Ок" – см. скриншот во вложении.

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

1. В именах объектов нельзя использовать подстановки.
2. Работа с шаблонами в скриптах рассмотрена по ссылке.
3. Рекомендуем всегда стараться использовать универсальные скрипты.
4. Ознакомьтесь с примерами использования кнопок по ссылке.

Для описанной Вами задачи можно использовать следующий способ:
1. В шаблоне создать необходимые кнопки с одним состоянием и задать нужное значение в состоянии для каждой кнопки.
2. В свойство "Тег" кнопок указать значения, соответствующие значениям, которые должны принимать кнопки при их нажатии.
3. Создать универсальный скрипт со следующим кодом:
Код: (delphi)
begin
  if Sender is TM_Button then      // проверяем, что Sender это кнопка
    with Sender as TM_Button do    // приводим Sender к типу "TM_Button"
      if AsInt = Tag then          // если значение переменной кнопки равно значению, указанному в свойстве "Тег", то
        Color := clGreen           // изменить цвет кнопки на зеленый
      else                         // иначе
        Color := RGB(109,109,109)  // изменить цвет кнопки на серый
end.
4. Назначить скрипт на событие "OnDataChange" всех кнопок.
5. Готово. Пример проекта во вложении.

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

Начиная с версии 2.7.0.0 изменилась система прав пользователей – права пользователей перенесены в группы. Рекомендуем ознакомиться с пояснениями по переходу на новую систему прав пользователей.

В Вашем случае проблема, скорее всего, в том, что подключение выполняется под одним и тем же пользователем, который находится в группе с отключенной опцией "Множественная авторизация". Включите данную опцию или создайте отдельных пользователей для каждого клиента. Далее сохраните, перезапустите проект и протестируйте повторно.

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

При указании пути в конце обязательно должен быть символ "\".

14
Ваши вопросы / Re: Элемент Флажок
« : 09 Декабря 2025, 11:08:30 »
Здравствуйте.

Цитировать
Как исключить повторное отжатие флажка, не используя его скрытие с экрана
Для изменения доступности объекта нужно использовать свойство "Enabled".

Цитировать
получились вопросы по временным функциям, спасибо за ответы
Методы для работы с датой/временем можно найти в руководстве по ссылке. Текущую дату/время можно получить с помощью функции "Now". Если требуется получить количество секунд между переменными "DateTime", то можно использовать функцию "SecondsBetween". Далее, используя функцию "SecondsToDateTime", можно перевести количество секунд в значение "DateTime". Используя функцию "SecondsToStr", можно перевести количество секунд в строку вида "чч:мм:сс".

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

Код: (delphi)
var
  aTemp_Corr, aCorr: TM_Variable;
begin
  aTemp_Corr := GetVariableByName(Variable.Name + '_Corr');  // выполняем поиск переменной vrTemp_Corr
  aCorr := GetVariableByName('CorrValue_' + Variable.Name);  // выполняем поиск переменной CorrValue_vrTemp
  if (aTemp_Corr <> nil) and (aCorr <> nil) then             // если переменные существуют, то
    if Variable.IsGoodQuality then                           // если переменная имеет хорошее качество, то
      aTemp_Corr.Value := Variable.AsInt + aCorr.AsInt       // в переменную vrTemp_Corr записываем значение переменной vrTemp + значение переменной CorrValue_vrTemp
    else                                                     // иначе (если переменная имеет плохое качество)
      aTemp_Corr.Value := 0;                                 // в переменную vrTemp_Corr записываем 0
end.

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