PDA

Просмотр полной версии : Master Scada - SQL server - Master Scada



vvu2011
11.02.2014, 15:52
Здравствуйте!
Имеется БД в ms sql 2012 (бесплатная версия) server, включающая в себя таблицу из двух столбцов:1. метка времени 2. значение параметра. Данные в БД записаны проектом Master Scada v3.5. Теперь необходимо вывести эти данные в тренд другого проекта.
Xранимая процедура чтения:
procedure read_bd1
as
select * from dbo.t1

В Master Scada добавлен БД-конектор MSSQL, указаны правильные имена сервера и базы данных, добавлена хранимая процедура, указано правильное имя процедуры, установлена галочка <выборка>, добавлены 2 параметра 1ый тип время, второй тип вещественный. Установлена галочка <временной параметр>-0.

Переменная в которую сбрасывается значение выводится на тренд.

ПО заданию тренд должен вывести значения параметра за весь временной интервал, хранимый в БД.

В моем варианте выборка возвращает последнее значение. Если устанавливаю галочку <Использовать архивные значение> выборка не выполняется вообще.

По руководству такая возможность есть. Что делаю неправильно?

SCADAMaster
11.02.2014, 16:00
У выходного значение выборки нужно включить архивацию
Ознакомьтесь с документацией про настройку выборки:
http://www.masterscada.ru/services/support/art_step_by_step/BD/BD_Part_2.pdf
Если не разберетесь - выложите ваш проект сюда.

ongleb
11.02.2014, 16:30
на сколько я помню MSSQL из хранимой процедуры вернуть таблицу может но как то там по уродски
вроде в процедуре можно создать временную таблцу, заполнить ее а после исполнения процедуры запросить SELECT ALL FROM $tmp_table
таблица удаляется при закрытии сеанса

я под MSSQL писал примерно год назад
и исходник сейчас далековато
но на сколько я помню такое позорище только в MSSQL'е
во всех остальных диалектах процедура могла возвращать несколько значений в виде таблицы

vvu2011
13.02.2014, 14:14
Здравствуйте!
Спасибо за совет, все заработало и появились еще вопросы:

В I.
В БД есть таблица и 3х столбцов: 1. <ИМЯ> 2. <Метка времени> 3. <Значение>. Таблица постоянно пополняется новыми записями, записи в столбце <ИМЯ> принимают значения 'АВТ1' или 'АВТ2'. Для чтения данных таблицы используется хранимая процедура:

procedure read_bd3
@name char(50)
as
select <Метка времени>, <Значение> from dbo.tab3 where name=@name

Выборка выполняется, все значения выводятся в тренд, но, если изменяются условия запроса (вход <@name> вместо значения 'АВТ1' принимает значения 'АВТ2' или наоборот), значения старой выборки остаются на тренде, а значения новой начинают прорисовываться только с того момента, когда поменялись условия выборки.

Как организовать запрос так чтобы значения новой выборки заменяли значения старой выборки?

SCADAMaster
13.02.2014, 16:12
Так не получится - если значение с меткой времени записано, то его нельзя перезаписать. Только если удалить архив.
Может быть вам лучше сделать два выхода - для АВТ1 и АВТ2?
И вам еще обязательно нужно построить запрос так, чтобы в новом запросе не читать старые данные - иначе будете грузить сервер и компьютер. В документации описано как это можно сделать.

vvu2011
14.02.2014, 12:01
Здравствуйте!

1. Что такое MSRT-MS-SQL, MSRT-SQL-Arc-Client? Какая разница между ними?

2. Можно в действующую MSRT1K добавить модуль для связи с SQL - сервером? Или нужно изначально заказывать все нужные опции?

SCADAMaster
14.02.2014, 13:04
1. Что такое MSRT-MS-SQL, MSRT-SQL-Arc-Client? Какая разница между ними?

MSRT-MS-SQL - для автономных версий, для работы с базой данных MS SQL/
MSRT-SQL-Arc-Client - для сетевых версий, это модуль для доступа к архивам MAS (то есть к архивам хранящихся в БД в архивном сервере).



2. Можно в действующую MSRT1K добавить модуль для связи с SQL - сервером? Или нужно изначально заказывать все нужные опции?
Можно. Обратитесь на scada(собка)insat.ru

vvu2011
14.02.2014, 13:26
Проще говоря, MSRT-MS-SQL - проект Master Scada и SQL - сервер должны находиться на одном ПК, а MSRT-SQL-Arc-Client - проект Master Scada и SQL сервер могут находиться на разных ПК в одной сети?

vvu2011
14.02.2014, 13:29
Или вообще нужны обе опции, если проекты Master Scada по TCP работают с SQL - сервером??

SCADAMaster
14.02.2014, 14:03
Проще говоря, MSRT-MS-SQL - проект Master Scada и SQL - сервер должны находиться на одном ПК, а MSRT-SQL-Arc-Client - проект Master Scada и SQL сервер могут находиться на разных ПК в одной сети?
Нет, не так.
Если у вас автономный проект - один компьютер в сети, и вам нужен доступ к БД то вам нужно купить опцию MSRT-MS-SQL.
Если же у вас сетевой проект - то есть несколько компьютеров в сети и нужен доступ к БД, то на главный компьютер (в который добавлен БД-коннектор) ставится архивный сервер MAS, а на второй компьютер - MSRT-Net с оцией MSRT-Arc-Client. Посмотрите вот этот документ:
http://insat.ru/products/faq_scada_opc/Configuration/MAS/

vvu2011
24.02.2014, 16:02
Здравствуйте!

ВП1
После нажания на кнопку <Создать автоматически> выдает сообщение: "Индекс находится вне границ массива".

ВП2
При переходе в режим исполнения выдается сообщение: "Ошибка" и не правильно записывает время в архив.

SCADAMaster
24.02.2014, 16:53
После нажания на кнопку <Создать автоматически> выдает сообщение: "Индекс находится вне границ массива".

Это работает если выбрать процедуру на закладке "Задание процедуры из базы".



При переходе в режим исполнения выдается сообщение: "Ошибка" и не правильно записывает время в архив.
Дело в том, что запись в архив осуществляется в формат UTC. Мы добавили в ФБ настройку - "UTCTimestamp", попробуйте ее изменить.

vvu2011
03.03.2014, 13:00
Здравствуйте!

в1
Выборка из MySQL через редактор отчетов.

При построении <Строки соединения> master scada не определяет MySQL сервер (рис.2). Если ввожу данные сервера и БД вручную при проверке соединения выдает сообщение рис3. При работе с сервером через хранимые процедуры все работает как надо, записываю, читаю данные из БД.

Все делаю согласно инструкции "Применение баз данных в Master Scada" пункт 3. Если использую MSSQL сервер все получается великолепно.

В2.

Выборка MySQL.

Master Scada обязательно требует указать в выборке параметр- метку времени. Как можно считать из БД записи без метки времени.

SCADAMaster
03.03.2014, 13:56
Здравствуйте!
Выборка из MySQL через редактор отчетов.

В редакторе отчетов пока что можно работать только с MS SQL.



Master Scada обязательно требует указать в выборке параметр- метку времени. Как можно считать из БД записи без метки времени.
Все значения без метки времени?
Дело в том, что при выборке значения будут записываться в архив скады, поэтому и необходима метка времени (иначе все записи будут постоянно записываться в архив).

vvu2011
03.03.2014, 14:36
Есть какие-нибудь ФБ или другие средства, что бы вывести на мнемосхему архив строк?

SCADAMaster
03.03.2014, 15:16
Можно вывести средствами тренда - включите отображение в виде таблицы значений.

vvu2011
06.03.2014, 19:21
Здравствуйте!

При выходе из режима исполнения никогда не пропадает окно (в приложении). Это плохо или все равно)???

Спасибо.

SCADAMaster
06.03.2014, 19:42
Это плохо. Значит что остались данные которые не были проэкспортированы.
Причин может несколько - отсутствие связи с базой данных, большой объем данных (но тогда окно должно закрываться через некоторое время).

vvu2011
06.03.2014, 21:14
1. Поставил галочку (см. рис.) окно стало закрывать без проблем.

2. Если произошел обрыв с внешней БД, за это время MS накопила архив. После восстановления связи с БД MS передаст эту часть архива?

3. На некоторых участках приборы могут выключить на 2-3 дня, после включения MS автоматически соединяется с ними или нет?

SCADAMaster
06.03.2014, 21:40
2. Если произошел обрыв с внешней БД, за это время MS накопила архив. После восстановления связи с БД MS передаст эту часть архива?

Да, передаст.




3. На некоторых участках приборы могут выключить на 2-3 дня, после включения MS автоматически соединяется с ними или нет?
Если ОРС сервер соединится с приборами, то и MasterSCADA получит данные.

vvu2011
08.03.2014, 14:43
При записи данных во внешнюю БД (Mysql) master scada создает таблицу (см. приложение). Какой столбец нужно использовать для чтения метки времени: Time или LocalTime

Спасибо.

SCADAMaster
08.03.2014, 17:42
time - это время в формате UTC, LocalTime - локальное время. Они у вас почему то совпадают, вероятно из-за галочки "Передавать время в формате UTC".
Можете использовать любой