This is topic Отображение связи с сервером in forum Мониторы Реального Времени / Real Time Monitors at Форум TRACE MODE: техническая поддержка.


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

Posted by arkos (Участник № / Member № 6144) on :
 
Здравствуйте!
В нашем проекте (МРВ+(32000 ch) TM 6.08 )данные для отображения поступают из БД (My SQL Workbench 5.2 CE), находящейся на удаленном сервере по локальной сети. При разрыве связи с сервером нужно выводить сообщение об этом оператору. Привязали данное сообщение к атрибуту Достоверность канала Сall, вызывающего шаблон БД. При выключении сервера атрибут Достоверность не изменяется (даже через 600 с) проект продолжает работать, т. е. оператор не знает о том, что связь прервана. Пробовали привязывать атрибуты 52, 91, 120. Отсутствие связи с сервером они не отражают. Отображать сообщение о том, что нет связи с сервером нужно не позднее 10 с.

Есть ли разница в реализации этой задачи в Windows XP и Windows 7?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
МРВ может зафиксировать отсутствие связи с БД только по возвращаемому ODBC-драйвером сообщении об ошибке исполнения транзакции.
Если признак недостоверности не выставляется, значит, ODBC-драйвер не возвращает соответствующий код ошибки.

Если не удастся настроить ODBC-драйвер соответствующим образом, можно попытаться периодически запрашивать у БД заведомо изменяющуюся переменную, по которой можно было бы судить о наличии связи.

Например, можно запросить у сервера текущее время.
Для SQL-сервера, начиная с версии 2008 г., есть такой оператор GETDATE ( ).

Встроенный в Trace Mode 6 SQL-интерфейс работает одинаково в Windows XP и Windows 7.
 
Posted by arkos (Участник № / Member № 6144) on :
 
Для отработки Баз данных мы используем канал CALL.Move. При обрыве связи с Сервером канал CALL.Move прожолжает работать. В канале в который принимается данные (дата) остается все время последнее значение.Но ведь из БД (сервера) уже ничего не поступает, а в канале висит значение. Почему значение не обнуляется? Как можно обнулить канал?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
"Почему значение не обнуляется?"
"Ноль" - это тоже вполне допустимое число. Обнуление аргументов канала не есть признак и необходимое следствие отсутствия связи с БД.

Признаком обнаружения отсутствия связи с БД является взведение атрибута ДОСТОВЕРНОСТЬ у канала вызова шаблона SQL-запроса или косвенный признак, как описано в предыдущем посте.

Непонятно, как Вы организуете обращение к БД с помощью канала MOVE.
 
Posted by arkos (Участник № / Member № 6144) on :
 
Данные в БД обновляются раз в 1с, соответственно мы должны читать их с той же частотой. С помощью канала MOVE посылается 1 на вход всех шаблонов БД (хотя из-за объема мы все равно не принимаем данные с частотой 1с мин. 4 с). Возможно вы предложите другой вариант постоянного опрашивания БД.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Мы не можем предложить более быстрый способ обмена с БД, поскольку динамика обмена определяется целиком возможностями ODBC-драйвера и СУБД.
Если драйвер не справляется и выдает ошибку, соответствующему каналу SQL-запроса выставляется признак недостоверности, который использоваться как при обработке, так и при отображении полученных данных.

Если стоит задача обработки и/или отображения данных из БД "на лету", то торможение безусловно будет иметь место.
Если Вас устроит считывание данных блоками, некими массивами последовательных записей, то, возможно, более редкое групповое считывание нескольких записей будет в конечном итоге более устойчивым. Об организации группового считывания столбцов и строк см. в Справочной системе.
 
Posted by arkos (Участник № / Member № 6144) on :
 
Извините еще раз переспрошу: то есть если канал (CALL) отключить от источника данных , то он не обнулится, а будет хранить последний результат.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Именно так.
 
Posted by arkos (Участник № / Member № 6144) on :
 
Все данные из БД я получаю именно в CALL каналы (в том числе и дату). Как мне может пригодиться оператор GETDATE?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Оператор GETDATE (текущее время SQL-сервера) можно записать в какой-нибудь аргумент динамику.
Если он меняется с ожидаемым периодом, значит связь с БД есть.
Если "застыл" - связи нет.
 
Posted by Баранов Вячеслав (Участник № / Member № 6904) on :
 
Тоже встал вопрос о выводе сообщения в ОТ при потере связи с сервером. Как я понял, необходимо мониторить атрибут 4 канала, и привязать его к соответствующему атрибуту 10-25 (биты канала hex16), а там уже в словаре прописать нужное сообщение. Так вот вопрос - как привязать атрибут 4 к атрибуту (10-25), или нужно идти каким-то другим путем?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
"Потеря связи с БД" скажется одновременно на всех SQL-запросах к этому серверу. Поэтому достаточно мониторить только один CALL.SQL, который обращается к БД чаще других.
Если все-таки есть необходимость фиксировать устойчивость обмена по каждому SQL-запросу, надо "упаковывать" атрибуты 4 программно или использовать для пересылки канал CALL.MOVE.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2