Стартовая страница › Форумы › Вопросы без категории › передача данных с Rapid Scada
- В этой теме 43 ответа, 5 участников, последнее обновление 5 лет, 11 месяцев назад сделано Mikhail.
-
АвторСообщения
-
21.02.2017 в 09:40 #4713AidarУчастник
SQL синтаксис в порядке.
Все настроено как в примере без изменений.21.02.2017 в 11:37 #4720MikhailМодераторНа закладку текущих данных нужно вставить только код:
INSERT INTO CnlData (DateTime, CnlNum, Val, Stat) VALUES (@dateTime, @cnlNum, @val, @stat)
Документацию надо бы улучшить.
22.02.2017 в 12:03 #4728AidarУчастникПрошу прощения сильно затупил!
Я весь «Пример таблиц и SQL запросов» запихнул во вкладку текущие данные и получилось непонятно что))
Раскидал пример кода по вкладкам Текущие данные, Архивные данные, События и все поехало!
Может в документации стоит более явно об этом написать, а может только я этого не понял сразу.
спасибо за ответы24.04.2017 в 17:26 #5472kustarУчастникПо идее, настроив только модуль ModDBExport.dll, мне больше ничего не надо настраивать и все данные будут в БД идти?
Да. Если объёмы данных большие, то нужно следить за размерами очереди передачи данных в модуле.У меня 100 не хватает, периодически появляется сообщение:
1. MySQL — localhost; состояние: ошибка экспорта; в очереди тек/арх/соб: 100/0/0; экспортировано тек/арх/соб: 1779/0/0; пропущено тек/арх/соб: 4986/0/0Как следить за очередью?
25.04.2017 в 07:35 #5480kustarУчастникПохоже, проблема не только с очередью!
Откуда берутся 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’25.04.2017 в 10:29 #5488kustarУчастникТакая же история с другой базой (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, модуль экспорта — штатный.25.04.2017 в 13:18 #5497MikhailМодераторДобрый день!
По поводу ошибки дублирования, сверьте Ваши скрипты с http://doc.rapidscada.net/content/ru/modules/mod-db-export.html
Как раз недавно учли эту ошибку.Если проблема с длиной очереди останется после этого, то нужно анализировать, где узкое место. Например, немного снизить скорость опроса в Коммуникаторе.
- Этот ответ был изменен 6 лет, 12 месяцев назад от Mikhail.
25.04.2017 в 13:25 #5500MikhailМодераторОшибка дублирования возникает, если модуль пытается вставить запись с уже имеющейся парой Время-Номер канала. Есть ли у Вас предположения, почему в БД уже есть такие же записи? Посмотрите, какая информация уже содержится в БД.
Записи, при отправке которых возникли ошибки, ещё некоторое время остаются в очереди. Поэтому проблема длины очереди может быть взаимосвязана.
25.04.2017 в 13:27 #5502MikhailМодераторВы можете дополнить скрипт:
INSERT IGNORE INTO cnldata (datetime, cnlnum, val, stat)
VALUES (@dateTime, @cnlNum, @val, @stat)Тогда ошибка должна исчезнуть. Но желательно всё же понять причину.
25.04.2017 в 16:00 #5509kustarУчастникМихаил, добрый день!
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 и, естественно, перезапускал сервер.26.04.2017 в 13:06 #5537kustarУчастникПериод отправки данных коммуникатором увеличил до 10 сек. Симптомы те же, дубли появляются практически одновременно с началом работы модуля. Очередь растет медленнее, но минут за 15 достигает сотни.
26.04.2017 в 14:07 #5553MikhailМодераторТолько сейчас обратил внимание «СКАДА сервер — 4.5.0.5»
Искать ошибку в такой старой версии нет никакого смысла. Ставьте новую версию. С тех пор многое поменялось, в том числе в модуле экспорта.26.04.2017 в 17:31 #5574MikhailМодераторОшибка дублирования может возникнуть, если у Вас один и тот же входной канал привязан к нескольким тегам КП. Проверьте.
Настоятельно рекомендую в след. раз заводить новую тему форума для нового вопроса или проблемы.
01.03.2018 в 09:49 #8597AidarУчастникДобрый день.
Имеется счетчик импульсов.
Необходимо знать количество импульсов насчитанное за сегодня.
Как организовать обновление поля в таблице БД:
поле 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
01.03.2018 в 10:46 #8598RomirosУчастникПовесьте триггер на таблицу data_02 на инсерт или апдейт и туда пишите свой код. У триггера есть возможность получить последнее вставленное или обновлённое значение. Почитайте про это, будет проще код и правильнее.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.