This is topic Обмен по ODBC in forum Работа в MS Windows (ODBC/DDE/OPC/NET) / Working under MS Windows at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/13/t/000130.html

Posted by Marina (Участник № / Member № 2971) on :
 
Здравствуйте!
Помогите разобраться в следующей ситуации.
Есть компьютер, где работает PI-Server. Мы берем данные по ODBC с PI-Server в Trace Mode.
На компьютере, где работает МРВ, установлен драйвер PI-ODBC и создан источник данных. Данные в Trace Mode приходят, но иногда данные «повисают» - не обновляются.
При нормальной работе ODBC профайлер формирует в файле следующее сообщение:
SQL:operator is: SELECT Value FROM PIcomp WHERE (tag='L1010/AI/OUT.CV') AND (time=DATE('*'))
SQL:columns is 1 VALUE
SQL:execute: SELECT Value FROM PIcomp WHERE (tag='L1010/AI/OUT.CV') AND (time=DATE('*'))
ODBC Read
SQL:operator is: SELECT Value FROM PIcomp WHERE (tag='L1011/AI/OUT.CV') AND (time=DATE('*'))
SQL:columns is 1 VALUE
SQL:execute: SELECT Value FROM PIcomp WHERE (tag='L1011/AI/OUT.CV') AND (time=DATE('*'))
ODBC Read
SQL:operator is: SELECT Value FROM PIcomp WHERE (tag='L1012/AI/OUT.CV') AND (time=DATE('*'))
SQL:columns is 1 VALUE
SQL:execute: SELECT Value FROM PIcomp WHERE (tag='L1012/AI/OUT.CV') AND (time=DATE('*'))
ODBC Read

При прекращении обновления:
SQL:operator is: SELECT Value FROM PIcomp WHERE (tag='L1010/AI/OUT.CV') AND (time=DATE('*'))
SQL:error in Prepare:24000
SQL:operator is: SELECT Value FROM PIcomp WHERE (tag='L1011/AI/OUT.CV') AND (time=DATE('*'))
SQL:error in Prepare:24000
SQL:operator is: SELECT Value FROM PIcomp WHERE (tag='L1012/AI/OUT.CV') AND (time=DATE('*'))
SQL:error in Prepare:2400

Что это означает и как выйти из этой ситуации?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Сообщение об ошибке выдается в протоколе драйвером PI-ODBC.
Текст SQL-запроса, формируемого МРВ Trace Mode, во всех случаях один и тот же.
Ошибка возникает на этапе организации драйвером выборки из БД, до передачи данных в МРВ.
Видимо, следует обратиться к документации на драйвер PI-ODBC и найти в ней расшифровку указанного сообщения об ошибке.
 
Posted by Marina (Участник № / Member № 2971) on :
 
А как влияет временное пропадание сети на обмен по ODBC? Восстанавливается ли связь МРВ с драйвером ODBC? [prey / молящийся]
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
С драйвером ODBC МРВ связь и не теряет. Теряется связь между драйвером ODBC и базой данных.

Каждый запрос сопровождается операцией соединения с БД и отключения от нее. Если же связь пропала, то выход из процедуры происходит по истечению таймаута.
 
Posted by Marina (Участник № / Member № 2971) on :
 
Если теряется связь между драйвером ODBC и базой данных, а МРВ не теряет связи с драйвером ODBC, то почему после перезапуска МРВ данные начинают обновляться, т.е. восстанавливается связь между драйвером ODBC и базой данных. Каким образом перезапуск МРВ влияет на связь между драйвером ODBC и базой данных? [Недоумение / Confused]
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Видимо, после потери связи между драйвером ODBC и базой данных драйвер "забывает" о подключенных к нему клиентах. Это особенность драйвера.
Чтобы восстановить взаимодействие МРВ с драйвером ODBC, надо произвести реинициализацию обмена по ODBC.
В разделе "Каналы для обмена по ODBC/Управление формированием SQL-запросов" указано, что такую операцию производит канал "SQL-выполнить" с соответствующими настройками:
"Если 5-й бит настройки С3 канала SQL-выполнить равен 1, то при выполнении команды сначала будет проведена реинициализация обмена по ODBC ..."
Надо создать канал с такой настройкой и при возникновении опасения, что связь с БД потеряна, надо этот канал заставить отработать.
 
Posted by Marina (Участник № / Member № 2971) on :
 
Спасибо. Попробуем. [fun / веселый]
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2