|
Advanced NMEA Data Logger
OPC сервер для интеллектуального счетчика метража
Описание проблемы
Стоит задача получения данных от счетчика метража через RS232 и передачи этих данных в СКАДу, поскольку для данного счетчика метража нет родного OPC сервера.
![Данные от счетчика метража. Тип 1](/serial-data-logger/tutorials/length-meter-counter-opc/data-example1.png)
Рис. 1. Данные от счетчика метража. Тип 1.
![Данные от счетчика метража. Тип 2](/serial-data-logger/tutorials/length-meter-counter-opc/data-example2.png)
Рис. 2. Данные от интеллектуального счетчика метража. Тип 2.
![Данные от счетчика метража. Тип 3](/serial-data-logger/tutorials/length-meter-counter-opc/data-example3.png)
Рис. 3. Данные от счетчика длины. Тип 3.
![Данные от счетчика метража. Тип 4](/serial-data-logger/tutorials/length-meter-counter-opc/data-example4.png)
Рис. 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).
![Настройка подключения к счетчику метража](/serial-data-logger/tutorials/length-meter-counter-opc/com-port.png)
Рис. 5. Настройка подключения к счетчику метража.
2. Если для чтения данных нужно отослать команду, то перейдите к закладке "Модули → Запрос Анализ Фильтрация", включите модуль запроса данных "ASCII Data Query", а в его настройках укажите команду и интервал опроса (рис. 6-8). На этапе тестирования можно поставить интервал опроса побольше.
![Выбор модуля запроса данных](/serial-data-logger/tutorials/length-meter-counter-opc/query1.png)
Рис. 6. Выбор модуля запроса данных.
![Добавление запроса](/serial-data-logger/tutorials/length-meter-counter-opc/query2.png)
Рис. 7. Добавление запроса.
![Параметры запроса](/serial-data-logger/tutorials/length-meter-counter-opc/query3.png)
Рис. 8. Параметры запроса.
3. Убеждаемся, что в главном окне появляются команды и данные от счетчика (рис. 1-4). Значит обмен данными идет успешно и можно переходить к этапу обработки принятых данных и преобразования их в значение для OPC сервера.
4. Теперь, необходимо определить символы начала и окончания пакета данных, по которым программа сможет выделять пакет данных из общего потока. Для этого необходимо включить вывод на экран символов с кодом ASCII меньше 0x20h, которые обычно используются для обрамления пакета данных (рис. 9). На рисунках 1-4 выше видно, что пакет завершается символами #0D, #0A, #03, что соответствует ASCII символам <CR>, <LF>, <ETX>.
Замечание: После окончания настройки, можно выбрать другой режим отображения данных. Это никак не влияет на работу OPC сервера.
![Настройка вида данных](/serial-data-logger/tutorials/length-meter-counter-opc/data-view-mode.png)
Рис. 9. Настройка вида данных
5. Теперь переходим к настройке парсера, который отвечает за извлечения нужного значения метража из пакета данных. Выберите модуль "ASCII data parser and query" из списка модулей разбора данных (рис. 10) и поставьте галочку "Анализ и экспорт получаемых данных". Затем кликните на кнопке "Настроить".
Рис. 10. Активация парсера.
6. На рисунках №1-4 с примером данных от счетчиков метража видно, что данные имеют простой формат. Каждая запись имеет фиксированную длину и значение метража всегда расположено в фиксированной позиции и выровнено по правому краю. При этом, для выравнивания ответа по ширине может использоваться пробел или нули.
При отображении на экране, все служебные символы ASCII были заменены на их код вида #00. Теперь очевидно, что пакет данных имеет следующие параметры для каждого из форматов, которые нужно перенести в настройки парсера (рис. 11):
- Признак начала пакета: отсутствует, признак окончания пакета данных: #0D#0A.
- Признак начала пакета: RSIDL, признак окончания пакета данных: #0D#0A.
- Признак начала пакета: #02, признак окончания пакета данных: #03#0D.
- Признак начала пакета: отсутствует, признак окончания пакета данных: #0D.
![Настройка парсера](/serial-data-logger/tutorials/length-meter-counter-opc/parser2.png)
Рис. 11. Настройка парсера.
7. Следующим шагом является добавление переменной парсера, которая затем появится в OPC сервере (рис. 12). Для определения фиксированной позиции в пакете данных лучше всего скопировать строку с пакетом из главного окна программы в Notepad. Там можно легко подсчитать с какого символа начинается значение метража (фиксированная позиция) и сколько символов может быть в этом значении (фиксированная длина). Обратите внимание, что при расчете позиции не нужно учитывать символы начала пакета данных (их нужно отбросить), а служебные символы вида #00 занимают в исходном пакете одну позицию, а не три как на экране. Таким образом, для пакетов данных на рис. 1-4 параметры переменной будут иметь вид:
- Фиксированная позиция: 1, фиксированная длина: 6.
- Фиксированная позиция: 1 (символы начала пакета RSIDL отбрасываются), фиксированная длина: 11.
- Фиксированная позиция: 6 (один ASCII символ начала пакета отбрасываем, 5 символов заголовка пакета пропускаем), фиксированная длина: 6.
- Фиксированная позиция: 1, фиксированная длина: 10.
![Переменная парсера](/serial-data-logger/tutorials/length-meter-counter-opc/parser3.png)
Рис. 12. Переменная парсера.
8. Постобработка. Иногда, после извлечения значения переменной парсера, требуется его модифицировать. Например, в формате №3 последние два числа значения - это дробная часть числа. Поэтому извлеченное значение нужно разделить на 100. Это можно сделать с помощью модуля фильтрации данных Expressions (рис. 13-14).
![Выбор модуля постобработки](/serial-data-logger/tutorials/length-meter-counter-opc/expressions1.png)
Рис. 13. Выбор модуля постобработки.
![Задание формулы](/serial-data-logger/tutorials/length-meter-counter-opc/expressions2.png)
Рис. 14. Задание формулы постобработки.
9. В заключении, требуется настройка OPC сервера. Перейдите к закладке "Модули → Экспорт данных" поставьте галочку напротив нужного OPC сервера (рис. 15).
![Включение OPC сервера](/serial-data-logger/tutorials/length-meter-counter-opc/opc-server1.png)
Рис. 15. Включение OPC сервера.
10. Откройте окно настройки OPC сервера (рис. 16) и включите опцию группировки данных по имени источника данных (имени COM порта). Это позволит подключить несколько счетчиков к одному компьютеру, и в OPC сервере они будут отображаться в разных группах.
![Группировка данных в OPC сервере](/serial-data-logger/tutorials/length-meter-counter-opc/opc-server2.png)
Рис. 16. Группировка данных в OPC сервере.
11. Рекомендуется объявить переменную с метражом заранее на соответствующей закладке (рис. 17), поскольку OPC клиент может подключиться ранее, чем программа примет значение от счетчика и значение метража появится в OPC сервере. Объявленное заранее значение будет присутствовать в OPC сервере даже если пропала связь с прибором, но будет иметь недостоверный статус.
![Объявление переменных заранее](/serial-data-logger/tutorials/length-meter-counter-opc/opc-server3.png)
Рис. 17. Объявление OPC тегов заранее.
12. Пожалуйста, кликните на кнопке "OK" во всех окнах конфигурации программы и сохраните все настройки. Дождитесь приема нового пакета данных и откройте окно настройки OPC сервера на закладке "Активные переменные". Там должно отображаться значение метража от счетчика (рис. 18). Это значит, что OPC клиент или ваша SCADA могут подключиться к нашему OPC серверу и получать данные.
![Данные в OPC сервере](/serial-data-logger/tutorials/length-meter-counter-opc/opc-server4.png)
Рис. 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
|