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

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

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

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1020 : 14 Февраля 2020, 08:37:14 »
Доброе утро, в данном случае OPC DA, удаленный
« Изменён: 15 Февраля 2020, 15:39:53 от Simple_Scada »

Simple_Scada

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

Сейчас, при потере связи с удаленным DA сервером остаются последние полученные с него значения. В обновлении 2.3.6.8 сделали чтобы переменные обнулялись  при разрыве связи с OPC-сервером (на обычных клиентах (не web) также отображаются иконки с восклицательным знаком).

Цитировать
Подскажите , а можно как то скриптами  контролировать , есть ли связь с опс сервером?
Можно воспользоваться перечисленными ниже способами и например выводить предупреждение при потери связи с удаленным ПК или ПЛК/устройствами, которые работают через этот OPC.
1. Можно проверять качество нужных тегов - см. свойство IsGoodQuality
2. Можно производить пинг ПЛК/ПК/устройства - см. процедуру StartPing.
3. Можно использовать описанный здесь способ контроля связи.
« Изменён: 17 Февраля 2020, 09:23:32 от Simple-Scada »

Banzai

  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1022 : 27 Февраля 2020, 03:57:12 »
Здравствуйте. Возникла необходимость прочитать атрибуты внешнего тега, с 5001 по 5009. Посмотрел тег через Matricon OPC Explorer, атрибуты есть.
Подскажите, как это можно сделать, если при импорте внешней переменной в ее свойствах есть атрибут Quality, DataStamp и все?
В качестве OPC используется система "Микон".

pix картинки
« Изменён: 27 Февраля 2020, 04:01:49 от Banzai »

Simple-Scada

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

Через скаду нельзя прочитать эти атрибуты. Скада во время работы подписывается на нужные теги и получает каждое изменение тега с атрибутами "значение" + "метка времени" + "качество тега". Во время импорта тегов через редактор скада читает "имя" + "тип данных" + "описание".

Banzai

  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1024 : 28 Февраля 2020, 14:53:56 »
Здравствуйте.

Через скаду нельзя прочитать эти атрибуты. Скада во время работы подписывается на нужные теги и получает каждое изменение тега с атрибутами "значение" + "метка времени" + "качество тега". Во время импорта тегов через редактор скада читает "имя" + "тип данных" + "описание".
Ясно. Спасибо за информацию.

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1025 : 06 Марта 2020, 13:52:55 »
Заметил , что по запросу в SQL, 150 записей в обратной последовательности , возвращается не более 35 , в базе они имеются , прошу разъяснить данный момент , выводятся запросом сразу в таблицу , таблица подготовлена и имеет более 150 строк.Такое предположение , что сама функция RunSQL имеет ограничение. Хочу отметить что таблица из  базы данных выводиться целиком , т.е. используются все столбцы , а их 25.
« Изменён: 06 Марта 2020, 14:53:07 от lipvasko »

Victor_P.

  • Пользователь
  • **
  • Сообщений: 69
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1026 : 06 Марта 2020, 16:02:21 »
Попробуйте в коце запроса добавить limit 1000

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1027 : 06 Марта 2020, 16:12:57 »
У RunSQL нет ограничений, но они есть у компонента Таблица:
  • на обычных клиентах в таблице нельзя отобразить более 8192 строк (начиная с версии 2.2.6.0 и выше. В более старых версиях ограничивалась ещё сильнее);
  • в web-клиентах таблица не может содержать более 2048 ячеек.
Т.е. в обычном клиенте у Вас должны выводиться все строки (т.к. 150 строк меньше чем 8192). А на web-клиенте должно выводиться не более 82 строк. Для теста специально создали таблицу на 25 колонок и протестировали. Всё выводится в соответствии с описанием выше.
В ближайших обновлениях скады эти лимиты будут существенно увеличены.

Цитировать
возвращается не более 35
35 - это что-то странное. Такого лимита точно нет. Вы уверены что строк именно 35? Запрос точно выбирает более 35 строк? Используете web-клиент, или обычный клиент? Версия скады выше чем 2.2.6.0?
« Изменён: 06 Марта 2020, 16:14:15 от Simple-Scada »

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1028 : 11 Марта 2020, 10:27:37 »
35 - это что-то странное. Такого лимита точно нет. Вы уверены что строк именно 35? Запрос точно выбирает более 35 строк? Используете web-клиент, или обычный клиент? Версия скады выше чем 2.2.6.0?

Да вы правы около 80 , я пробовал на вэб клиенте , тогда все ясно, на клиенте без ограничений , спасибо!
« Изменён: 11 Марта 2020, 10:30:48 от Simple-Scada »

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1029 : 03 Апреля 2020, 10:14:31 »
Добрый день , подскажите возможно ли  с заполненной таблицы (с SQL таблицы, методом RunSQL)  экспортировать  в XSL

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1030 : 06 Апреля 2020, 09:21:43 »
Здравствуйте. Нет, компонент Таблица не поддерживает функции экспорта.

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1031 : 07 Апреля 2020, 11:11:10 »
Подскажите пожалуйста , наиболее простой, автоматический способ распечатать содержимое окна , и желательно только его содержимое , в окне находиться таблица , вот её мне и надо распечатать .
« Изменён: 07 Апреля 2020, 11:34:36 от lipvasko »

pan2000

  • Постоялец
  • ***
  • Сообщений: 226
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1032 : 09 Апреля 2020, 21:46:42 »
Подскажите пожалуйста , наиболее простой, автоматический способ распечатать содержимое окна , и желательно только его содержимое , в окне находиться таблица , вот её мне и надо распечатать .

Вариант вывода таблицы на печать через построение отчета с последующей печатью:
- перед построением отчета необходимо подготовить данные из таблицы либо как CSV-файл, либо как таблицу БД;
- дождаться завершения построения файла или таблицы БД и запустить построение отчета с последующей печатью.

Пример скриптов при использовании файла для печати таблицы из трех столбцов ("параметры" - текст в ячейках, "уставки" и "значения" - ячейки связаны с переменными).
После изменения параметров и нажатия кнопки "Пуск" начинается отсчет таймера, по завершении отсчета формируется отчет.
Скрипт "Изменилась переменная (control, связанная с кнопкой "Пуск")":
Код: (delphi)
begin
  if GetBit(control.AsInt, 0) then begin
    Y7.Value := int(X7.Value);          // таймер интервала X7 - уставка, Y7 - текущее значение
    DTstart.Value := now;               // метка времени начала

    TextFileOpen('PrintTable.csv', '', fomRewrite, fcpANSI);
    TextFileWriteLn('');                // файл с пустой строкой
    TextFileClose;
  end;
end.

Скрипт "Прошла секунда"
Код: (delphi)
var i: integer;
    aReport: TM_Report;
begin
  if GetBit(control.AsInt, 0) then
    if CompareDateTime(Y7.Value, X7.Value) = -1 then
      Y7.Value := IncSecond(Y7.AsDateTime, 1)     // счет таймера
    else
      if Table1.Tag = 0 then begin                                   // Table1.Tag = 0  - запись файла
        TextFileOpen('PrintTable.csv', '', fomRewrite, fcpANSI);     // запись данных в CSV-файл
        TextFileWriteLn(';;');                                       // заголовок (имена столбцов)
        with Table1 as TM_Table do
          for i := 1 to 6 do
            TextFileWriteLn(UTF8ToString(GetCell(0,i).Text) + ';' + GetCell(1, i).Variable.AsStr + ';' + GetCell(2, i).Variable.AsStr);

        TextFileWriteLn(' Интервал;' + TimeToStr(DTstart.AsDateTime) + ';' + TimeToStr(Now));    // время начала и конца процесса
        TextFileClose;
        Table1.Tag := 1;
      end
      else begin    // Table1.Tag <> 0   - ожидание завершения записи файла и построение отчета
        if TextFileOpen('PrintTable.csv', '', fomReset, fcpANSI) then
          if TextFileReadLn = ';;' then begin          // первая строка содержит заголовок, файл записан
            aReport := ReportBuild('Print_1');
            aReport.View(ClientName.AsStr);            // осталось дождаться отчета для просмотра или печати (.Print)
            Table1.Tag := 0;                           // сбросить флаг построения отчета
            control.Value := 0;                        // завершено - отпустить кнопку и
          end;
        TextFileClose;
      end;
end.

1. Скрипты исключительно для примера, в рабочем варианте необходимо контролировать "бесконечный" цикл ожидания записи файла (записи таблицы БД), если запись "пошла не так".
2. При использовании таблицы БД необходимо дополнительно включить в таблицу упорядочивающий столбец строк исходной таблицы (номер строки).

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

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1033 : 10 Апреля 2020, 15:04:42 »
Добрый день , возник вопрос --- что это за ошибка в отчете и как с ней бороться , ошибка лезет при работе с любыми таблицами , в этой бд

Ошибка компиляции
В отчете 'silos_1' выявлена ошибка компиляции:'
Класс "Reports.silos_1.silosDataSource" уже содержит определение для "PK_"

Simple-Scada

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

Цитировать
В отчете 'silos_1' выявлена ошибка компиляции:'
Класс "Reports.silos_1.silosDataSource" уже содержит определение для "PK_"
Извините за задержку с ответом, почему-то не пришло уведомление об ответе в теме.
Эта ошибка говорит о том, что в отчете есть объект имя которого конфликтует с другим объектом. Чтобы узнать какой именно объект привел к проблеме, нужно проверить отчет. Если есть желание, то вышлите текущую версию проекта на support@simple-scada.com для проверки.