MODBUS в базу: Запись данных в две разные таблицы
Скачайте бесплатную пробную версию! Она позволяет попробовать все возможности!
Описание проблемы:
У меня есть база данных с двумя таблицами. Одна таблица хранит текущие данные, а вторая таблица должна сохранять архивные данные (киловатты в час)
Примечание: данный метод позволяет записывать данные больше чем в две таблицы, если вам это требуется.
Требования:
- Data Logger Suite Professional, Enterprise, или пробная версия.
- Модуль экспорта данных SQL Database Pro (полная или пробная версия). Этот модуль входит в стандартный инсталляционный пакет.
- Модуль фильтрации данных "Expressions". Он также присутствует в стандартном инсталляционном пакете.
Подразумевается что:
Вы настроили параметры связи на устройстве:
- MODBUS TCP - IP адрес, маску подсети, шлюз. Вы должные присвоить статический IP вашему устройству.
- MODBUS RTU - скорость передачи данных и количество бит данных.
Решение:
1. Вы должны добавить два запроса MODBUS в очередь запросов, которые будут считывать необходимые данные (рис. 1-3). Один запрос должен содержать все текущие данные, а другие запросы должны возвращать архивные данные. Вы можете использовать разный интервал опроса для этих запросов. Как составлять очередь запросов можно прочитать тут.

Рис. 1. Модуль MODBUS.

Рис. 2. Запрос MODBUS №1.

Рис. 3. Запрос MODBUS №2.
2. Создайте две таблицы в вашей базе данных. Мы пропустили шаги по созданию самой базы данных, пользователя и выдачу прав на запись этому пользователю.
PHASE_1_CURENT - эта колонка будет хранить текущее значение электрического тока для соответствующей фазы.
KWH - эта колонка будет хранить значение потребленной энергии.
DATE_TIME_STAMP - эта колонка будет хранить метку времени, соответствующую моменту чтения данных.
3. Включите и настройте модуль Expressions (рис. 4-5). Данный модуль будет контролировать адрес регистра в ответе и генерировать соответствующее событие. При генерации события, модуль будет добавлять к нему все считанные данные. Далее, модуль экспорта данных будет выполнять SQL запрос и передавать данные в качестве параметров.

Рис. 4. Модуль Expressions.

Рис. 5. Выражения обработки данных.
Ниже приведен текст выражений с картинки выше:
SEND_EVENT_IF(MODBUS_ADDRESS=100, 'KWH')
SEND_EVENT_IF(MODBUS_ADDRESS=0, 'CURRENT')
4. Включите модуль SQL Database Pro (рис. 6-8). Мы пропустили процедуру настройки параметров подключения, которая уже описана в другом примере.
Вы должны добавить два SQL запроса в очередь для двух генерируемых событий. Пожалуйста, обратите внимание, на поля "Выполнять запрос" и "Идентификатор события" в настройках модуля.

Рис. 6. Модуль SQL Database Pro.
Пожалуйста, проверьте, что вы связали параметры SQL запроса с необходимыми значениями MODBUS (поле Переменная парсера) и выбрали верный тип данных. Тип данных должен соответствовать типу данных колонки в таблицы. При этом, модуль может автоматически преобразовывать некоторые типы данных (например, целые числа → вещественно число float или double).

Рис. 7. SQL запрос для события CURRENT.

Рис. 8. SQL запрос для события KWH.
5. Кликните "OK" для сохранения всех настроек.
6. Проверьте статус операции записи в базу данных при поступлении новых данных (рис. 9).

Рис. 9. Сообщение об успешной операции.
Сопутствующие статьи:
MODBUS RTU, MODBUS ASCII, MODBUS/TCP
- Чтение данных со счетчиков и анализаторов энергии через MODBUS (простой метод)
- Совместимые с Sunspec анализаторы, инверторы, счетчики MODBUS (простой метод)
- Опрос устройств MODBUS RTU/TCP: Настройка сервера сбора данных (MODBUS RTU, MODBUS TCP, запросы, элементы ответа).
- Как проверить, что программа отправляет запросы и получает ответы?
- Как просматривать значения регистров, а не пакеты MODBUS?
- Как проверить, что программа правильно интерпретирует получаемые ответы?
- Как просматривать значения регистров MODBUS в более наглядной форме (графики, индикаторы и т.п.)?
- Как объединить данные из двух запросов?
- Как правильно организовать опрос большого количества устройств?
- Копирование настроек Simply MODBUS RTU Master наш логгер.
- Копирование настроек из утилиты MODBUS Poll.
- Контроль состояния ячейки памяти (coil input) PLC контроллера через MODBUS TCP (парсер MODBUS, скрипты, генерация и обработка событий).
- MODBUS в MSSQL: Запись значений регистров MODBUS раздельные колонки в таблице
- MODBUS в MySQL: Запись данных MODBUS в БД MySQL
- Запись данных MODBUS в другую базу данных SQL
- MODBUS в базу: Запись данных в две разные таблицы.
- MODBUS в базу: Запись данных в две разные БД, делая полную копию данных.
- Sentron PAC 3200: Чтение и запись со счетчика электроэнергии через MODBUS TCP
- Запись данных в устройство MODBUS
- SQL в MODBUS: Отправка значений из базы данных в MODBUS.
BACNET/IP
IEC 62056-21