Модуль Универсальный парсер для программ-логгеров
Последняя версия: 5.0.1 build 1126. November 28, 2025.
Модуль Universal Parser - это расширение для наших логгеров на основе XML. Он позволяет создавать гибкие парсеры для сложных текстовых протоколов и простых бинарных пакетов, используя только XML файлы конфигурации. Вам не нужно писать код на Python или создавать собственный модуль-прокси. Поведение парсера задается правилами, условиями и описаниями полей в XML файле в простом текстовом редакторе, которые модуль загружает при запуске.
Этот модуль подходит в ситуациях, когда возможностей стандартного ASCII Data Parser недостаточно. Вы можете описывать нетривиальные форматы записей или несколько разных пакетов от одного устройства. Парсер читает входящие данные, применяет ваши правила обработки и формирует структурированные значения, готовые для протоколирования, экспорта или дальнейшей обработки.
Файл конфигурации использует стандартный синтаксис XML 1.0 с четкой древовидной структурой. Каждый узел описывает часть конфигурации парсера, а его атрибуты задают дополнительные параметры обработки. Логические значения задаются числовыми флагами, где 0 означает false, а 1 означает true. Это делает модуль удобным для работы со многими промышленными нестандартными протоколами.
Практический пример разбора текстовых данных
Рассмотрим устройство, которое передает измерения в виде строки обычного текста через последовательный порт в Advanced Serial Data Logger:
TIMESTAMP ;TEMP;HUM ;STATUS 2025-01-02 08:00:00;23.5;41.2;OK<CR>
С помощью Universal Parser вы можете создать конфигурацию, которая разделит строку на поля и сопоставит их с переменными. Упрощенный фрагмент XML может выглядеть так:
<Config name="EnvLogger [Text]" logtitle="EnvLogger"> <Response begin="" end="#0D" > <Item type="delimit" pos="1" ordernum="1" delimiter=";" name="DATE_TIME_STAMP" type="datetime" format="YYYY-MM-DD HH:MM:SS" /> <Item type="delimit" pos="1" ordernum="2" delimiter=";" name="TEMP" type="float" /> <Item type="delimit" pos="1" ordernum="3" delimiter=";" name="HUM" type="float" /> <Item type="delimit" pos="1" ordernum="4" delimiter=";" name="STATUS" type="string" /> </Response> </Config>
В этом примере узел Response задает границы записи, которая оканчивается символом возврата каретки. Узлы Item определяют, как интерпретировать отдельные сегменты строки. Модуль извлекает метку времени в переменную DATE_TIME_STAMP, преобразует температуру и влажность в числовые значения и сохраняет статус как строку. Затем вы можете использовать эти переменные в логгер для записи данных по строкам в базе данных, Excel, CSV и т.п.
Ключевые особенности
- Настройка парсера на основе XML без необходимости использовать Python или другие языки программирования, в отличие от модулей "Python plugin" или "Proxy plugin".
- Поддержка как сложных текстовых протоколов, так и простых бинарных пакетов.
- Гибкое определение полей и сопоставление с переменными логгера для использования в плагинах экспорта данных.
- Полная поддержка кодировок Windows ANSI и UTF-8.
- Четкий, структурированный XML с настраиваемыми узлами и атрибутами для реализации разных алгоритмов разбора данных.
Итог
Модуль Universal Parser предоставляет настраиваемый способ преобразования сырых последовательных или сетевых данных в структурированные записи с помощью конфигурации в формате XML. Он поддерживает текстовые и бинарные форматы данных и позволяет создавать надежные и адаптируемые парсеры без написания кода.