передача данных с Rapid Scada

Стартовая страница Форумы Вопросы без категории передача данных с Rapid Scada

Просмотр 15 сообщений - с 16 по 30 (из 44 всего)
  • Автор
    Сообщения
  • #4713
    Aidar
    Участник

    SQL синтаксис в порядке.
    Все настроено как в примере без изменений.

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

    На закладку текущих данных нужно вставить только код:

    INSERT INTO CnlData (DateTime, CnlNum, Val, Stat)
    VALUES (@dateTime, @cnlNum, @val, @stat)
    

    Документацию надо бы улучшить.

    #4728
    Aidar
    Участник

    Прошу прощения сильно затупил!
    Я весь «Пример таблиц и SQL запросов» запихнул во вкладку текущие данные и получилось непонятно что))
    Раскидал пример кода по вкладкам Текущие данные, Архивные данные, События и все поехало!
    Может в документации стоит более явно об этом написать, а может только я этого не понял сразу.
    спасибо за ответы

    #5472
    kustar
    Участник

    По идее, настроив только модуль ModDBExport.dll, мне больше ничего не надо настраивать и все данные будут в БД идти?
    Да. Если объёмы данных большие, то нужно следить за размерами очереди передачи данных в модуле.

    У меня 100 не хватает, периодически появляется сообщение:
    1. MySQL — localhost; состояние: ошибка экспорта; в очереди тек/арх/соб: 100/0/0; экспортировано тек/арх/соб: 1779/0/0; пропущено тек/арх/соб: 4986/0/0

    Как следить за очередью?

    #5480
    kustar
    Участник

    Похоже, проблема не только с очередью!
    Откуда берутся duplicate?

    2017-04-25 09:33:01 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-25 09:31:32-312’ for key ‘PRIMARY’
    2017-04-25 09:33:01 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 09:33:02 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 09:33:02 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 09:33:02 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 09:33:02 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 09:33:02 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 09:33:02 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 09:33:02 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 09:33:03 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-25 09:31:24-301’ for key ‘PRIMARY’
    2017-04-25 09:33:04 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-25 09:31:34-388’ for key ‘PRIMARY’

    #5488
    kustar
    Участник

    Такая же история с другой базой (MariaDB по сети)

    ———————————————————————————
    2017-04-25 12:06:57 Запуск работы модуля ModDBExport
    2017-04-25 12:06:58 Ошибка при экспорте текущих данных в БД MySQL — 10.162.1.240: Duplicate entry ‘2017-04-25 12:06:58-303’ for key ‘PRIMARY’
    2017-04-25 12:06:59 Ошибка при экспорте текущих данных в БД MySQL — 10.162.1.240: Duplicate entry ‘2017-04-25 12:06:58-302’ for key ‘PRIMARY’
    2017-04-25 12:07:02 Ошибка при экспорте текущих данных в БД MySQL — 10.162.1.240: Duplicate entry ‘2017-04-25 12:06:58-302’ for key ‘PRIMARY’
    2017-04-25 12:07:06 Ошибка при экспорте текущих данных в БД MySQL — 10.162.1.240: Duplicate entry ‘2017-04-25 12:07:01-309’ for key ‘PRIMARY’
    2017-04-25 12:07:08 Ошибка при экспорте текущих данных в БД MySQL — 10.162.1.240: Duplicate entry ‘2017-04-25 12:06:58-302’ for key ‘PRIMARY’
    2017-04-25 12:07:09 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 12:07:09 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 12:07:09 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 12:07:09 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 12:07:09 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 12:07:09 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 12:07:09 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 12:07:09 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 12:07:09 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 12:07:09 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 12:07:09 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 12:07:09 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен
    2017-04-25 12:07:09 Ошибка при экспорте текущих данных в БД MySQL — 10.162.1.240: Duplicate entry ‘2017-04-25 12:07:02-311’ for key ‘PRIMARY’
    2017-04-25 12:07:10 Невозможно добавить в очередь текущие данные. Максимальный размер очереди 100 превышен

    Читаю коммутатором 43 тега, в сервере им соответствуют 43 канала. Только входные.
    В базах сделал таблицы под каналы, события и архивы. Экспортирую (точнее — пытаюсь) только каналы. Архивы и события пока не трогаю.
    Первая СУБД (предыдущий пост)- MySQL 5.7 под виндой локально, вторая — MariaDB 10.0 под линуксом по сети.
    Данные в обе базы попадают, однако, в логе модуля сообщения об ошибках типа duplicate и о переполнении очереди. Ошибки одинаковы для обеих баз.
    СКАДА сервер — 4.5.0.5, модуль экспорта — штатный.

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

    Добрый день!
    По поводу ошибки дублирования, сверьте Ваши скрипты с http://doc.rapidscada.net/content/ru/modules/mod-db-export.html
    Как раз недавно учли эту ошибку.

    Если проблема с длиной очереди останется после этого, то нужно анализировать, где узкое место. Например, немного снизить скорость опроса в Коммуникаторе.

    • Этот ответ был изменен 6 лет, 12 месяцев назад от Mikhail.
    #5500
    Mikhail
    Модератор

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

    Записи, при отправке которых возникли ошибки, ещё некоторое время остаются в очереди. Поэтому проблема длины очереди может быть взаимосвязана.

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

    Вы можете дополнить скрипт:
    INSERT IGNORE INTO cnldata (datetime, cnlnum, val, stat)
    VALUES (@dateTime, @cnlNum, @val, @stat)

    Тогда ошибка должна исчезнуть. Но желательно всё же понять причину.

    #5509
    kustar
    Участник

    Михаил, добрый день!
    IGNORE сделаем в последнюю очередь — никогда не поздно! 🙂
    Период записи текущего среза увеличил с 5 до 30 сек. Очередь в 100 записей все равно переполняется, и, похоже, время заполнения очереди не сильно зависит от периода записи. Специально время не засекал, но, примерно за 1 минуту.
    Похоже, очередь не чистится, когда выгружаю модуль и перезапускаю сервер.
    Наблюдаю в базе записи 301-го канала:

    select datetime, cnlnum, val from cnldata where cnlnum=’301′;

    2017-04-25 16:40:09 301 0
    2017-04-25 16:40:49 301 0
    2017-04-25 16:42:09 301 0
    2017-04-25 16:42:49 301 0
    2017-04-25 16:43:29 301 0
    2017-04-25 16:45:29 301 0
    2017-04-25 16:46:09 301 0
    2017-04-25 17:00:49 301 0
    2017-04-25 17:01:29 301 0
    2017-04-25 17:02:09 301 0
    2017-04-25 17:02:49 301 0
    2017-04-25 17:03:29 301 0
    2017-04-25 17:04:49 301 0
    2017-04-25 17:06:09 301 0
    2017-04-25 17:06:49 301 0
    2017-04-25 17:07:29 301 0
    2017-04-25 17:08:49 301 0
    2017-04-25 17:14:09 301 0
    2017-04-25 17:17:29 301 0
    2017-04-25 17:18:49 301 0

    Интересна запись за 17:17:29.

    А это из лога:
    2017-04-25 17:17:30 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-25 17:17:29-301’ for key ‘PRIMARY’
    2017-04-25 17:17:34 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-25 17:17:29-301’ for key ‘PRIMARY’
    2017-04-25 17:17:39 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-25 17:17:29-301’ for key ‘PRIMARY’
    2017-04-25 17:17:45 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-25 17:17:29-301’ for key ‘PRIMARY’
    2017-04-25 17:17:51 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-25 17:17:29-301’ for key ‘PRIMARY’
    2017-04-25 17:18:40 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-25 17:17:29-301’ for key ‘PRIMARY’
    2017-04-25 17:18:52 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-25 17:17:29-301’ for key ‘PRIMARY’
    2017-04-25 17:19:13 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-25 17:17:29-301’ for key ‘PRIMARY’
    2017-04-25 17:19:35 Ошибка при экспорте текущих данных в БД MySQL — localhost: Duplicate entry ‘2017-04-25 17:17:29-301’ for key ‘PRIMARY’

    Это — записи из лога только про 301-й канал.
    Т. е. модуль занес эту запись в базу в свое время, но она осталась в очереди, и он (модуль) с 17:17:30 по 17:19:35 9 раз пытался втюхнуть ее туда же. А я за это время как минимум один раз менял настройки сервера (параметры записи) и, выгружал-загружал dll и, естественно, перезапускал сервер.

    #5537
    kustar
    Участник

    Период отправки данных коммуникатором увеличил до 10 сек. Симптомы те же, дубли появляются практически одновременно с началом работы модуля. Очередь растет медленнее, но минут за 15 достигает сотни.

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

    Только сейчас обратил внимание «СКАДА сервер — 4.5.0.5»
    Искать ошибку в такой старой версии нет никакого смысла. Ставьте новую версию. С тех пор многое поменялось, в том числе в модуле экспорта.

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

    Ошибка дублирования может возникнуть, если у Вас один и тот же входной канал привязан к нескольким тегам КП. Проверьте.

    Настоятельно рекомендую в след. раз заводить новую тему форума для нового вопроса или проблемы.

    #8597
    Aidar
    Участник

    Добрый день.
    Имеется счетчик импульсов.
    Необходимо знать количество импульсов насчитанное за сегодня.
    Как организовать обновление поля в таблице БД:
    поле value в таблице sensors, где id_sensor 2065 = последнее вчерашнее value из таблицы data_02, где id_sensor 2065 - текущее показание из канала 2065
    то есть вопрос в том, куда запихнуть этот код и будет ли это работать:

    DECLARE @Yesterday_2065 int
    set @Yesterday_2065 = (SELECT TOP 1 [value]   FROM data_02] where id_sensor = 2065 and day(time) = DAY(GETDATE())-1  Order by id DESC)
    
    UPDATE sensors SET value = @val - @Yesterday_2065 , error = 0 WHERE id_sensor = 2065 
    #8598
    Romiros
    Участник

    Повесьте триггер на таблицу data_02 на инсерт или апдейт и туда пишите свой код. У триггера есть возможность получить последнее вставленное или обновлённое значение. Почитайте про это, будет проще код и правильнее.

Просмотр 15 сообщений - с 16 по 30 (из 44 всего)
  • Вы должны авторизироваться для ответа в этой теме.