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

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

Автор Тема: Вопросы по скриптам в Simple-Scada 2  (Прочитано 519993 раз)

Елена

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1110 : 09 Сентября 2020, 14:04:11 »
Добрый день!
В отчётах не отображаются значения переменных из БД. Такое ощущение, что БД не подключена. Просто подключить периодический источник данных не работает. Как подключиться к MySQL?

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1363
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1111 : 09 Сентября 2020, 19:01:28 »
Здравствуйте.

Порядок установки MySQL рассмотрен по ссылке. После установки MySQL нужно настроить подключение к БД через редактор, для этого необходимо перейти к настройкам БД (Проект -> Настройки -> База данных), заполнить параметры подключения и нажать кнопку "Проверить", если появится окно с информацией об успешном соединении с БД, значит соединение прошло успешно и можно сохранить проект. Далее нужно у требуемых переменных настроить архивацию - см. вкладку свойств переменной "Архив". После этого переменные будут архивироваться в БД и по архивным данным можно будет формировать необходимые отчеты. Руководство по системе отчетов доступно по ссылке. Примеры создания отчетов можно найти по ссылке.

Елена

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1112 : 10 Сентября 2020, 08:49:08 »
Делаю всё так, как в руководстве, Бд проверяю, переменные архивирую, но в отчётах ничего нет.

Елена

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1113 : 10 Сентября 2020, 09:34:13 »
При формировании отчёта по этому примеру: https://simple-scada.com/help/report/per-rep.html предварительный просмотр выдает ошибку по интервалу - он не подтягивается из БД. И вообще ничего не подтягивается. Хотя БД работает, подключена, проверяется, данные архивируются

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1363
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1114 : 10 Сентября 2020, 19:53:32 »
Здравствуйте.

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

Цитировать
При формировании отчёта по этому примеру: https://simple-scada.com/help/report/per-rep.html предварительный просмотр выдает ошибку по интервалу - он не подтягивается из БД. И вообще ничего не подтягивается. Хотя БД работает, подключена, проверяется, данные архивируются
Переменную-интервал не требуется архивировать в БД. Значение интервала можно задать в редакторе отчетов(описано в середине примера периодического отчета) или если требуется изменять интервал из скады, то можно связать переменную-интервал отчета с нужной переменной проекта. Для начала можно создать простейший отчет на примере периодического отчета и затем, когда будет понятен принцип работы с системой отчетов, вносить в него необходимые изменения. На скриншоте видно, что в отчете имеются ошибки в выражениях, которые нужно исправить. Убедитесь, что у переменной-интервал задано корректное значение(см. скриншот во вложении), возможно вместе с числом по ошибке были введены какие-либо лишние символы. Если не разберетесь, пришлите нам на support@simple-scada.com текущую версию проекта для проверки.
« Изменён: 10 Сентября 2020, 21:22:58 от Simple-Scada »

Елена

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1115 : 11 Сентября 2020, 15:08:13 »
В итоге отчёта необходимо подсчитать сколько раз встречается число или строковая константа во всём отчёте. Подскажите, пожалуйста, как это сделать. Пробовала функцию COUNT, но компилятор выдаёт ошибки.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1363
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1116 : 13 Сентября 2020, 21:23:40 »
Здравствуйте.

Цитировать
Пробовала функцию COUNT, но компилятор выдаёт ошибки.
Если компилятор выдает ошибки, значит они точно есть и их нужно исправить. Ошибка на скриншоте может выдаваться, например если в отчете отсутствует источник с именем "Источник2", но при этом он используется в выражении. Без проверки отчета сложно сказать в чем именно ошибка.

Описание работы с итогами в отчете, а также примеры выражений можно найти по этим ссылкам: ссылка 1, ссылка 2. Для подсчета количества строк по условию можно использовать функцию CountIf, например в выражении ниже будет рассчитано количество строк со значением 64 в колонке "Уровень":
Код
{CountIf(Данные.Уровень == 64)}
, где "Данные" это источник данных, "Уровень" это колонка, по строкам которой нужно произвести подсчет.
« Изменён: 13 Сентября 2020, 21:27:40 от Simple_Scada »

Елена

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1117 : 14 Сентября 2020, 09:07:51 »
Доброе утро!
При попытке сформировать отчёт со строковыми переменными, при попытке запустить отчёт на предварительный просмотр появляется сообщение (во вложении). Так только со String-переменными - остальное всё работает нормально. Помогите, пожалуйста!

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1363
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1118 : 14 Сентября 2020, 20:20:41 »
Здравствуйте.

Архивировать можно только численные переменные, строковые переменные не архивируются (поэтому скада не может получить из БД данные для этой переменной и передать их в источник данных). Варианты использования строковых переменных в отчете без их архивации можно найти в этом обсуждении.
« Изменён: 14 Сентября 2020, 20:29:05 от Simple-Scada »

Bairam

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1119 : 15 Сентября 2020, 07:36:41 »
Добрый день. Можно ли использовать в скриптах шаблонные подстановки типа %Номер канала% ? Каким образом их использовать?

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1363
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1120 : 15 Сентября 2020, 09:30:21 »
Здравствуйте.

Опишите подробнее, какую задачу Вы хотите решить и для чего хотите использовать шаблонные подстановки в скрипте?

Bairam

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1121 : 15 Сентября 2020, 10:07:09 »
Здравствуйте.

Опишите подробнее, какую задачу Вы хотите решить и для чего хотите использовать шаблонные подстановки в скрипте?

По нажатию на аналоговый параметр шаблонный появляется шаблонное окно с настройками этого канала. Одна из кнопок этого окна "Маскирование включить/отключить" изменяет границы тега с "Аварийные и предупредительные" на "Не выбрано" и обратно. Хотел использовать скрипт вида
Код
begin
    if AI%Номер канала%_inuse.LimitType = ltAlarmsAndWarnings then AI%Номер канала%_inuse.LimitType := ltNone
    else AI%Номер канала%_inuse.LimitType := ltAlarmsAndWarnings;
end.
« Изменён: 15 Сентября 2020, 11:53:29 от Bairam »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1363
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1122 : 15 Сентября 2020, 12:44:55 »
Для шаблонов можно использовать только универсальные скрипты. Как мы понимаем, данный скрипт установлен на событие OnClick кнопки, тогда можно в дополнительной переменной кнопки указать подстановку "AI%Номер канала%_inuse" и написать универсальный скрипт для этой кнопки, в котором изменять тип границ доп. переменной:
Код: (delphi)
begin
  if Sender is TM_Button then    // проверяем, что Sender это кнопка
    with Sender as TM_Button do  // приводим Sender к типу "TM_Button"
      if VariableEx.LimitType = ltAlarmsAndWarnings then VariableEx.LimitType := ltNone
      else VariableEx.LimitType := ltAlarmsAndWarnings;
end.

Елена

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1123 : 17 Сентября 2020, 13:43:27 »
Добрый день!
Нужно подсчитывать промежуток времени между измерениями. Т.е. вычитать из значений колонки Источник.Время предыдущее значение этой колонки. Если использовать функцию Previos , то она преобразует DateTime в Object. Как преобразовать обратно - не знаю...

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3195
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1124 : 17 Сентября 2020, 20:40:59 »
Здравствуйте.

Чтобы в ячейке отобразить разницу во времени между предыдущим значением колонки "Время" и его текущим значением, нужно использовать такое выражение:
Код: (c#)
{DateDiff(
  (DateTime)Данные.Время,
  StrToNullableDateTime((string)Previous(Данные, "Время"))
)}
, где "Данные" - имя источника данных. "Время" - колонка времени в источнике данных.