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

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

Автор Тема: Вопрос по SELECT, MSSQL и Quality.  (Прочитано 2282 раз)

ZWolol

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Вопрос по SELECT, MSSQL и Quality.
« : 09 Февраля 2024, 05:20:01 »
Есть таблица параметров в SQL которую нужно считать в скаду:
Код: (delphi)
  sQuery:= 'SELECT * FROM `my_table`';
  RunSQL(sQuery, nil, 1);

И по выполнению запроса присвоить значения переменным:
Код: (delphi)
  if DataSet.Tag <> 1 then exit;
  while not DataSet.EOF do
    case DataSet[0].AsInt of
      1: vrValue1.Value := DataSet[1].AsFloat;
      2: vrValue2.Value := DataSet[1].AsFloat;
//    ...
    end;
    DataSet.Next;
  end;

1) Если я правильно понял, то 100 таких параметров не будут считаться внешними и не отразятся на ограничение по лицензии.

2) Демо версия не работает с MSSQL ?
Не удобно использовать MySQL для отладки.

3) vrValue.Quality := 0; не работает, а жаль... (Cannot assign to read-only property).
Будет ли в будущем возможность присвоение качества, что б не создавать отдельную переменную?
« Изменён: 09 Февраля 2024, 10:05:58 от ZWolol »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2997
    • Просмотр профиля
    • Simple-Scada
Re: Вопрос по SELECT, MSSQL и Quality.
« Ответ #1 : 09 Февраля 2024, 12:51:01 »
Здравствуйте.

Цитировать
Если я правильно понял, то 100 таких параметров не будут считаться внешними и не отразятся на ограничение по лицензии.
Внешними считаются только переменные, которые читаются с OPC-серверов.
Если Вы хотите таким способом через базу данных передавать значения в скаду, то учитывайте, что по производительности он будет в сотни раз медленнее, чем чтение через OPC-сервер.

Цитировать
Демо версия не работает с MSSQL ?
Ограничения касаются только версии Demo на 64 тега. В Demo-Time нет ограничений на работу с СУБД.

Цитировать
Будет ли в будущем возможность присвоение качества, что б не создавать отдельную переменную?
Качество используется только у внешних тегов и поступает от OPC-сервера, вместе с значением переменной. Изменить его через скрипты нельзя. В будущем также изменений не планируется.

ZWolol

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Вопрос по SELECT, MSSQL и Quality.
« Ответ #2 : 09 Февраля 2024, 14:43:59 »
Цитировать
>...по производительности он будет в сотни раз медленнее, чем чтение через OPC-сервер.
ну это еще бабушка на двое сказала.
когда тысяча тегов передается по оптике, то это имеет значение,
а когда опрос этих объектов ведется по радиомодему с периодом нескольких минут...
у нас хотят взять лицензию на 500 тегов, этого хватит даже на три клиента.

Цитировать
> В Demo-Time нет ограничений на работу с СУБД.
Потому и спросил, что соединение с базой MSSQL есть, а после запроса нет ни ответа ни ошибки.
Сделал аналогичную базу с таблицей на MySQL, сменил в настройках сервер и все читается.
Где посмотреть причину ?

Цитировать
> качество переменной
если у переменных есть признак качества, то я не вижу проблем сделать их на за запись.
в нашей таблице параметров MSSQL есть поле признака качества: (ID_param, Value, Quality)
а вот присваивать ее приходится отдельной переменной. :(
« Изменён: 09 Февраля 2024, 15:46:45 от Simple-Scada »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1167
    • Просмотр профиля
Re: Вопрос по SELECT, MSSQL и Quality.
« Ответ #3 : 09 Февраля 2024, 15:16:02 »
Цитировать
соединение с базой MSSQL есть, а после запроса нет ни ответа ни ошибки. Сделал аналогичную базу с таблицей на MySQL, сменил в настройках сервер и все читается. Где посмотреть причину ?
В первую очередь следует проверить журнал сервера Simple-Scada, возможно в нем имеются ошибки, которые подскажут причину. Обработать ошибки SQL-запросов можно в скрипте "Ошибка SQL-запроса". Если не разберетесь, то пришлите для проверки на support@simple-scada.com текущую версию проекта из директории "..\Simple-Scada 2\Projects\" и укажите, какой скрипт нужно проверить. Также, воспроизведите проблему и пришлите целиком папку с логами "..\Simple-Scada 2\Logs".

ZWolol

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Вопрос по SELECT, MSSQL и Quality.
« Ответ #4 : 12 Февраля 2024, 05:20:26 »
Спасибо, все получилось.
MSSQL не понравилось название таблицы в кавычках. :)

ZWolol

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Вопрос по SELECT, MSSQL и Quality.
« Ответ #5 : 13 Февраля 2024, 04:26:55 »
Зачем для MSSQL требуется версия Enterprise?

Я создал таблицы с правами для архивов V2, но Скада не может работать со Standard в кластерном режиме.
Хотя больших проблем с заменой SQL нет, но ведь INSERT и SELECT делает любая версия.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1167
    • Просмотр профиля
Re: Вопрос по SELECT, MSSQL и Quality.
« Ответ #6 : 13 Февраля 2024, 08:37:38 »
Здравствуйте.

Можно использовать любые редакции начиная с SQL Server 2016 (SP1) и выше, либо более старые версии SQL Server 2008/2012/2014 в редакции Enterprise. В системе архивации v2 используется создание разделов БД. Старые версии SQL Server будут работать только с редакцией Enterprise, т.к. раньше создание разделов считалось особенной функцией и включалось только в самые дорогие версии СУБД. А сейчас считается обычной функцией и включается во все редакции.

ZWolol

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Вопрос по SELECT, MSSQL и Quality.
« Ответ #7 : 15 Февраля 2024, 07:13:28 »
Установил версию Enterprise.
Таблицы создались, но при запуске выводится ошибка в журнале сервера еще до SQL запроса.
Это что-то с базой данных?

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2997
    • Просмотр профиля
    • Simple-Scada
Re: Вопрос по SELECT, MSSQL и Quality.
« Ответ #8 : 15 Февраля 2024, 10:56:39 »
Файловая группа не связана с файлом на жестком диске. БД была создана с нуля через сервер/редактор скады? Или это БД созданная ранее (или восстановленная из резервной копии)? Удалите БД полностью, затем снова запустите проект, чтобы сервер скады с нуля создал её. После этого проблема повторяется?

ZWolol

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Вопрос по SELECT, MSSQL и Quality.
« Ответ #9 : 16 Февраля 2024, 06:16:28 »
Я подключил нашу базу и выбрал:
Создать БД и таблицы
Создать таблицу переменных
Очистить все таблицы
В результате таблицы в базе появились но файлы архивов не создались.

Удалил базу, создал ее из SCADы и скопировал туда наши таблицы.
Теперь все запускается без ошибок, но после нескольких запросов SQL вылетает сервер.
Демо версию обновил...

P.S.
У программистов подобная проблема.
Они используют ОПС для передачи параметров из базы SQL в SCADу.

Думал что это ошибка в таблице которой я передаю запрос для контроля.
Отключил от нее запрос, результат тот же.
« Изменён: 16 Февраля 2024, 08:10:48 от ZWolol »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2997
    • Просмотр профиля
    • Simple-Scada
Re: Вопрос по SELECT, MSSQL и Quality.
« Ответ #10 : 16 Февраля 2024, 11:14:41 »
Цитировать
Теперь все запускается без ошибок.
Проверили Ваш проект с SQL Server 2012 Enterprise. Он работает корректно неограниченное время.

Цитировать
но после нескольких запросов SQL вылетает сервер
Какое количество строк в таблице Currents? Вы выполняете два одинаковых запроса каждую секунду (не дожидаясь обработки предыдущего запроса) и выбираете таблицу целиком. Результаты запросов будут храниться в оперативной памяти (до полной обработки в скриптах) и если таблица большая, то у процесса сервера скады закончится оперативная память (плюс к этому нужно учитывать, что сервер ещё должен каждую секунду передавать всю считанную таблицу "tblMy" клиентам, что ужасно по производительности, если её объем большой).

Ещё раз отмечаем: если Вы планируете получать данные в переменные скады через БД, то такой способ по производительности и тратам ресурсов будет в сотни раз медленнее, чем получение данных в переменные от OPC-сервера (как они приходят в OPC, по оптике или радиомодему - это отдельный вопрос, мы говорим только о самом процессе передачи в скаду и о обработке данных в скаде). При получении данных через OPC используется очень много оптимизаций при которых данные поступившие от OPC попадают в переменные практически мгновенно, с использованием минимального количества оперативной памяти и без использования скриптов.
Для работы через БД, Вам придётся самостоятельно выполнить все оптимизации и учитывать потребление оперативной памяти. Например, выбирать данные из БД частями (а не всю таблицу сразу), обрабатывать их, после завершения обработки запускать получение новой части данных. Запросы по возможности нужно оптимизировать, выбирать по ключу (например, со столбцом времени, как делает скада при чтении трендов/сообщений). Производительность при этом всегда будет ограничена скриптами.

Рекомендуем для данной задачи поискать специализированное ПО, или системы предназначенные для получения данных через БД (напрямую в переменные).

ZWolol

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Вопрос по SELECT, MSSQL и Quality.
« Ответ #11 : 16 Февраля 2024, 19:24:20 »
Цитировать
> Какое количество строк в таблице Currents?
Сейчас максимальное ID = 1500, но много удаленных.
Даже если тысяча по килобайту... вряд-ли это переполнит память :)

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

Читать быстрее секунды данные обновляемые раз в минуту считаю лишним.
Мне такая скорость не нужна, а все лишние записи я удалю. Останется всего 50.

А сервер ОПС у нас есть и работает без проблем с МастерСкадой.
Только сделан он 15 лет назад и видимо ваша скада не работает с такой древностью.

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

Ну буду смотреть и разбираться.
« Изменён: 17 Февраля 2024, 09:59:16 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2997
    • Просмотр профиля
    • Simple-Scada
Re: Вопрос по SELECT, MSSQL и Quality.
« Ответ #12 : 17 Февраля 2024, 09:58:50 »
Цитировать
Сейчас максимальное ID = 1500, но много удаленных.
1500 это очень мало, нужно как минимум 50000 и выше, чтобы заметить какую-то нагрузку. Значит наше предположение с памятью неверно.

Отправили Вам на почту тестовую версию сервера скады для Demo-Time 2.6.10.0 и инструкции. С этой версией можно выявить точную причину проблемы.

ZWolol

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Вопрос по SELECT, MSSQL и Quality.
« Ответ #13 : 19 Февраля 2024, 05:47:58 »
Ответ выслал на support@simple-scada.com

SELECT COUNT(ID_Channel) FROM [dbo].[Currents];
получил:593

В таблице Currents есть еще поле MeasureData, могу ее исключить из запроса.

В настройках проекта указан сервер Server-vz2\ServerVZ2
Потому, что на сервере два SQL сервера и localhost подключает к первому Standart.
Могу удалить первый, чтоб остался только Enterprice (2008 R2).

P.S.
У нас своя система опрашивает параметры скважин и все данные кладет в MS SQL базу.
Которая используется для скады и графиков. Это не моя прихоть.

Деньги выделили только для обновления шкафов второго водозабора.
Ну и скаду там решили обновить (сейчас стоит MasterSCADA 2.4)
Небыло печали да купила бабка порося...

ZWolol

  • Новичок
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Вопрос по SELECT, MSSQL и Quality.
« Ответ #14 : 26 Февраля 2024, 12:18:34 »
Не хочу быть навязчивым, но как обстоят дела по закрытию сервера?

Добавил в скрипт запроса SQL проверку и задержку на 5 сек при отсутствии ответа... не помогло.
Конечно я могу поставить сервер на автозапуск при закрытии.
Но у оператора иногда будет появляться сообщение о потере связи, что не есть хорошо.

P.S.
Мне сказали, что уже купили скаду на 500 точек.