Варианты хранения данных в Historian. Storage Metod

Сервер БД Historian, ранее InSQL

Варианты хранения данных в Historian. Storage Metod

Сообщение regrsv » Ср мар 20, 2013 11:45 am

Доброго времени суток уважаемые коллеги.
Вопрос в разном виде уже поднимался на форуме.
Делаю отчёты. Сделал свою таблицу в MSSQL.
CREATE TABLE [dbo].[MyTable](
[ID] [int] IDENTITY NOT NULL,
[DT] [smalldatetime] NOT NULL,
[PT_304] [float] NULL,
[PT_305] [float] NULL
) ON [PRIMARY]
Сделал хранимую процедуру для передачи данных с Historian в свою таблицу MyTable.
Хотел сделать просто и легко job запускаемый раз в минуту вида
Insert Into MyTable
SELECT DateTime, PT_304, PT_305, PT_306
FROM
(SELECT DateTime, tagname, value FROM history where tagname='PT_304' OR tagname='PT_305' OR tagname='PT_306' ) AS req
PIVOT
(avg(value)FOR tagname IN( PT_304, PT_305, PT_306)) AS pvt
ORDER BY pvt.DateTime
Дело в том, что если какое либо из значений не поменялось в PLC, то результат возвращается NULL
2013-03-20 10:35:18.243 NULL NULL 30.2000007629395
2013-03-20 10:35:23.243 NULL NULL 30.7999992370605
2013-03-20 10:35:28.243 NULL NULL 25.2000007629395
т.е. чтобы выдернуть действительное значение надо для каждого найти когда оно последний раз было, считать значение в это время
присвоить его переменной, потом уже делать Insert вставляя values каждого значения.
Хранимая процедура разрастётся. Ладно если сигналов не так много. А если их действительно много?
уже пробовал все виды Storage Metod. Cyclic ставлю 5 секунд. Честно пишет каждые 5 секунд, но только если значение поменялось.
Как сделать, чтобы значение писалось всегда?
заранее спасибо.
regrsv
 
Сообщения: 28
Зарегистрирован: Чт янв 31, 2013 11:00 am

Re: Варианты хранения данных в Historian. Storage Metod

Сообщение beachbear » Ср мар 20, 2013 11:53 am

я бы рекомендовал копать в сторону cyclic режима запроса, а сохранять как дельту.
тогда запрос будет гарантированно возвращать значения известные на момент границы цикла времени.
beachbear
 
Сообщения: 149
Зарегистрирован: Вт апр 21, 2009 2:55 pm

Re: Варианты хранения данных в Historian. Storage Metod

Сообщение Генератор зла » Ср мар 20, 2013 11:58 am

regrsv писал(а):Как сделать, чтобы значение писалось всегда?

Для этого есть Forced Storage.
Только вот...
Убедитесь сначала, что это не косяк сервера в/в. Ибо и он может "забивать" на опрос неизменяемых переменных. Тогда надо его настраивать.
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Варианты хранения данных в Historian. Storage Metod

Сообщение regrsv » Ср мар 20, 2013 4:12 pm

Всё работает через RSLinx. Historian связан ещё через FSGateWay. И похоже проблема в linx. В проекте IDE открыл созданный мною в ArchestrA, OPCClient и поставил для ScanGroup свойство Scan Mode "ActiveALL"
Проверяю, смотрю OPC Group diagnostic на RSlinx. Из всей кучи тэгов меняется только один. Который один и меняется в PLC. Получается если тэг не изменился, RSLinx его значение не пересылает заново. Возможно я ошибаюсь. Кто нибудь знает как от этого уйти?
regrsv
 
Сообщения: 28
Зарегистрирован: Чт янв 31, 2013 11:00 am

Re: Варианты хранения данных в Historian. Storage Metod

Сообщение Генератор зла » Ср мар 20, 2013 4:39 pm

Зацепите к RSLinx какой-нибудь OPC-клиент (KEP, Matrikon) и проверьте получение данных. Станет ясно кто именно не опрашивает неизменные данные.
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm


Вернуться в Historian Server

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

cron