Ранее в базовом курсе я показывал, как создавать тип точек данных, сами точки данных, а так же - как размещать конфиги в элементах точек данных.
Напоминаю терминологию:
Тип точек данных (Datapoint Type) является объявлением структуры (или объекта внешнего мира, вроде задвижки).
Точка данных (Datapoint) - экземпляр объявленной структуры (конкретная задвижка).
Элемент точки данных (Datapoint element) - как правило, «лист» в дереве, конечная переменная с конкретным типом данных (float, int, bool и т.д.)
Конфиг - некоторый объект, который «привязывается» к элементу точки данных и расширяет функционал этого элемента. Например, привязывает его значение к значению какого-либо тэга контроллера (address). Запоминает изменения переменной в базе данных (archive). Ограничивает диапазон (value range). И так далее.
Любая точка данных создается полностью в соответствии с заданным типом. А вот конфиги можно размещать индивидуально, где-то он есть, где-то его нет. Существует механизм мастер-точек данных, но в настоящей заметке речь идет не о ней. Таким образом, настройка всех конфигов для всех точек данных в реальных проектах становится времяемкой, если использовать исключительно «ручное вколачивание» через модуль Para. Для экономии времени в WinCC OA создан механизм импорта/экспорта точек данных.
Для примера создан тип точек данных «аналоговый вход». Создан, конечно, упрощенно. Вот его описание.
Есть само значение переменной и его диапазон, от и до, все переменные - типа REAL. Создана одна точек данных с именем Level0. На все ее DPE размещены конфиги «адрес» и «сглаживание». Адресный конфиг настроен на протокол Modbus TCP, сервер которого так же запущен на ПК с установленной WinCC OA. Значения обновляются по протоколу. Настройки конфигов для val приведены ниже.
Настройки DPE MinEU и MaxEU аналогичны, за исключением, конечно же, конфига address, MinEU - это уже второй регистр, MaxEU - четвертый.
Для выполнения экспорта данных необходимо запустить System Management и в меню Database найти ASCII Manager
В окне импорта/экспорта необходимо выбрать экспорт, указать имя файла, указать, что конкретно экспортируется (точки данных и их параметры, в нашем случае это address для изменения адреса модбас, в distrib хранится номер драйвера и smooth для сглаживания). Так же я ограничиваю экспорт типом точек данных AnalogInput.
Далее нажимаем кнопку Start и вводим пароль пользователя root
Нажав третью кнопку рядом с именем файла, можно открыть получившийся экспорт в Excel. Импорт / экспорт работает с файлами типа csv, но в табличном виде результат, конечно же, нагляднее. Итого мы видим сейчас одну точку данных и 9 конфигов (по три на каждый DPE).
Для начала интересен список точек данных, который состоит из трех полей: имя точки данных, имя типа точки данных и ID. Сразу возникает закономерный вопрос, это идентификатор чего - точки или типа? Что будет, если я переименую точку, оставлю тип и запущу импорт? Для ответа на первый вопрос создам еще одну точки данных этого типа и выполню экспорт заново.
Из новой таблицы становится понятно, что ID - это идентификатор точки данных. Некоторое внутреннее значение, которое в модуле Para ни задать, ни прочитать. И как теперь мне создавать через импорт новые точки данных, если я не знаю, какой им задавать ID? Ответы на эти вопросы можно получить только экспериментально. Я удаляю точку данных TempDP и возвращаюсь к самому первому экспорту, будем его редактировать. Меняю имя точки данных на Level1 и меняю настройки адреса modbus. ID остается старый, который принадлежит точке Level0.
Выполним импорт и посмотрим, что произойдет. Переключаю менеджер ASCII на импорт, оставляю то же имя файла, запускаю импорт, ввожу пароль и смотрю в журнал:
Импорт прошел с предупреждением. Посмотрим, что у нас в модуле Para. У нас, все же, появилась точка данных Level с настроенными, как надо, адресами протокола модбас. Регистры хранения 6, 8 и 10 у меня заранее заданы в симуляторе сервера Modbus TCP, их значение сразу пришло в систему.
Я снова выполняю экспорт, мне интересен новый список точек данных и их ID.
Очевидно, что при импорте точки Level1 система определила конфликт ID и задала новый идентификатор для точки данных Level1, что и послужило предлогом для вывода предупреждения в лог-файл. Смотрим соответствующие строки в логе:
WCCOAascii_info:Datapoint/DpId (5): Datapoint (System1:Level0) with ID 512 already exists, new ID will be generated
Интересно, что произойдет, если выполнить переименование точки данных, но удалить ее ID, как в примере ниже:
В этом случае импорт пройдет без предупреждений, и будет создана новая точка данных - Level 2.
С моей точки зрения целесообразно удалять ID новой DP при импорте, дабы импорт выполнялся без предупреждений.
Таким образом мы убедились в возможности создания новых точек данных в системе, используя механизм импорта / экспорта данных.