Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: ZWolol от 09 Февраля 2024, 05:20:01

Название: Вопрос по SELECT, MSSQL и Quality.
Отправлено: ZWolol от 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).
Будет ли в будущем возможность присвоение качества, что б не создавать отдельную переменную?
Название: Re: Вопрос по SELECT, MSSQL и Quality.
Отправлено: Simple-Scada от 09 Февраля 2024, 12:51:01
Здравствуйте.

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

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

Цитировать
Будет ли в будущем возможность присвоение качества, что б не создавать отдельную переменную?
Качество используется только у внешних тегов и поступает от OPC-сервера, вместе с значением переменной. Изменить его через скрипты нельзя. В будущем также изменений не планируется.
Название: Re: Вопрос по SELECT, MSSQL и Quality.
Отправлено: ZWolol от 09 Февраля 2024, 14:43:59
Цитировать
>...по производительности он будет в сотни раз медленнее, чем чтение через OPC-сервер.
ну это еще бабушка на двое сказала.
когда тысяча тегов передается по оптике, то это имеет значение,
а когда опрос этих объектов ведется по радиомодему с периодом нескольких минут...
у нас хотят взять лицензию на 500 тегов, этого хватит даже на три клиента.

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

Цитировать
> качество переменной
если у переменных есть признак качества, то я не вижу проблем сделать их на за запись.
в нашей таблице параметров MSSQL есть поле признака качества: (ID_param, Value, Quality)
а вот присваивать ее приходится отдельной переменной. :(
Название: Re: Вопрос по SELECT, MSSQL и Quality.
Отправлено: Simple_Scada от 09 Февраля 2024, 15:16:02
Цитировать
соединение с базой MSSQL есть, а после запроса нет ни ответа ни ошибки. Сделал аналогичную базу с таблицей на MySQL, сменил в настройках сервер и все читается. Где посмотреть причину ?
В первую очередь следует проверить журнал сервера Simple-Scada (https://simple-scada.com/help/manual/server-journal.html), возможно в нем имеются ошибки, которые подскажут причину. Обработать ошибки SQL-запросов можно в скрипте "Ошибка SQL-запроса (https://simple-scada.com/help/script/sql-query-error.html)". Если не разберетесь, то пришлите для проверки на support@simple-scada.com текущую версию проекта из директории "..\Simple-Scada 2\Projects\" и укажите, какой скрипт нужно проверить. Также, воспроизведите проблему и пришлите целиком папку с логами "..\Simple-Scada 2\Logs".
Название: Re: Вопрос по SELECT, MSSQL и Quality.
Отправлено: ZWolol от 12 Февраля 2024, 05:20:26
Спасибо, все получилось.
MSSQL не понравилось название таблицы в кавычках. :)
Название: Re: Вопрос по SELECT, MSSQL и Quality.
Отправлено: ZWolol от 13 Февраля 2024, 04:26:55
Зачем для MSSQL требуется версия Enterprise?

Я создал таблицы с правами для архивов V2, но Скада не может работать со Standard в кластерном режиме.
Хотя больших проблем с заменой SQL нет, но ведь INSERT и SELECT делает любая версия.
Название: Re: Вопрос по SELECT, MSSQL и Quality.
Отправлено: Simple_Scada от 13 Февраля 2024, 08:37:38
Здравствуйте.

Можно использовать любые редакции начиная с SQL Server 2016 (SP1) и выше, либо более старые версии SQL Server 2008/2012/2014 в редакции Enterprise. В системе архивации v2 используется создание разделов БД. Старые версии SQL Server будут работать только с редакцией Enterprise, т.к. раньше создание разделов считалось особенной функцией и включалось только в самые дорогие версии СУБД. А сейчас считается обычной функцией и включается во все редакции.
Название: Re: Вопрос по SELECT, MSSQL и Quality.
Отправлено: ZWolol от 15 Февраля 2024, 07:13:28
Установил версию Enterprise.
Таблицы создались, но при запуске выводится ошибка в журнале сервера еще до SQL запроса.
Это что-то с базой данных?
Название: Re: Вопрос по SELECT, MSSQL и Quality.
Отправлено: Simple-Scada от 15 Февраля 2024, 10:56:39
Файловая группа не связана с файлом на жестком диске. БД была создана с нуля через сервер/редактор скады? Или это БД созданная ранее (или восстановленная из резервной копии)? Удалите БД полностью, затем снова запустите проект, чтобы сервер скады с нуля создал её. После этого проблема повторяется?
Название: Re: Вопрос по SELECT, MSSQL и Quality.
Отправлено: ZWolol от 16 Февраля 2024, 06:16:28
Я подключил нашу базу и выбрал:
Создать БД и таблицы
Создать таблицу переменных
Очистить все таблицы
В результате таблицы в базе появились но файлы архивов не создались.

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

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

Думал что это ошибка в таблице которой я передаю запрос для контроля.
Отключил от нее запрос, результат тот же.
Название: Re: Вопрос по SELECT, MSSQL и Quality.
Отправлено: Simple-Scada от 16 Февраля 2024, 11:14:41
Цитировать
Теперь все запускается без ошибок.
Проверили Ваш проект с SQL Server 2012 Enterprise. Он работает корректно неограниченное время.

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

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

Рекомендуем для данной задачи поискать специализированное ПО, или системы предназначенные для получения данных через БД (напрямую в переменные).
Название: Re: Вопрос по SELECT, MSSQL и Quality.
Отправлено: ZWolol от 16 Февраля 2024, 19:24:20
Цитировать
> Какое количество строк в таблице Currents?
Сейчас максимальное ID = 1500, но много удаленных.
Даже если тысяча по килобайту... вряд-ли это переполнит память :)

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

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

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

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

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

Отправили Вам на почту тестовую версию сервера скады для Demo-Time 2.6.10.0 и инструкции. С этой версией можно выявить точную причину проблемы.
Название: Re: Вопрос по SELECT, MSSQL и Quality.
Отправлено: ZWolol от 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)
Небыло печали да купила бабка порося...
Название: Re: Вопрос по SELECT, MSSQL и Quality.
Отправлено: ZWolol от 26 Февраля 2024, 12:18:34
Не хочу быть навязчивым, но как обстоят дела по закрытию сервера?

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

P.S.
Мне сказали, что уже купили скаду на 500 точек.
Название: Re: Вопрос по SELECT, MSSQL и Quality.
Отправлено: Simple-Scada от 26 Февраля 2024, 12:51:19
Цитировать
Не хочу быть навязчивым, но как обстоят дела по закрытию сервера?
Проверьте почту, мы писали вам час назад.
Название: Re: Вопрос по SELECT, MSSQL и Quality.
Отправлено: ZWolol от 29 Февраля 2024, 07:38:45
Если я использую шаблон окна для которого нет всех переменных.
Например: Не для всех окон есть привязанная переменная расхода (vrValue%Номер%)
Скада для них показывает нулевое начальное значение.
Это является нормой или желательно создать переменные для всех номеров.
Название: Re: Вопрос по SELECT, MSSQL и Quality.
Отправлено: Simple Scada от 29 Февраля 2024, 10:22:14
Здравствуйте.

Да, это нормально. Если "Поле" не связано с переменной, то оно будет доступно для ввода и в него выведется значение, указанное в редакторе (см. свойство "Значение (https://simple-scada.com/help/manual/field.html)").

При необходимости "Поля" которые не связаны с переменной (не указана подстановка или переменной с указанным именем не существует) можно скрывать. Для этого на событие "OnInit (https://simple-scada.com/help/script/additional-events.html)" шаблона/шаблонного окна нужно написать такой код:
Код: (delphi)
var
  aObj: TM_Object;
begin
  aObj := GetTemplateObject('Field1');
  aObj.Visible := aObj.Variable <> nil;
 
  aObj := GetTemplateObject('Field2');
  aObj.Visible := aObj.Variable <> nil;
end.
В скрипте нужно перечислить все возможные объекты, которые предполагается скрывать.
Название: Re: Вопрос по SELECT, MSSQL и Quality.
Отправлено: ZWolol от 27 Августа 2024, 12:27:10
Привет, это опять я.
Программисты сделали чтение данных через опс...

Сейчас заметил, что у меня не все данные в селект правильные.
Отключил свои запросы, оставил только для таблицы контроля.
Значения ид, даты, валуе правильные, а стате не всегда равен 101.
Сравнил данные таблицы с sql менеджером.
Приложил проект и логи.
Название: Re: Вопрос по SELECT, MSSQL и Quality.
Отправлено: Simple-Scada от 29 Августа 2024, 10:58:58
Здравствуйте.

Цитировать
Сейчас заметил, что у меня не все данные в селект правильные.
Для корректных тестов всегда используйте одинаковые запросы. Т.е. в скаде делайте запрос как в SQL Management Studio:
Код: (delphi)
  sQuery:= 'SELECT TOP 1000 [ID_Channel], [MeasureDate], [Value], [State] FROM [Currents];';
  tblMy.RunSQL(sQuery, tsSaveFixRow);
Также в скаде увеличьте ширину колонки с датой/временем, чтобы видеть время целиком.
Уточните, какой тип данных имеет колонка State в БД (либо пришлите код создания данной таблицы из SQL Management Studio).
Название: Re: Вопрос по SELECT, MSSQL и Quality.
Отправлено: ZWolol от 29 Августа 2024, 11:58:50
Разобрался...
У нас в связи с "безопасностью" закрыли порты.

Я не мог подключиться клиентом и случайно указал host сервера для базы проекта.
Проект запускался локально, а данные брал с сервера.
Вот и получилось, что данные (копия базы) совпадали, а статусы нет
потому, что на локальной базе нет опроса и они устарели (статус стал 101).

Извиняюсь за ложное беспокойство.