Фильтрация данных по значению OPC тега, и запись в базу только, когда значение меняется
Описание проблемы:
У меня есть переменная Kemro.opc.4.IF1.1.92.Mars1.SVs.system.sv_ShotCounter[14]="1562", которую я добавил и вижу в OPC Data Logger. Я хочу записывать данные в базу только в тот момент, когда этот счетчик изменяется.
Требования:
- Advanced OPC Data Logger Enterprise или пробная версия.
- Модуль Script Execute.
Подразумевается, что:
1. Вы создали конфигурацию в логгере (используя кнопку "Зеленый Плюс" в главном окне программы), добавили группу и OPC теги в ней. OPC логгер принимает данные с этого сервера и отображает их в главном окне программы.
2. Вы настроили запись в базу MySQL.
Решение:
1. Включите указанные опции группы OPC.

Рис.1. Настройки группы OPC
2. Скачайте и установите модуль "Script Execute".
3. Включите его (рис. 2).

Рис.2. Модуль Script Execute
4. Выберите модуль из списка и нажмите кнопку "Настроить" ниже.
5. В окне редактора скриптов выберите "PascalScript" из выпадающего списка "Тип скрипта".
6. Скопируйте код, указанный ниже. Измените его при необходимости. Как минимум нужно указать имя переменной в строке вида sName1:string = 'Kemro.opc.4.IF1.1.92.Mars1.SVs.system.sv_ShotCounter';.
7. Кликните на кнопке "Проверить" и убедитесь, что скрипт компилируется и не содержит ошибок.
8. Кликните на кнопке "OK" и сохраните все изменения.
Код PascalScript
var v1,v2:double; sName1:string = 'Kemro.opc.4.IF1.1.92.Mars1.SVs.system.sv_ShotCounter'; sName2:string = 'LAST_VALUE'; begin // checks that a variable is stored before if IsVariableStored(sName2) then // retrieves a stored variable v1 := PopVariable(sName2) else // otherwise initialize our value v1 := 0; // checks a variable in a data packet if IsVariableDefined(sName1) then begin v2 := GetVariable(sName1); // stores a value between script executions PushVariable(sName2, v2); // the script will discard data packets by the following condition if v1 = v2 then DiscardDataPacket(); end else // discard data also when the counter didn't read yet DiscardDataPacket(); end.
Связанные статьи: Фильтрация данных по значению OPC тега, и запись в базу только, когда значение меняется
- Запись данных OPC в базу данных через ODBC (на примере MS Access) (возможности: добавление групп и переменных, запись в базу ODBC)
- Добавление метки времени в CSV файл (возможности: OPC группы)
- OPC в MSSQL: Запись множества переменных OPC в базу MS SQL 2008
- OPC в MSSQL: Запись нескольких переменных OPC в разные колонки
- OPC в MySQL: Запись тегов OPC в базу данных MySQL 5
- OPC в базу данных: Сохранение OPC тегов в базе данных
- OPC в Excel: Запись данных OPC в Excel
- Фильтрация данных по значению OPC тега, и запись в базу только, когда значение меняется
- Игнорирование данных, если значение тега не равно указанному значению
- Обработка и сохранение данных OPC по событию от OPC сервера
- Агрегация данных с нескольких серверов в один OPC сервер
Advanced OPC Data Logger, связанные темы:
здесьПоследовательный интерфейс RS232 разводка и сигналы Кабели и сигналы Кабели мониторинга данных