Поделюсь макросом, помогающим экспортировать сетевые переменные из ПР205 в пенель оператора Weintek.

Макрос не совсем закончен, не совсем идеален, но резко сокращает время создания проекта в EasyBuilder для Овен ПР205.

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

Итак, поехали!

OL для сетевых Slave переменных имеет возможность экспорта тегов в файл формата csv в кодировке UTF-8.
Easy Builder для тегов также имеет возможность импорта и экспорта тегов файлом csv в кодировке UTF-8.

Файл OL содержит почти все необходимые данные для импорта в Easy Builder, нужно только переставить поля, заменить названия типов данных, добавить название устройства, под именем которого данная ПР описана в проекте Easy Builder. Что без проблем выполняется в Exel (MS Office) или Calc (LibreOffice) - вручную, долго.

Скрипт (пакетный файл - bat или cmd) отлаживался для ПР205. Для других ПР не уточнял, если последовательность первых 5 полей совпадает, то и для них возможно применить.

OL_PR205_to_Weintek.bat:

Код:
@chcp 1251>nul

@rem Размещение утилиты - потокового редактора sed
@set sed_exe="c:\Program Files\binutils\ssed.exe"
@rem set sed_exe="c:\Program Files\binutils\sed\bin\sed.exe"

@rem Название исходного файла с экспортируемыми из Owen Logic тегами
@set source="ТестовыйПроект_Сетевые, Slave.csv"
@rem Название итогового файла с тегами для Easy Builder (Weintek)
@set "target=result.csv"
@rem Название устройства, уже описанного в системных параметрах проекта Easy Builder
@rem Лучше на латинице, т.к.
@set "device_name=Owen_PR205"

@rem Временный файл
@set "tmp_file=temp.$$1"
@rem Регулярное выражение для выделения полей в csv экспортируемых тегов
@set "field=([^;]*)[;]"

@rem Названия типов данных в кодировке UTF-8
@set "Owen_Unsigned_16=\xD0\xA6\xD0\xB5\xD0\xBB\xD0\xBE\xD1\x87\xD0\xB8\xD1\x81\xD0\xBB\xD0\xB5\xD0\xBD\xD0\xBD\xD0\xBE\xD0\xB5"
@set Owen_Float_32=\xD0\xA1\x20\xD0\xBF\xD0\xBB\xD0\xB0\xD0\xB2\xD0\xB0\xD1\x8E\xD1\x89\xD0\xB5\xD0\xB9\x20\xD0\xB7\xD0\xB0\xD0\xBF\xD1\x8F\xD1\x82\xD0\xBE\xD0\xB9
@set "Weintek_Unsigned_16=16-bit Unsigned"
@set "Weintek_Float_32=32-bit Float"

@rem Удалить заголовок (напечатать c 2 по последнюю строку)
@%sed_exe% -n "2,$p" %source%>%tmp_file%
@rem Переставить поля
@%sed_exe% -n -r "s/%field%%field%%field%%field%%field%.*/\1\,%device_name%\,3x\,\3\,\"\5\"\,\2/p" %tmp_file%>%target%
@rem Заменить тип регистра "Целочисленная" на "16-bit Unsigned"
@rem Заменить тип регистра "С плавающей запятой" на "32-bit Float"
@%sed_exe% -r "s/%Owen_Unsigned_16%$/%Weintek_Unsigned_16%/" %target%>%tmp_file%
@%sed_exe% -r "s/%Owen_Float_32%$/%Weintek_Float_32%/" %tmp_file%>%target%

@del %tmp_file%


Используются утилиты из UNIX: sed или ssed - обе работают одинаково в данном случае.
https://sourceforge.net/projects/gnuwin32/files/
https://sed.sourceforge.io
Их установка - просто распаковка в какой-нибудь каталог. В случае gnuwin32 скачать и распаковать sed-4.2.1-dep.zip и sed-4.2.1-bin.zip
Утилиты пакета binutils очень распространены и чаще всего уже установлены с каким-нибудь пакетом программирования: WinAVR, Visual Studio и другими. Но при их отсутствии - легко скачиваются и устанавливаются.

Для работы нужно в скрипте уточнить:
- полный путь к sed (или ssed)
- название файла экспорта переменных из OL
- название итогового файла для Easy Builder
- после завершения работы скрипта нужно в текстовом редакторе открыть итоговый файл и заменить дефолтное название устройства "Owen_PR205" на то, которое задано в проекте EasyBuilder, иначе импорт будет невозможен.

Отдельное действие с названием устройства получилось из-за того, что не разобрался с кодировками.
Но и так, хорошо получилось - много быстрее, чем перенос руками.

В результате работы:
из файла экспорта OL 'ТестовыйПроект_Сетевые, Slave.csv':
Код:
Имя переменной;Тип переменной;Адрес регистра;Значение по умолчанию;Комментарий;Имя параметра;Минимальное значение;Максимальное значение;Видимость;Путь к параметру;Формат отображения данных;Редактирование по сети;Архивировать значение
n_Var1;Целочисленное;16384;50;Первая целочисленная переменная;Целочисленная переменная №1;0;99;Видим;Целые;Десятичный (Dec);Разрешено;Нет
n_Var2;Целочисленное;16385;150;Вторая целочисленная переменная;Целочисленная переменная №2;100;199;Видим;Целые;Десятичный (Dec);Разрешено;Нет
r_Var3;С плавающей запятой;16386;250;Первая вещественная переменная;Вещественная переменная №1;200;299;Видим;Вещественные;Десятичный (Dec);Разрешено;Нет
r_Var4;С плавающей запятой;16388;350;Вторая вещественная переменная;Вещественная переменная №2;300;399;Видим;Вещественные;Десятичный (Dec);Разрешено;Нет


Получаю
result.csv:
Код:
n_Var1,Owen_PR205,3x,16384,"Первая целочисленная переменная",16-bit Unsigned
n_Var2,Owen_PR205,3x,16385,"Вторая целочисленная переменная",16-bit Unsigned
r_Var3,Owen_PR205,3x,16386,"Первая вещественная переменная",32-bit Float
r_Var4,Owen_PR205,3x,16388,"Вторая вещественная переменная",32-bit Float


После замены в Блокноте второго поля "Owen_PR205" на название устройства из "системных параметров" получаю готовый файл импорта.
Импорт в Easy Builder настраивается двумя опциями:
- удалить старые теги (нужно снять выбор, т.к. иначе удалятся и необходимые системные теги)
- заменить существующие теги на новые (установить выбор и заменять, обновлять теги).