Ответы в темах
-
АвторЗаписи
-
ZWolol
УчастникСоздал процедуру:
create procedure sp_tables_info_rowset_64
@table_name sysname,
@table_schema sysname = null,
@table_type nvarchar(255) = null
as
declare @Result int
set @Result = 0
exec @Result = sp_tables_info_rowset @table_name, @table_schema, @table_type
goВсе заработало, только я не понял из-за этой процедуры или из-за того, что отключил в настройках линковки все лишнее… ну главное — результат. 🙂
ZWolol
УчастникЯ нашел на форуме сообщение 2012 года об исправлении ошибки линковки старых баз.
Достаточно в старой системной базе создать процедуру sp_tables_rowset_64,
чтоб она брала значения из аналогичной существующей (завтра проверю).P.S.
На 3D я работал с ICP DAS i-7188xa по 512 kb RAM и ROM.
А для 4D используется ПЛК210 256 mb RAM и 512 mb ROM.
Размер памяти в 1000 раз, хотя цена только в 2 раза.ZWolol
УчастникСпасибо вам за драйвера.
С их помощью я хотя бы разобрался с причинами проблем.Два SQL 2005 Profisional не поддерживают шифрования.
К SQL 2008 Enterprise заблокировали доступ.
С SQL 2012 не совместима линковка с 2008.
В общем целый букет…Так что я подожду пока начальство решит эти проблемы.
Иначе я же и окажусь крайним.P.S.
Мне нравилась Master SCADA 3D.
Я даже сделал для Master PLC универсальный драйвер COM-порта
для опроса приборов:
ВКТ-7.x (01,02,03,04,04P)
СПТ-942.x (01,02,03,04,05,06)
СПТ-943.x (01,02)
СПТ-961.x (1,2)
Меркурий 230 (ART,ART2P)
Их можно было все подключить к одному COM порту и опросить.
Но сейчас разработка 3D прекращена, а 4D это монстр какой-то.P.S.S.
Коды качества взяты:
0 — GOOD, иначе BAD.
1 — канал еще не опрашивался (ноль)
2 — канал отсутствует в конфигурации (ноль)
…
64 — нет архивных данных (ноль)
101 — данные устарели (остается старое значение)ZWolol
УчастникЯ всегда работал с Master SCADA через сервер OPC DA.
А у любого OPC есть качество.
И этот параметр у нас задается в свойствах штриховки элементов.Например: будет уровень 2.6 м, но заштрихован.
И не будет вопроса типа: почему он не меняется когда сливают или наливают.
Я к этому привык, но возможно сейчас это и не нужно.Просто сервер OPC для Telemera написан 15 лет назад и на десятке не работает.
Он читает таблицу Currents за раз и выдает значения с качеством.Я посмотрел настройки универсального OPC.
Там для каждого параметра задается свой запрос:
SELECT Value FROM Currents WHERE ID_Channel = 1,2,3…Я полагаю, что он по сети так и будет делать эти 100 селектов.
Ну разве что только MS SQL прокэширует эту таблицу у себя в памяти.P.S.
Плохое качество у нас норма. Станции в лесу на пересеченной местности.
Опрос ведется по радиомодему и связь в грозу не очень.ZWolol
УчастникДля OPC переменных есть параметр QUALITY.
Если уровень бака 0 с качеством BAD, то это не значит что бак пустой.
А в таблице SQL нет понятия качества, потому оно заносится в поле Status.Когда в базу пишется значение параметра, то в MeasureDate заносится текущая дата.
Это дата последней записи значения.
Если по каким-то причинам данные не обновляются (потеря связи с прибором или отказ оборудования), то SQL агент через заданный интервал времени устарения данных проставляет параметрам Status = BAD.Если параметрам проставлять NULL, но тогда плохо читаемые параметры будут на графике периодически падать в ноль, а не чертить прямую линию.
ZWolol
УчастникРаботает. Я всегда поражался конструкциям с объединениями.
Получается, что для получения 100 параметров с одного участка нужно 20 запросов для Value и еще 20 для их State (качества) вместо одного на симпле.
А потом еще для двух участков…А просто получить указатель на полученный Dataset со своей обработкой ни как?
ZWolol
УчастникВ таблице Currents текущие (мгновенные) параметры.
Параметров около 800, но нужны только 100.
Названия переменных должны быть буквенно-смысловыми, а не tg003.
У таблиц SQL нет тегов. Там все связки по ID.На трех службах есть SQL базы Telemera [192.168.0.4],[192.168.0.27],[192.168.5.40]
SELECT [ID_Channel],[MeasureDate],[Value],[State]
FROM [192.168.5.40].[Telemera].[dbo].[Currents]3; 2025-03-20 10:57:25.547; 3.0498; 0 \
4; 2025-03-20 10:57:25.547; 3.2483; 0 — это уровни воды в баках
5; 2025-03-20 10:57:25.547; 3.6876; 0 /
…На Simple SCADA я делаю селект этой таблицы.
А полученные данные я присваиваю соответствующим переменным в зависимости от ID.
vrSQL2Gdp1h, vrSQL2Gdp1h_Q — это уровень и качество бака 1
vrSQL2Gdp2h, vrSQL2Gdp2h_Q — это уровень и качество бака 2
(пример скриптов на паскале в первом сообщении)ZWolol
УчастникСпасибо, Доп. параметры помогли. Не обратил на них сразу внимание.
А теперь чтение таблицы…ID_Channel Value State
678 20.1 0
783 1207.0 0
801 123.4 101
…По описанию DB Import — это второй тип.
Первый тег будет для значений ID_Channel, а второй для Value.
Идешки числовые, значит в запросе нужно ставить преобразование их в стринг и добавлять в начале префикс типа ‘tg’?
А статус нужно считывать другим запросом и с префиксом ‘st’?Для DB Import Plus — запрос будет из сотни CASE?
Хотя там в запросе можно сразу заменить числовые ID на текстовые теги.что-то опять грустно стало…
ZWolol
УчастникСпасибо за помощь, но не помогло…
Сначала я делал по описанию DB Import.
Все заносится, но в конце:
>> Если настройка выполнена корректно,
>> то на странице данных устройства можно будет увидеть полученные значения.
Я вижу:
[1] Simulator
Драйвер :DrvSimulator 6.0.0.0
…
Потому и попросил пример.Попробовал DB ImportPlus, результат тот же.
Но у него есть Проверка соединения, которая пишет следующее:Ошибка при соединении с БД; Подключение к серверу успешно установлено, но затем произошла ошибка при входе. (provider: Поставщик SSL, error: 0 — Цепочка сертификатов выпущена центром сертификации, не имеющим доверия.)
SQL 2008 Enterprise R2 (10.50.1600) может в этом проблема?
ZWolol
УчастникСпасибо, посмотрю…
С SQL у меня похоже проблема с нашими безопасниками.
Сейчас идет разделение сетей, и перенос системы в отдельный изолированный домен.
И черт их разберет с их тунелями доступа и переадресацией.
Уже год как переносят и когда закончат неизвестно.Я менеджером подключаюсь к базам по имени или IP и нет проблем.
Но когда я подключаюсь к локальной базе у которой указан Linked Servers,
то менеджер видит базу и таблицы в ней, но запрос:
SELECT [ID_Channel]
,[MeasureDate]
,[Value]
,[State]
FROM [192.168.5.40].[Telemera].[dbo].[Currents]
GO
Выдает ошибку:
Msg 7399, Level 16, State 1, Line 1
The OLE DB provider «SQLNCLI10» for linked server «192.168.5.40» reported an error. The provider did not give any information about the error.
Msg 7312, Level 16, State 1, Line 1
Invalid use of schema or catalog for OLE DB provider «SQLNCLI10» for linked server «192.168.5.40». A four-part name was supplied, but the provider does not expose the necessary interfaces to use a catalog or schema.Решил попробовать сделать на рапиде.
Ей не нужна линковка баз. -
АвторЗаписи