bg

Анализ и разбор данных от фасовочной машины

Задача:

Мы заполняем пакеты с порошком с помощью "шестиголовой" фасовочной машины и нам необходимо записывать данные о весе каждого пакета, как только он покидает фасовочную машину. В настоящий момент, поступающие через RS232 данные записываются без изменений в лог файл в формате "DD MON YYYY, HH:MM,HEAD NUMBER,HEAD WEIGHT". В конце каждого часа через порт выводится суммарный отчет в виде одной строки.

Мы хотели бы записывать данные напрямую в документ Microsoft Excel. Каждая запись должна быть на своей строке. Данные за день должны записывать в отдельный файл. Каждый новый документ должен иметь метку даты и времени в имени файла. Обычно в день будет около 1000 записей в файле. Нам необходимо извлечь только дату и время, а также вес из потока данных и поместить в лист Excel.

Исходные данные
Рис.1. Исходные данные

Требования:

  • Advanced Serial Data Logger (ASDL) Professional или пробная версия;
  • Модуль "ASCII data parser and query" для Advanced Serial Data Logger;
  • Модуль "DDE server" для логгера (опционально, для тестирования);
  • Модуль "Local database" для логгера.

Подразумевается что:

Вы настроили параметры связи с устройством (скорость, количество бит данных, контроль передачи и т.п.) в логгере и можете принимать данные без каких либо ошибок.

Решение:

На рисунке выше видно, что данные имеют простой формат. Каждая запись имеет фиксированную длину, и элементы в ней разделены запятой. Данные не содержат непечатных символов в строке. Необходимо определить символы окончания пакета данных, по которым программа сможет выделять пакет данных из общего потока. Пожалуйста, включите вывод на экран непечатных символов, у которых код символа меньше 0x20h. Пожалуйста, установите опции с рисунка ниже. Вам необходимо создать конфигурацию для порта, если вы не сделали этого ранее, с помощью кнопки "Плюс" в главном окне программы.

Логгер данных весов. Настройка вида данных
Рис.2. Логгер данных весов. Настройка вида данных

Затем кликните по кнопке "OK" и попробуйте принять данных из порта. Вы должны получить данные, как на рисунке ниже.

Логгер данных весов. Принятые данные.
Рис.3. Логгер данных весов. Принятые данные.

Это другой вид принятых данных. Все непечатные символы были заменены на их код вида #0D. Теперь очевидно, что пакет данных (в зеленом прямоугольнике) заканчивается на #0D. У пакета данных нет признака начала пакета.

Теперь мы готовы к настройке модулей. Сначала, пожалуйста, выберите модуль "ASCII data parser and query" (рис.4a, поз.1) из выпадающего списка. Затем, включите анализ и экспорт для принимаемых данных (рис. 4a, поз. 2). Модуль "DDE server" (рис.4b, поз.3) поможет нам проверить, что парсер правильно разбирает пакет данных. После окончания настройки его можно будет отключить для экономии ресурсов. Модуль "Local database" будет экспортировать данные в базу данных формата Microsoft Excel (MDB файл).

Логгер данных весов. Активация парсера.
Рис.4a. Логгер данных весов. Активация парсера.

Логгер данных весов. Выбор и активация модулей экспорта данных.
Рис.4b. Логгер данных весов. Выбор и активация модулей экспорта данных.

Сейчас, пожалуйста, откройте окно настройки модуля "ASCII parser and query" (кликните на кнопке "Настроить" рядом с выпадающим списком рис.4а, поз.1). Окно настройки появится на экране (рис.5).

Логгер данных весов. Окно настройки парсера.
Рис.5. Логгер данных весов. Окно настройки парсера.

Процесс настройки должен быть простым, если предварительно был выяснен формат данных в главном окне логгера данных (рис.3). Вы должны ввести данные в том же виде, что и в главном окне программы в поле №1. Поле №1 задает окончание блока данных и в нашем случае должно содержать #0D. Вы должны ввести значения с рис. 3, подчеркнутые зеленым. Опция №2 позволяет добавлять метку даты и времени компьютера к каждому обработанному пакету данных.

Поток данных с рисунка 3 содержит дополнительные записи, которые мы не должны обрабатывать и экспортировать. Эти записи выглядят как:

Hour to 9:00 30-11-2007 4.2t

Мы должны их отфильтровывать. Следующая страница позволяет указать правила фильтрации. Вы можете добавить новые правила, кликнув по кнопке "Добавить". В нашем случае мы исключаем из обработки все пакеты, содержание строку "Hour" (регистр символов учитывается при фильтрации).

Логгер данных весов. Фильтр.
Рис.6. Логгер данных весов. Фильтр.

Следующая закладка является очень важной частью конфигурации (рис.7). Парсер использует эти данные для того, чтобы выделить переменные из пакета данных. Наш пакет данных содержит четыре элемента (рис.1), которые должны быть помещены в различные переменные. Далее эти переменные будут использоваться в модулях фильтрации и экспорта данных. В нашем примере значения этих переменных будут записываться в разные колонки листа Microsoft Excel.

Логгер данных весов. Переменные парсера.
Рис.7. Логгер данных весов. Переменные парсера.

Необходимо добавить все необходимые переменные, кликнув по кнопке "Добавить" (рис.7, поз.7). Перед добавлением переменной программа попросит ввести описание переменной. Вы можете ввести любое описание, которое поможет вам запомнить содержимое этой переменной. Мы добавили все переменные с соответствующими описаниями на рис.7

Каждая переменная парсера имеет несколько свойств:

  1. Имя переменной - это имя будет связано с колонкой в модуле экспорта данных. Это имя должно состоять только из латинских букв и цифр;
  2. Тип обработки данных - это метод, который программа будет использовать для выделения данных из пакета данных. Парсер поддерживает несколько методов от наиболее простого, до самого универсального и мощного. В нашем случае, когда все данные располагаются в фиксированной позиции, мы можем использовать простой метод "Через разделитель ". Этот метод позволяет получить значение, которое указано в строке через любой разделитель;
  3. Тип данных - тип данных переменной. В нашем примере будут использоваться типы данных FLOAT, DATE, TIME. Модуль позволяет определить некоторые опции, которые будут использоваться для преобразования (см. закладку "Формат данных");
  4. Значение по умолчанию - это значение будет использоваться, когда данные не могут быть извлечены из указанной позиции и преобразованы в указанный тип данных;
  5. Разделитель - в этом примере все значения в пакете данных разделены запятой;
  6. Порядковый номер - здесь задается номер колонки в пакете данных. Колонки образуются, поскольку все данные разделены в пакете данных запятой.

На следующей закладке (рис.8) вы можете определить основные опции форматирования и преобразования значений. Поскольку мы определили тип данных "String" для некоторых переменных, поэтому первые две опции позволяют удалять пробелы в начале и конце значения. В этом примере у нас есть переменная с типом "datetime". Поэтому вторая опция позволяет определить маску, по которой строковое значение даты будет преобразовано в переменную с типом данных "date". Мы указали DD"/"MM"/"YY здесь, в соответствии с требованиями описанными выше. Для более подробного описания символов, которые могут использоваться в маске, пожалуйста, обратитесь к файлу справки. Опция №2 на рисунке ниже позволяет определить маску для преобразования значения с типом данных "time".

Логгер данных весов. Формат переменных.
Рис.8. Логгер данных весов. Формат переменных.

Другие опции не требуется настраивать, поскольку у нас не заданы переменные с типом "datetime" или "string".

Пожалуйста, кликните на кнопке "OK" в окне настройки парсера и затем на кнопке "OK" в окне настройки конфигурации.

Теперь наш парсер настроен и пришло время проверить его. Подсоедините ваше устройство или включите его, если это необходимо. Попробуйте принять пакет данных от устройства. Если парсер был верно настроен, то в окне DDE сервера будут отображены наши переменные и их значения (рис.9).

Логгер данных весов. Окно DDE сервера.
Рис.9. Логгер данных весов. Окно DDE сервера.

Теперь все переменные парсера готовы для экспорта в Excel. Как это сделать, описано во второй части.

Сопутствующие статьи: Анализ и разбор данных от фасовочной машины