|
OPC сервер для интеллектуального счетчика метража
Описание проблемы
Стоит задача получения данных от счетчика метража через RS232 и передачи этих данных в СКАДу, поскольку для данного счетчика метража нет родного OPC сервера.
Рис. 1. Данные от счетчика метража. Тип 1.
Рис. 2. Данные от интеллектуального счетчика метража. Тип 2.
Рис. 3. Данные от счетчика длины. Тип 3.
Рис. 4. Данные от измерителя длины кабеля с реверсом. Тип 4.
Требования
- Advanced Serial Data Logger (ASDL) Professional или пробная версия.
- Модуль "ASCII Data Parser and Query" для Advanced Serial Data Logger.
- Модуль "OPC DA Server" (встроен в программу).
- Модуль "Expressions" (для постобработки, идет в стандартной поставке).
- Модуль "OPC UA Server" для логгера (требуется установить дополнительно).
Предварительная настройка счетчика метража
Обычно, интеллектуальные счетчики метража могут работать в двух режимах, который выбирается в настройках самого счетчика, или при его первоначальном программировании:
- Непрерывный. Счетчик выводит данные постоянно, без запросов со стороны компьютера.
- По запросу. Счетчик выводит данные по специальному запросу со стороны компьютера. Обычно это команда P<CR><LF> (сокращенное от Print) или S<CR><LF> (сокращенное от Start). <CR> и <LF> - это ASCII символы конца строки с кодами 0x0D и 0x0A соответственно. В этом режиме, вы сами можете управлять режимом опроса счетчика и периодичностью сбора данных.
Совет: Если параметры связи или формат команды не известен, но есть родная программа для тестирования счетчика, то можно воспользоваться режимом наблюдателя в нашей программе Advanced Serial Port Monitor и подсмотреть протокол обмена между счетчиком и компьютером.
Решение
1. Для начала, нужно попробовать получить данные от счетчика. Создайте новую конфигурацию в главном окне программы (кнопка "Плюс") и настройте параметры связи со счетчиком метража на закладке "COM порт" (рис. 5).
Рис. 5. Настройка подключения к счетчику метража.
2. Если для чтения данных нужно отослать команду, то перейдите к закладке "Модули → Запрос Анализ Фильтрация", включите модуль запроса данных "ASCII Data Query", а в его настройках укажите команду и интервал опроса (рис. 6-8). На этапе тестирования можно поставить интервал опроса побольше.
Рис. 6. Выбор модуля запроса данных.
Рис. 7. Добавление запроса.
Рис. 8. Параметры запроса.
3. Убеждаемся, что в главном окне появляются команды и данные от счетчика (рис. 1-4). Значит обмен данными идет успешно и можно переходить к этапу обработки принятых данных и преобразования их в значение для OPC сервера.
4. Теперь, необходимо определить символы начала и окончания пакета данных, по которым программа сможет выделять пакет данных из общего потока. Для этого необходимо включить вывод на экран символов с кодом ASCII меньше 0x20h, которые обычно используются для обрамления пакета данных (рис. 9). На рисунках 1-4 выше видно, что пакет завершается символами #0D, #0A, #03, что соответствует ASCII символам <CR>, <LF>, <ETX>.
Замечание: После окончания настройки, можно выбрать другой режим отображения данных. Это никак не влияет на работу OPC сервера.
Рис. 9. Настройка вида данных
5. Теперь переходим к настройке парсера, который отвечает за извлечения нужного значения метража из пакета данных. Выберите модуль "ASCII data parser and query" из списка модулей разбора данных (рис. 10) и поставьте галочку "Анализ и экспорт получаемых данных". Затем кликните на кнопке "Настроить".
Рис. 10. Активация парсера.
6. На рисунках №1-4 с примером данных от счетчиков метража видно, что данные имеют простой формат. Каждая запись имеет фиксированную длину и значение метража всегда расположено в фиксированной позиции и выровнено по правому краю. При этом, для выравнивания ответа по ширине может использоваться пробел или нули.
При отображении на экране, все служебные символы ASCII были заменены на их код вида #00. Теперь очевидно, что пакет данных имеет следующие параметры для каждого из форматов, которые нужно перенести в настройки парсера (рис. 11):
- Признак начала пакета: отсутствует, признак окончания пакета данных: #0D#0A.
- Признак начала пакета: RSIDL, признак окончания пакета данных: #0D#0A.
- Признак начала пакета: #02, признак окончания пакета данных: #03#0D.
- Признак начала пакета: отсутствует, признак окончания пакета данных: #0D.
Рис. 11. Настройка парсера.
7. Следующим шагом является добавление переменной парсера, которая затем появится в OPC сервере (рис. 12). Для определения фиксированной позиции в пакете данных лучше всего скопировать строку с пакетом из главного окна программы в Notepad. Там можно легко подсчитать с какого символа начинается значение метража (фиксированная позиция) и сколько символов может быть в этом значении (фиксированная длина). Обратите внимание, что при расчете позиции не нужно учитывать символы начала пакета данных (их нужно отбросить), а служебные символы вида #00 занимают в исходном пакете одну позицию, а не три как на экране. Таким образом, для пакетов данных на рис. 1-4 параметры переменной будут иметь вид:
- Фиксированная позиция: 1, фиксированная длина: 6.
- Фиксированная позиция: 1 (символы начала пакета RSIDL отбрасываются), фиксированная длина: 11.
- Фиксированная позиция: 6 (один ASCII символ начала пакета отбрасываем, 5 символов заголовка пакета пропускаем), фиксированная длина: 6.
- Фиксированная позиция: 1, фиксированная длина: 10.
Рис. 12. Переменная парсера.
8. Постобработка. Иногда, после извлечения значения переменной парсера, требуется его модифицировать. Например, в формате №3 последние два числа значения - это дробная часть числа. Поэтому извлеченное значение нужно разделить на 100. Это можно сделать с помощью модуля фильтрации данных Expressions (рис. 13-14).
Рис. 13. Выбор модуля постобработки.
Рис. 14. Задание формулы постобработки.
9. В заключении, требуется настройка OPC сервера. Перейдите к закладке "Модули → Экспорт данных" поставьте галочку напротив нужного OPC сервера (рис. 15).
Рис. 15. Включение OPC сервера.
10. Откройте окно настройки OPC сервера (рис. 16) и включите опцию группировки данных по имени источника данных (имени COM порта). Это позволит подключить несколько счетчиков к одному компьютеру, и в OPC сервере они будут отображаться в разных группах.
Рис. 16. Группировка данных в OPC сервере.
11. Рекомендуется объявить переменную с метражом заранее на соответствующей закладке (рис. 17), поскольку OPC клиент может подключиться ранее, чем программа примет значение от счетчика и значение метража появится в OPC сервере. Объявленное заранее значение будет присутствовать в OPC сервере даже если пропала связь с прибором, но будет иметь недостоверный статус.
Рис. 17. Объявление OPC тегов заранее.
12. Пожалуйста, кликните на кнопке "OK" во всех окнах конфигурации программы и сохраните все настройки. Дождитесь приема нового пакета данных и откройте окно настройки OPC сервера на закладке "Активные переменные". Там должно отображаться значение метража от счетчика (рис. 18). Это значит, что OPC клиент или ваша SCADA могут подключиться к нашему OPC серверу и получать данные.
Рис. 18. OPC теги в OPC сервере.
Частые вопросы
Какие модели счетчиков метража можно подключить?
Главное это наличие интерфейсного выхода (RS232 или RS485). У нас нет точного списка, поскольку на рынке присутствует большое количество моделей от разных производителей. Зачастую, код модели не включает информацию о типе интерфейса.
Сколько счетчиков можно одновременно опрашивать?
Наша программа может опрашивать до 100 одинаковых счетчиков на одном компьютере, но этот лимит сильно зависит от производительности компьютера и сложного конфигурации в логгере.
Другая программа управления производственной линией уже считывает данные со счетчика метража. Можно ли снять копию данных?
Данную проблему можно решить аппаратно и программно:
- Программно. Если управляющая программа работает на Windows, то можно установить нашу программу на тот же компьютер и использовать режим слежения, который включается в настройках COM порта (рис. 5). Наша программа должна быть запущена первой, чтобы получить доступ к порту.
- Аппаратно. Можно сделать специальный кабель для мониторинга и установить нашу программу на отдельном компьютере с Windows, куда и подключить ответвление для приема данных.
Другая программа очень часто опрашивает счетчик. Можно ли как-то уменьшить частоту записи данных?
У нас есть дополнительные модули фильтрации данных. Для этой задачи больше подойдет модуль Deadband, в котором можно настроить фильтрацию по времени или изменению значения на определенную величину.
Сопутствующие статьи:
- Четыре способа экспорта и передачи данных в Excel
- Запись данных в текстовый файл формата CSV с помощью модуля Local database Модули: Local database, ASCII data parser and query, DDE server
- Запись данных в XLS файл без установленного Excel с помощью модуля Local database Модули: Local database, DDE server
- Получение данных в Excel через интерфейс DDE с помощью модуля DDE Server Модули: DDE Server, ASCII data parser and query
- Экспорт данных и построение графиков в Excel в реальном времени с помощью модуля Direct Excel Connection Модули: Direct Excel Connection, ASCII data parser and query, DDE server
- Запись данных от весов в файл XLS без установленного Excel, с помощью модуля Local database Метки: вариант №2. Модули: Local database, ASCII data parser and query, DDE server
- Экспорт данных в Microsoft SQL Server 2014-2022 с помощью модуля ODBC Database Модули: ODBC Database, ASCII data parser and query, DDE server
- Экспорт данных в базу данных MySQL с помощью модуля SQL Database Professional Модули: SQL Database Professional, ASCII data parser and query, DDE server, Aggregator, ODBC database
- Экспорт данных в базу данных SQL с помощью хранимой процедуры Модули: SQL Database Professional
- Запись данных в Microsoft Access с помощью модуля ODBC Database Модули: ODBC Database, ASCII data parser and query, DDE server
- OPC сервер для интеллектуального счетчика метража Модули: OPC Server, OPC UA Server, ASCII data parser and query
|