Ранее в базовом курсе я показывал, как создавать тип точек данных, сами точки данных, а так же - как размещать конфиги в элементах точек данных.
Напоминаю терминологию:
Тип точек данных (Datapoint Type) является объявлением структуры (или объекта внешнего мира, вроде задвижки).
Точка данных (Datapoint) - экземпляр объявленной структуры (конкретная задвижка).
Элемент точки данных (Datapoint element) - как правило, «лист» в дереве, конечная переменная с конкретным типом данных (float, int, bool и т.д.)
Конфиг - некоторый объект, который «привязывается» к элементу точки данных и расширяет функционал этого элемента. Например, привязывает его значение к значению какого-либо тэга контроллера (address). Запоминает изменения переменной в базе данных (archive). Ограничивает диапазон (value range). И так далее.
Любая точка данных создается полностью в соответствии с заданным типом. А вот конфиги можно размещать индивидуально, где-то он есть, где-то его нет. Существует механизм мастер-точек данных, но в настоящей заметке речь идет не о ней. Таким образом, настройка всех конфигов для всех точек данных в реальных проектах становится времяемкой, если использовать исключительно «ручное вколачивание» через модуль Para. Для экономии времени в WinCC OA создан механизм импорта/экспорта точек данных.
Для примера создан тип точек данных «аналоговый вход». Создан, конечно, упрощенно. Вот его описание.
![](https://habrastorage.org/getpro/habr/upload_files/d25/b59/5f4/d25b595f477d2f85b5e5913990223aba.jpeg)
Есть само значение переменной и его диапазон, от и до, все переменные - типа REAL. Создана одна точек данных с именем Level0. На все ее DPE размещены конфиги «адрес» и «сглаживание». Адресный конфиг настроен на протокол Modbus TCP, сервер которого так же запущен на ПК с установленной WinCC OA. Значения обновляются по протоколу. Настройки конфигов для val приведены ниже.
![](https://habrastorage.org/getpro/habr/upload_files/3ee/fbc/5b8/3eefbc5b873f7246247f3aa32fdb73aa.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/e2a/d9c/27b/e2ad9c27b40d2cb583b65a3876145569.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/672/538/28b/67253828bc1a78a1167f8fd3eeae0b66.jpeg)
Настройки DPE MinEU и MaxEU аналогичны, за исключением, конечно же, конфига address, MinEU - это уже второй регистр, MaxEU - четвертый.
![](https://habrastorage.org/getpro/habr/upload_files/54c/da6/1b2/54cda61b23b4030547f3d7950b586532.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/8ce/aba/726/8ceaba726b2a0f3b61266305122b580a.jpeg)
Для выполнения экспорта данных необходимо запустить System Management и в меню Database найти ASCII Manager
![](https://habrastorage.org/getpro/habr/upload_files/690/90d/4ee/69090d4eeaf78700e806e344f86081e4.jpeg)
В окне импорта/экспорта необходимо выбрать экспорт, указать имя файла, указать, что конкретно экспортируется (точки данных и их параметры, в нашем случае это address для изменения адреса модбас, в distrib хранится номер драйвера и smooth для сглаживания). Так же я ограничиваю экспорт типом точек данных AnalogInput.
![](https://habrastorage.org/getpro/habr/upload_files/86d/74f/418/86d74f41833d56e22afcd1b1ccb95479.jpeg)
Далее нажимаем кнопку Start и вводим пароль пользователя root
![](https://habrastorage.org/getpro/habr/upload_files/5a0/88c/0a4/5a088c0a41424395a610fb6dcabdce1f.jpeg)
Нажав третью кнопку рядом с именем файла, можно открыть получившийся экспорт в Excel. Импорт / экспорт работает с файлами типа csv, но в табличном виде результат, конечно же, нагляднее. Итого мы видим сейчас одну точку данных и 9 конфигов (по три на каждый DPE).
![](https://habrastorage.org/getpro/habr/upload_files/aae/ed2/75a/aaeed275ab02c0ba4b315f760f4fed40.jpeg)
Для начала интересен список точек данных, который состоит из трех полей: имя точки данных, имя типа точки данных и ID. Сразу возникает закономерный вопрос, это идентификатор чего - точки или типа? Что будет, если я переименую точку, оставлю тип и запущу импорт? Для ответа на первый вопрос создам еще одну точки данных этого типа и выполню экспорт заново.
![](https://habrastorage.org/getpro/habr/upload_files/f10/b27/95f/f10b2795f1cfa798bb685c9aebab0ec9.jpeg)
Из новой таблицы становится понятно, что ID - это идентификатор точки данных. Некоторое внутреннее значение, которое в модуле Para ни задать, ни прочитать. И как теперь мне создавать через импорт новые точки данных, если я не знаю, какой им задавать ID? Ответы на эти вопросы можно получить только экспериментально. Я удаляю точку данных TempDP и возвращаюсь к самому первому экспорту, будем его редактировать. Меняю имя точки данных на Level1 и меняю настройки адреса modbus. ID остается старый, который принадлежит точке Level0.
![](https://habrastorage.org/getpro/habr/upload_files/686/794/02d/68679402d41dff5ac3a633ffe07e1b91.jpeg)
Выполним импорт и посмотрим, что произойдет. Переключаю менеджер ASCII на импорт, оставляю то же имя файла, запускаю импорт, ввожу пароль и смотрю в журнал:
![](https://habrastorage.org/getpro/habr/upload_files/6cd/4f3/34b/6cd4f334b5b1f7d9cbaf1cb0ccadf333.jpeg)
Импорт прошел с предупреждением. Посмотрим, что у нас в модуле Para. У нас, все же, появилась точка данных Level с настроенными, как надо, адресами протокола модбас. Регистры хранения 6, 8 и 10 у меня заранее заданы в симуляторе сервера Modbus TCP, их значение сразу пришло в систему.
![](https://habrastorage.org/getpro/habr/upload_files/8a3/355/38c/8a335538ce7a95f3a3c28a4971fd1dad.jpeg)
Я снова выполняю экспорт, мне интересен новый список точек данных и их ID.
![](https://habrastorage.org/getpro/habr/upload_files/8a5/6c5/7c9/8a56c57c931254aa6d7de38231e8e6a3.jpeg)
Очевидно, что при импорте точки Level1 система определила конфликт ID и задала новый идентификатор для точки данных Level1, что и послужило предлогом для вывода предупреждения в лог-файл. Смотрим соответствующие строки в логе:
WCCOAascii_info:Datapoint/DpId (5): Datapoint (System1:Level0) with ID 512 already exists, new ID will be generated
Интересно, что произойдет, если выполнить переименование точки данных, но удалить ее ID, как в примере ниже:
![](https://habrastorage.org/getpro/habr/upload_files/750/4a2/dad/7504a2dad205d93252d9c55a5f863b65.jpeg)
В этом случае импорт пройдет без предупреждений, и будет создана новая точка данных - Level 2.
![](https://habrastorage.org/getpro/habr/upload_files/b8e/26c/1e0/b8e26c1e027393655e0af36296d1271c.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/0a0/c40/c0d/0a0c40c0d697292823f7f6450f564f88.jpeg)
С моей точки зрения целесообразно удалять ID новой DP при импорте, дабы импорт выполнялся без предупреждений.
Таким образом мы убедились в возможности создания новых точек данных в системе, используя механизм импорта / экспорта данных.