This is topic Запись данных в БД с заданной периодичностью in forum Работа с приложениями (ODBC-SQL/OPC/DDE) at Форум TRACE MODE: техническая поддержка.


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

Posted by Eman1982 (Участник № / Member № 5619) on :
 
Добрый день! Создаю программу, которая пишет данные с датчиков в БД MS SQL. По нажатию кнопки данные пишутся нормально. Но не могу понять, как писать эти данные автоматически, скажем, каждые 5 секунд.
И вообще, как можно выполнять какое-то действие через заданные интервалы времени?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Способы организации периодичности исполнения каких-либо действий существенно зависят от механизмов реализации этих действий.

В частности, для организации периодической записи в БД, надо в канал CALL_SQL периодически подавать номер SQL-запроса, реализуемого этим каналом. Посылать этот номер в канал можно либо программно, либо с помощью каналов CALL_MOVE или CALL_Set (задав им соответствующие периоды обработки).
Надо при этом учитывать, что период посылки должен быть больше времени реализации SQL-запроса (после завершения запроса значение канала CALL_SQL сбрасывается).
 
Posted by Eman1982 (Участник № / Member № 5619) on :
 
С помощью каналов пока не получается, а программно как именно?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В программе должна быть всего 1 строка присвоения целочисленноу аргументу (OUT) значения, равного номеру запроса.
Аргумент программы должен быть связан с атрибутом ВХОД канала CALL_SQL.
Период обработки CALL_Program должен быть задан, например, 5 сек. Это при условии, что запрос в течение 5 секунд будет выполнен.

Именно такую функцию и выполнят для Вас каналы CALL_MOVE или CALL_Set.
 
Posted by Eman1982 (Участник № / Member № 5619) on :
 
Спасибо! Удобней всего получается при использовании канала типа Move.

Сделал:
1. Создаем канал CALL
2. Выставляем:
Тип вызова: Move
Период: 5 сек
3. В аргументах создаем:

Переменная "Номер_запроса" IN REAL зн-е по умолчанию=1 (1- номер SQL запроса на запись). Привязки нет.

Переменная "Команда_на_запись" OUT REAL.
"Команда_на_запись" привязана на База_данных:Входное значение.

Все, теперь каждые 5 сек идет запись в БД.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2