Вопросы по скриптам в Simple-Scada 2

Автор Simple-Scada, 29 января 2016, 15:19:20

Елена

Добрый день!
В отчётах не отображаются значения переменных из БД. Такое ощущение, что БД не подключена. Просто подключить периодический источник данных не работает. Как подключиться к MySQL?

Simple_Scada

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

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

Елена

Делаю всё так, как в руководстве, Бд проверяю, переменные архивирую, но в отчётах ничего нет.

Елена

При формировании отчёта по этому примеру: https://simple-scada.com/help/report/per-rep.html предварительный просмотр выдает ошибку по интервалу - он не подтягивается из БД. И вообще ничего не подтягивается. Хотя БД работает, подключена, проверяется, данные архивируются

Simple_Scada

#1114
Здравствуйте.

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

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

Елена

В итоге отчёта необходимо подсчитать сколько раз встречается число или строковая константа во всём отчёте. Подскажите, пожалуйста, как это сделать. Пробовала функцию COUNT, но компилятор выдаёт ошибки.

Simple_Scada

#1116
Здравствуйте.

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

Описание работы с итогами в отчете, а также примеры выражений можно найти по этим ссылкам: ссылка 1, ссылка 2. Для подсчета количества строк по условию можно использовать функцию CountIf, например в выражении ниже будет рассчитано количество строк со значением 64 в колонке "Уровень":
Код: pascal
{CountIf(Данные.Уровень == 64)}
, где "Данные" это источник данных, "Уровень" это колонка, по строкам которой нужно произвести подсчет.

Елена

Доброе утро!
При попытке сформировать отчёт со строковыми переменными, при попытке запустить отчёт на предварительный просмотр появляется сообщение (во вложении). Так только со String-переменными - остальное всё работает нормально. Помогите, пожалуйста!

Simple_Scada

#1118
Здравствуйте.

Архивировать можно только численные переменные, строковые переменные не архивируются (поэтому скада не может получить из БД данные для этой переменной и передать их в источник данных). Варианты использования строковых переменных в отчете без их архивации можно найти в этом обсуждении.

Bairam

Добрый день. Можно ли использовать в скриптах шаблонные подстановки типа %Номер канала% ? Каким образом их использовать?

Simple_Scada

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

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

Bairam

#1121
Цитата: Simple_Scada от 15 сентября 2020, 09:30:21Здравствуйте.

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

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

Simple_Scada

Для шаблонов можно использовать только универсальные скрипты. Как мы понимаем, данный скрипт установлен на событие OnClick кнопки, тогда можно в дополнительной переменной кнопки указать подстановку "AI%Номер канала%_inuse" и написать универсальный скрипт для этой кнопки, в котором изменять тип границ доп. переменной:
Код: pascal
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.

Елена

Добрый день!
Нужно подсчитывать промежуток времени между измерениями. Т.е. вычитать из значений колонки Источник.Время предыдущее значение этой колонки. Если использовать функцию Previos , то она преобразует DateTime в Object. Как преобразовать обратно - не знаю...

Simple-Scada

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

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