Форум программистов, компьютерный форум, киберфорум
ФедосеевПавел
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

OwenLogic: перенос сетевых переменных в панель Weintek (EasyBuilder Pro)

Запись от ФедосеевПавел размещена 03.06.2025 в 20:33
Показов 7174 Комментарии 4
Метки batch, easybuilder, owenlogic

ВВЕДЕНИЕ



ПЕРЕД ЭКСПЕРИМЕНТАМИ - СОЗДАЙТЕ РЕЗЕРВНЫЕ КОПИИ ПРОЕКТОВ

На момент написания статьи (02 июня 2025 г.) самыми актуальными версиями ПО являются:
  • OwenLogic v. 2.10.366
  • EasyBuilder Pro v. 6.10.01.359

Программируемые реле производства ОВЕН могут снабжаться средствами человеко машинного интерфейса в виде сенсорной панели оператора производства Weintek.

Перенос тегов (сетевых переменных) из OwenLogic в среду EasyBuilder Pro можно значительно ускорить с помощью нескольких способов:
  • перестановка полей cvs файла экспорта OwenLogic в соответствии с их расположением в cvs файле импорта EasyBuilder Pro
  • создание описаний в электронной таблице и получение cvs файла импорта для EasyBuilder Pro

Сразу отмечу, хотя и бездоказательно - по моим ощущениям, в EasyBuilder формат импорта и возможности замены одноимённых переменных постоянно меняются.
Формат экспорта в OwenLogic точно меняется и не только от версии к версии, но и от модели к модели ПР в рамках одной версии среды разработки.

Поэтому, предлагаемые ниже средства не рассчитаны на "вечное" использование, а являются инструментом только сейчас, а для последующих обновлений сред разработки - всего лишь заготовками.

Также добавлю, что пользуюсь консольной версией, а не программой с GUI по идеологическим соображениям - утилита нужна здесь и сейчас, при изменении формата входных и выходных данных нужно быстро модифицировать утилиту. Сохранение названий файлов и другой конфигурационной информации сокращает время отладки.

Встречал реализацию на Python - она много проще выглядит, но пока нет заинтересованности в его освоении, что не отменяет такой возможности.

1. КОНВЕРТАЦИЯ ФАЙЛОВ ЭКСПОРТА В ФОРМАТ ФАЙЛОВ ИМПОРТА



1.1 ИСХОДНИКИ УТИЛИТЫ КОНВЕРТАЦИИ



Для ПР205 пакетный файл (bat):
OL_2_10_366_PR205_to_Weintek.bat
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@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"
@set iconv_exe="C:\Program Files\binutils\iconv\bin\iconv.exe"
 
@rem Название исходного файла с экспортируемыми из Owen Logic тегами
@set source="ПР205_экспорт_сетевых_переменных_Slave.csv"
@rem Название итогового файла с тегами для Easy Builder (Weintek)
@set "target=result.csv"
@rem Название устройства, уже описанного в системных параметрах проекта Easy Builder
@rem Лучше на латинице, т.к. многобайтные символы сложнее обрабатывать
@set "device_name=MODBUS RTU (Zero-based Addressing)"
 
@rem Временный файл
@set "tmp_file=temp.$$1"
@rem Регулярное выражение для выделения полей в csv экспортируемых тегов
@set "field=([^;]*)[;]"
 
@rem Названия типов данных в кодировке UTF-8
@set "Owen_Unsigned_16=Long"
@set Owen_Float_32=Float
@set "Weintek_Unsigned_16=16-bit Unsigned"
@set "Weintek_Float_32=32-bit Float"
 
@rem Удалить заголовок (напечатать c 3 по последнюю строку)
@%sed_exe% -n "3,$p" %source%>%tmp_file%
@rem Переставить поля
@%sed_exe% -n -r "s/%field%%field%%field%%field%%field%%field%.*/\1\,%device_name%\,3x\,\4\,\"\6\"\,\2/p" %tmp_file%>%target%
@rem Заменить тип регистра "Long" на "16-bit Unsigned"
@rem Заменить тип регистра "Float" на "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%
 
@rem Изменить кодировку с UTF-8 на CP1251
@%sed_exe% -n "1,$p" %target%>%tmp_file%
@%iconv_exe% -f UTF-8 -t CP1251 %tmp_file%>%target%
@del %tmp_file%


1.2 КРАТКИЕ ПОЯСНЕНИЯ



В OwenLogic v. 2.10.366 используется вариация формата cvs со следующими особенностями:
  • разделитель полей - точка с запятой
  • две строки с заголовком (одна по английски, другая по русски)
  • кодировка UTF-8

В EasyBuilder Pro v. 6.10.01.359 используется вариация формата cvs со следующими особенностями
  • разделитель полей - запятая
  • заголовок отсутствует
  • кодировка однобайтная для Windows GUI приложений - CP1251

Для конвертации использованы консольные UNIX утилиты из binutils и strutils:
  • sed - потоковый текстовый редактор
  • iconv - утилита для преобразования текста из одной кодировки в другую

Вместо sed можно использовать его форк ssed - обе работают одинаково в данном случае.

Утилиты пакета binutils очень распространены и чаще всего уже установлены с каким-нибудь пакетом программирования: WinAVR, Visual Studio и другими. Но при их отсутствии - легко скачиваются и устанавливаются.

https://sourceforge.net/projects/gnuwin32/files/
https://sed.sourceforge.io
Их установка - просто распаковка в какой-нибудь каталог.
В случае gnuwin32 скачать и распаковать в папку утилиты:
  • sed-4.2.1-dep.zip и sed-4.2.1-bin.zip
  • libiconv-1.9.2-1-lib.zip, libiconv-1.9.2-1-doc.zip, libiconv-1.9.2-1-dep.zip, libiconv-1.9.2-1-bin.zip
Встречал в Internet и более "свежие" и 64-разрядные сборки, но не проверял работоспособность.

Для работы нужно в скрипте уточнить:
  • полный путь к sed (или ssed)
  • полный путь к iconv
  • название файла экспорта переменных из OL
  • название итогового файла импорта для Easy Builder Pro
  • название устройства, которое задано в проекте EasyBuilder Pro для связи с Овен ПР (обычно, это название протокола связи), здесь используется название "MODBUS RTU (Zero-based Addressing)"

Если название устройства содержит кириллицу, то после завершения работы скрипта нужно в текстовом редакторе открыть итоговый файл и заменить дефолтное название устройства "MODBUS RTU (Zero-based Addressing)" на то, которое задано в проекте EasyBuilder Pro, иначе импорт будет невозможен.

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

В среде OwenLogic названия типов данных меняются, на данный момент словами "Long" и "Float" обозначаются соответственно целые 16 разрядные числа без знака и 32-разрядные числа в формате с плавающей запятой.
Их обозначения приводятся в строках 22 и 23. Если изменятся очередной раз - менять их названия нужно в этом месте.

Ещё недавно файл экспорта содержал всего одну строку заголовка таблицы, а в версии OwenLogic v. 2.10.366 их стало две. Если вернут одну строку заголовка, то нужно изменить строки
Windows Batch file
27
28
@rem Удалить заголовок (напечатать cо 2 по последнюю строку)
@%sed_exe% -n "2,$p" %source%>%tmp_file%
Количество полей, их порядок и назначение в OwenLogic постоянно меняется. На данный момент, интересующие поля (название, тип, адрес, комментарий) располагаются в полях файла экспорта ПР205 в позициях соответственно 1, 2, 4 и 6.
Поэтому в строке поиска находится 6 шаблонов %fields%, и номера позиций нужных полей расставлены в нужном для EasyBuilder Pro порядке (\1\,%device_name%\,3x\,\4\,"\6"\,\2)
Windows Batch file
29
30
@rem Переставить поля
@%sed_exe% -n -r "s/%field%%field%%field%%field%%field%%field%.*/\1\,%device_name%\,3x\,\4\,"\6"\,\2/p" %tmp_file%>%target%
Если изменится число или порядок полей в экспорте, то именно в этих строках и выполнять коррекцию.

Импорт в EasyBuilder выполняется в OEM кодировке, поэтому результат дополнительно перекодируется утилитой iconv.

2. ДОПОЛНЕНИЕ БУЛЕВЫМИ ПЕРЕМЕННЫМИ ПРИ ПОМОЩИ ТАБЛИЧНЫХ ПРОЦЕССОРОВ



Множество булевых переменных для передачи упаковываются в 16-разрядные целые числа. В EasyBuilder для них введено обозначение "3x_Bit" и адрес задаётся особым образом DDDDDdd (DDDDD - это адрес регистра, dd - номер бита с лидирующим нулём).
Очень удобно сделать экспорт из EasyBuilder одной такой переменной, открыть cvs файл в табличном процессоре (Exel ил MS Office или Calc из LibreOffice), размножить строки и заполнить комментариями. После чего сохранить и импортировать в EasyBuilder Pro.

ВЫВОДЫ И РЕКОМЕНДАЦИИ



Формат экспорта переменных OwenLogic меняется очень часто, поэтому предложенное решение работоспособно весьма ограниченное время. Но при помощи небольших изменений оно позволяет адаптировать алгоритм под текущее состояние.
Время на адаптацию несоизмеримо меньше времени ручного набора тегов.

Обработку в Exel (Calc) можно использовать и в самом начале работ над проектом для ПР205 при описании сетевых переменных - описать уникальные имена, копированием заполнить типы и другие параметры, настроить автоматическое вычисление адресов регистров при помощи условия названия типа предыдущей переменной.
Метки batch, easybuilder, owenlogic
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 4
Комментарии
  1. Старый комментарий
    Аватар для wizard41
    Разные кодировки "сращиваю" на лету следующим образом:
    Windows Batch file
    1
    2
    3
    4
    5
    
    :: OEM-866 to Win-1251
    @chcp 866>nul
    @<"tagsHMI.csv">"temp.csv" (for /f "delims=" %%i in ('find/n /v ""') do @chcp 1251>nul& set x=%%i& cmd/v/c echo[!x:*]^^=!)
    copy /b tagsPLC.csv + temp.csv tagsResult.csv
    del temp.csv
    По аналогии, легко трансформируется под UTF-8. Доп. утилит типа iconv не требуется.

    Если название устройства содержит кириллицу
    Это тоже вроде бы несложно автоматизировать "на лету". В моих батниках кириллица тоже присутствует - дополнительно открывать финальный файл и что-то там править еще не приходилось, веинтек их "съедал" без проблем..
    Запись от wizard41 размещена 14.06.2025 в 14:10 wizard41 вне форума
  2. Старый комментарий
    Аватар для ФедосеевПавел
    Спасибо за пример.
    Не всё в нём могу понять, понадобится перечитать справку.
    @<"tagsHMI.csv">"temp.csv" - ввод в "tagsHMI.csv" из консоли и вывод в "temp.csv"?
    @<"tagsHMI.csv">"temp.csv" (for /f - как текстовый файл взаимодействует с for?
    set x=%%i& cmd/v/c echo[!x:*]^^=!) - какая-то замена символов?

    Да, хорошая мысль - ведь если поменять кодировку cvs файла с тегами до обработки, то все строки с кириллицей из пакетного файла будут обрабатываться корректно и никаких постобработок не потребуется. Ощутил эйфорию, что 250 тегов завёл в Weintek за пару минут и не довёл утилиту до завершения.

    Чуть позже проверю и внесу исправления.

    Спасибо!

    Не по теме:

    Ещё недавно программировал кустарно, теги приходилось набирать. Хотя работал с ПЛК и панелями одного производителя, но форматы импорта и экспорта у них не совпадали. Терялся от этого, не понимал, как исправить.
    Сменил работу, стал больше общаться с программистами, увидел, как коллега в Notepad++ ловко работает с регулярными выражениями - и тут всё стало на свои места, узнал о sed и понеслось. Использование iconv - по инерции, раз есть sed, то среди утилит должен быть и конвертер кодировок.

    Запись от ФедосеевПавел размещена 15.06.2025 в 22:46 ФедосеевПавел вне форума
  3. Старый комментарий
    Аватар для wizard41
    Смысл тут простой:
    - устанавливаем заранее известную кодировку файла-оригинала (OEM-866);
    - открываем файл, который должен существовать в папке запуска данного командного сценария. В данном случае, это файл tagsHMI.csv;
    - т.к. *bat-файлы сценариев (еще со времен DOS) могут выполнять только однопотоковые операции, т.е. мы не можем выделить память под результаты и использовать их где-л. еще, то, для будущей обработки текущего файла мы создаем временный - temp.csv;
    - в этот файл temp.csv записывается новая информация из файла tagsHMI.csv, но уже трансформированная согласно условиям в цикле. Там тоже все довольно просто: вычисляется кол-во строк, далее, для каждого символа устанавливается кодировка и результат пишется в файл. Конвертация символов осуществляется препроцессором на основании команды set. Особые правила конвертации, если они присутствуют в исходном тексте: echo[!x:*]^^=!
    - мы получили файл tagsHMI.csv, но уже с новой целевой кодировкой Win-1251;
    - далее, происходит слияние этого файла с неким файлом тэгов PLC, в результате чего появляется готовый файл tagsResult, который можно импортировать в панель Weintek.
    Запись от wizard41 размещена 16.06.2025 в 00:24 wizard41 вне форума
  4. Старый комментарий
    Аватар для wizard41
    А, ну и временный файл temp.csv удаляется, что понятно из выше-приведенного кода.
    как текстовый файл взаимодействует с for?
    с for взаимодействует исполняемая среда *bat-файла, т.е. процессор, условно говоря. Эти файлы распознает любой виндовс, до 11-го включительно. Командный интерпретатор (DOS) понимает что в них написано и что делать.
    Где-то читал, что это скоро упразднят. Будем все на Windows-Shell сидеть: там писать немного сложнее, но суть не меняется..
    Запись от wizard41 размещена 16.06.2025 в 00:43 wizard41 вне форума
 
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru