Стартовая страница › Форумы › Понять, как работает ПО › Запись в базу данных по событию
- В этой теме 18 ответов, 4 участника, последнее обновление 9 месяцев, 3 недели назад сделано
Mikhail.
-
АвторСообщения
-
25.09.2024 в 11:58 #34847
AndreyV
УчастникДобрый день!
Подскажите пожалуйста, возможно ли в Rapid SCADA 6.3.0.0 записывать текущие данные в базу данных не только по таймеру или изменению данных, по другому событию (изменение значения какого-то канала и т.п.)? Как это реализовать?
Имеется настроенный экспорт в базу данных, все отправляется раз в 60 секунд, а необходимо отправлять несколько раз в день по расписанию (модуль автоуправления имеется). Не вижу как привязать отправку данных к иному триггеру (нежели «по таймеру» или «при получении»). https://ibb.co/9tpshvR
Не совсем ясно значение поля «Код команды» в основных параметрах экспорта в БД. На что он влияет и что там прописывать? Разъясните пожалуйста. https://ibb.co/80PWvTm-
Эта тема была изменена 9 месяцев, 3 недели назад от
AndreyV.
26.09.2024 в 06:53 #34849Romiros
УчастникДобрый день. Вам скорее нужна связка DrvDbImport и Модуль авто управления. В DbImport подготовьте команду на запись с нужным запросом и вызывайте ее в МАУ по таймеру или нужному триггеру.
26.09.2024 в 13:55 #34850Oleg
УчастникНет, тут вопрос как записать в стороннюю БД mySQL текущие данные из SCADA 1 раз по триггеру?
В настройках модуля экспорта только или по изменению или по интервалу.Как вариант у нас есть выход создать копии каналов, которые надо экспортировать во внешнюю БД и с помощью скрипта в SCADA копировать значения нужных каналов в копию этих каналов. Модуль экспорта видит, что данные изменились и экспортирует данные во внешнюю БД. Есть два минуса — лишняя работа по созданию каналов, и во время перезагрузки сервера модуль экспорта в БД считает, что данные обновились и еще раз их экспортирует.
Есть более элегантное решение? Спасибо!
26.09.2024 в 15:08 #34851Romiros
УчастникНет, тут вопрос как записать в стороннюю БД mySQL текущие данные из SCADA 1 раз по триггеру?
Я про это и написал. Используйте драйвер импорта из БД вместо модуля экспорта. Сможете записывать в MySQL с нужным интервалом.
26.09.2024 в 15:50 #34854Mikhail
МодераторДобрый день!
В файле «Особенности ModDbExport 6», который можно найти в Дополнительной документации по ссылке на сайте, сказано, что модуль может принимать такую команду
cmd=ExportArchive startDT=2022-12-23 10:00:00 endDT=2022-12-23 11:00:00
Вот её и нужно отправлять с помощью Модуля автоуправления по таймеру. Но ещё придётся формировать текст в выходной формуле. Начальное и конечное время можно поставить одинаковым.
26.09.2024 в 15:51 #34855Mikhail
МодераторЕщё есть такой способ: из модуля экспорта вызывать хранимую процедуру для экспорта текущих данных и в ней игнорировать данные за ненужное время.
26.09.2024 в 17:10 #34856Oleg
УчастникRomiros, спасибо. Т.е. если в Модуле импорта из БД плюс во вкладке Команды вставить такой запрос, то будет работать экспорт? @cnlNum и другие переменные этот модуль воспринимает?
INSERT INTO counterpcs (cnlnum, datetime, val)
VALUES (@cnlNum, ADDTIME(@timestamp,30000.0), @val)
ON DUPLICATE KEY UPDATE cnlnum = @cnlNum, datetime = ADDTIME(@timestamp,30000.0), val = @val26.09.2024 в 17:14 #34857Oleg
УчастникМихаил, спасибо за ответ, только пока ничего не ясно)
На какой канал надо посылать команду в МАУ? И какой текст надо в канале писать?
Формировать текст, это значит в нашем запросе заменять @cnlNum на {n} и т.д.?cmd=ExportArchive
startDT=2022-12-23 10:00:00
endDT=2022-12-23 11:00:00INSERT INTO counterpcs (cnlnum, datetime, val)
VALUES (@cnlNum, ADDTIME(@timestamp,30000.0), @val)
ON DUPLICATE KEY UPDATE cnlnum = @cnlNum, datetime = ADDTIME(@timestamp,30000.0), val = @val26.09.2024 в 17:15 #34858Oleg
УчастникМихаил, подскажите пожалуйста, где прочитать про «вызывать хранимую процедуру для экспорта текущих данных» и в ней игнорировать данные за ненужное время. Спасибо
26.09.2024 в 17:16 #34859Romiros
УчастникДа работать будет. По синтаксису точно не помню,но я так отправлял записи в БД ещё на пятой версии скады, причем скопом кучу каналов, единственное наверное через формулу в виде строки. Если будет нужно, завтра на работе могу посмотреть. Ну или попробуйте вариант Михаила, может так проще будет.
26.09.2024 в 18:46 #34860Oleg
Участникcmd=ExportArchive
startDT=2022-12-23 10:00:00
endDT=2022-12-23 11:00:00Нашел на форуме про тег команды, экспорт по таймеру работает.
Только остался нюас 😉 Как время задавать динамически?
startDT= {Now} пройдет?
А если нужно текущее время минус полчаса, как это написать? Или надо отправить в канал 1, а в канале если пришла 1, то формировать тестовую команду? Она потом уйдет в модуль экспорта по тегу?26.09.2024 в 19:39 #34861Oleg
УчастникНет, все равно как-то неправильно работает. Если в команде указать время 14:01:00,
то экспорт будет в 14:02:00, потом в 14:04:00, далее в 14:06:00 и так далее, он не останавливается. Никаких других задач в модуле экспорта нет..26.09.2024 в 20:31 #34862Oleg
УчастникТеперь просто перестало работать, по логам команда ушла и пришла, куда копать дальше?
2024-09-26 20:27:41 Модуль ModDbExport 6.1.0.0 запущен
2024-09-26 20:27:41 Запуск экспорта2024-09-26 20:27:41 Модуль ModAutoControl 6.1.0.1 запущен
2024-09-26 20:27:41 Проверка регистрации ModAutoControl: Регистрационный ключ действителен.
2024-09-26 20:27:41 Состояние модуля загружено
2024-09-26 20:28:00 Сработка триггера «Триггер 8»
2024-09-26 20:28:00 Отправка команды. Канал 10555
2024-09-26 20:28:00 Отправка команд триггера завершена———————————————————————————
2024-09-26 20:27:41 Экспортёр «[4] RapidDB_new_data_get» запущен
2024-09-26 20:28:00 Получена команда экспортёра: ExportArchiveНаименование : [4] RapidDB_new_data_get
Сервер БД : ExportDB2
Соединение : нормаТекущие данные
—————
Состояние : отключеноИсторические данные
——————-
Состояние : норма
В очереди : 0 из 1000
Экспортировано : 0
Пропущено : 027.09.2024 в 10:01 #34863Mikhail
МодераторПопробуйте для тестов отключить автоматическую отправку команд и отправлять команды вручную через веб-интерфейс. Будет ли работать?
Вызов хранимой процедуры: синтаксис запроса нужно посмотреть в документации на СУБД. Модулю экспорта без разницы, какой запрос вызвать, обычный SQL или хранимку.
27.09.2024 в 10:04 #34864Mikhail
Модераторто экспорт будет в 14:02:00, потом в 14:04:00, далее в 14:06:00 и так далее, он не останавливается
Вы правы. Что-то я не подумал про это. Такова логика работы модуля. Экспорт по команде — это как дополнение к автоматическому экспорту.
-
Этот ответ был изменен 9 месяцев, 3 недели назад от
Mikhail.
-
Эта тема была изменена 9 месяцев, 3 недели назад от
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.