Запись в базу данных по событию

Стартовая страница Форумы Понять, как работает ПО Запись в базу данных по событию

Просмотр 15 сообщений - с 1 по 15 (из 19 всего)
  • Автор
    Сообщения
  • #34847
    AndreyV
    Участник

    Добрый день!
    Подскажите пожалуйста, возможно ли в Rapid SCADA 6.3.0.0 записывать текущие данные в базу данных не только по таймеру или изменению данных, по другому событию (изменение значения какого-то канала и т.п.)? Как это реализовать?
    Имеется настроенный экспорт в базу данных, все отправляется раз в 60 секунд, а необходимо отправлять несколько раз в день по расписанию (модуль автоуправления имеется). Не вижу как привязать отправку данных к иному триггеру (нежели «по таймеру» или «при получении»). https://ibb.co/9tpshvR
    Не совсем ясно значение поля «Код команды» в основных параметрах экспорта в БД. На что он влияет и что там прописывать? Разъясните пожалуйста. https://ibb.co/80PWvTm

    • Эта тема была изменена 9 месяцев, 3 недели назад от AndreyV.
    #34849
    Romiros
    Участник

    Добрый день. Вам скорее нужна связка DrvDbImport и Модуль авто управления. В DbImport подготовьте команду на запись с нужным запросом и вызывайте ее в МАУ по таймеру или нужному триггеру.

    #34850
    Oleg
    Участник

    Нет, тут вопрос как записать в стороннюю БД mySQL текущие данные из SCADA 1 раз по триггеру?
    В настройках модуля экспорта только или по изменению или по интервалу.

    Как вариант у нас есть выход создать копии каналов, которые надо экспортировать во внешнюю БД и с помощью скрипта в SCADA копировать значения нужных каналов в копию этих каналов. Модуль экспорта видит, что данные изменились и экспортирует данные во внешнюю БД. Есть два минуса — лишняя работа по созданию каналов, и во время перезагрузки сервера модуль экспорта в БД считает, что данные обновились и еще раз их экспортирует.

    Есть более элегантное решение? Спасибо!

    #34851
    Romiros
    Участник

    Нет, тут вопрос как записать в стороннюю БД mySQL текущие данные из SCADA 1 раз по триггеру?

    Я про это и написал. Используйте драйвер импорта из БД вместо модуля экспорта. Сможете записывать в MySQL с нужным интервалом.

    #34854
    Mikhail
    Модератор

    Добрый день!

    В файле «Особенности ModDbExport 6», который можно найти в Дополнительной документации по ссылке на сайте, сказано, что модуль может принимать такую команду

    cmd=ExportArchive
    startDT=2022-12-23 10:00:00
    endDT=2022-12-23 11:00:00

    Вот её и нужно отправлять с помощью Модуля автоуправления по таймеру. Но ещё придётся формировать текст в выходной формуле. Начальное и конечное время можно поставить одинаковым.

    #34855
    Mikhail
    Модератор

    Ещё есть такой способ: из модуля экспорта вызывать хранимую процедуру для экспорта текущих данных и в ней игнорировать данные за ненужное время.

    #34856
    Oleg
    Участник

    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 = @val

    #34857
    Oleg
    Участник

    Михаил, спасибо за ответ, только пока ничего не ясно)

    На какой канал надо посылать команду в МАУ? И какой текст надо в канале писать?
    Формировать текст, это значит в нашем запросе заменять @cnlNum на {n} и т.д.?

    cmd=ExportArchive
    startDT=2022-12-23 10:00:00
    endDT=2022-12-23 11:00:00

    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 = @val

    #34858
    Oleg
    Участник

    Михаил, подскажите пожалуйста, где прочитать про «вызывать хранимую процедуру для экспорта текущих данных» и в ней игнорировать данные за ненужное время. Спасибо

    #34859
    Romiros
    Участник

    Да работать будет. По синтаксису точно не помню,но я так отправлял записи в БД ещё на пятой версии скады, причем скопом кучу каналов, единственное наверное через формулу в виде строки. Если будет нужно, завтра на работе могу посмотреть. Ну или попробуйте вариант Михаила, может так проще будет.

    #34860
    Oleg
    Участник

    cmd=ExportArchive
    startDT=2022-12-23 10:00:00
    endDT=2022-12-23 11:00:00

    Нашел на форуме про тег команды, экспорт по таймеру работает.

    Только остался нюас 😉 Как время задавать динамически?
    startDT= {Now} пройдет?
    А если нужно текущее время минус полчаса, как это написать? Или надо отправить в канал 1, а в канале если пришла 1, то формировать тестовую команду? Она потом уйдет в модуль экспорта по тегу?

    #34861
    Oleg
    Участник

    Нет, все равно как-то неправильно работает. Если в команде указать время 14:01:00,
    то экспорт будет в 14:02:00, потом в 14:04:00, далее в 14:06:00 и так далее, он не останавливается. Никаких других задач в модуле экспорта нет..

    #34862
    Oleg
    Участник

    Теперь просто перестало работать, по логам команда ушла и пришла, куда копать дальше?

    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
    Пропущено : 0

    #34863
    Mikhail
    Модератор

    Попробуйте для тестов отключить автоматическую отправку команд и отправлять команды вручную через веб-интерфейс. Будет ли работать?

    Вызов хранимой процедуры: синтаксис запроса нужно посмотреть в документации на СУБД. Модулю экспорта без разницы, какой запрос вызвать, обычный SQL или хранимку.

    #34864
    Mikhail
    Модератор

    то экспорт будет в 14:02:00, потом в 14:04:00, далее в 14:06:00 и так далее, он не останавливается

    Вы правы. Что-то я не подумал про это. Такова логика работы модуля. Экспорт по команде — это как дополнение к автоматическому экспорту.

    • Этот ответ был изменен 9 месяцев, 3 недели назад от Mikhail.
Просмотр 15 сообщений - с 1 по 15 (из 19 всего)
  • Вы должны авторизироваться для ответа в этой теме.