OwenLogic: перенос сетевых переменных в панель Weintek (EasyBuilder Pro)
Запись от ФедосеевПавел размещена 03.06.2025 в 20:33
Показов 7174
Комментарии 4
Метки batch, easybuilder, owenlogic
ВВЕДЕНИЕПЕРЕД ЭКСПЕРИМЕНТАМИ - СОЗДАЙТЕ РЕЗЕРВНЫЕ КОПИИ ПРОЕКТОВ На момент написания статьи (02 июня 2025 г.) самыми актуальными версиями ПО являются:
Программируемые реле производства ОВЕН могут снабжаться средствами человеко машинного интерфейса в виде сенсорной панели оператора производства Weintek. Перенос тегов (сетевых переменных) из OwenLogic в среду EasyBuilder Pro можно значительно ускорить с помощью нескольких способов:
Сразу отмечу, хотя и бездоказательно - по моим ощущениям, в EasyBuilder формат импорта и возможности замены одноимённых переменных постоянно меняются. Формат экспорта в OwenLogic точно меняется и не только от версии к версии, но и от модели к модели ПР в рамках одной версии среды разработки. Поэтому, предлагаемые ниже средства не рассчитаны на "вечное" использование, а являются инструментом только сейчас, а для последующих обновлений сред разработки - всего лишь заготовками. Также добавлю, что пользуюсь консольной версией, а не программой с GUI по идеологическим соображениям - утилита нужна здесь и сейчас, при изменении формата входных и выходных данных нужно быстро модифицировать утилиту. Сохранение названий файлов и другой конфигурационной информации сокращает время отладки. Встречал реализацию на Python - она много проще выглядит, но пока нет заинтересованности в его освоении, что не отменяет такой возможности. 1. КОНВЕРТАЦИЯ ФАЙЛОВ ЭКСПОРТА В ФОРМАТ ФАЙЛОВ ИМПОРТА1.1 ИСХОДНИКИ УТИЛИТЫ КОНВЕРТАЦИИДля ПР205 пакетный файл (bat): OL_2_10_366_PR205_to_Weintek.bat
1.2 КРАТКИЕ ПОЯСНЕНИЯВ OwenLogic v. 2.10.366 используется вариация формата cvs со следующими особенностями:
В EasyBuilder Pro v. 6.10.01.359 используется вариация формата cvs со следующими особенностями
Для конвертации использованы консольные UNIX утилиты из binutils и strutils:
Вместо sed можно использовать его форк ssed - обе работают одинаково в данном случае. Утилиты пакета binutils очень распространены и чаще всего уже установлены с каким-нибудь пакетом программирования: WinAVR, Visual Studio и другими. Но при их отсутствии - легко скачиваются и устанавливаются. https://sourceforge.net/projects/gnuwin32/files/ https://sed.sourceforge.io Их установка - просто распаковка в какой-нибудь каталог. В случае gnuwin32 скачать и распаковать в папку утилиты:
Для работы нужно в скрипте уточнить:
Если название устройства содержит кириллицу, то после завершения работы скрипта нужно в текстовом редакторе открыть итоговый файл и заменить дефолтное название устройства "MODBUS RTU (Zero-based Addressing)" на то, которое задано в проекте EasyBuilder Pro, иначе импорт будет невозможен. Отдельное действие с названием устройства получилось из-за того, что не разобрался с кодировками. Но и так, хорошо получилось - много быстрее, чем перенос руками. В среде OwenLogic названия типов данных меняются, на данный момент словами "Long" и "Float" обозначаются соответственно целые 16 разрядные числа без знака и 32-разрядные числа в формате с плавающей запятой. Их обозначения приводятся в строках 22 и 23. Если изменятся очередной раз - менять их названия нужно в этом месте. Ещё недавно файл экспорта содержал всего одну строку заголовка таблицы, а в версии OwenLogic v. 2.10.366 их стало две. Если вернут одну строку заголовка, то нужно изменить строки
Поэтому в строке поиска находится 6 шаблонов %fields%, и номера позиций нужных полей расставлены в нужном для EasyBuilder Pro порядке (\1\,%device_name%\,3x\,\4\,"\6"\,\2)
Импорт в 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
Комментарии
-
Разные кодировки "сращиваю" на лету следующим образом:
По аналогии, легко трансформируется под UTF-8. Доп. утилит типа iconv не требуется.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
Это тоже вроде бы несложно автоматизировать "на лету". В моих батниках кириллица тоже присутствует - дополнительно открывать финальный файл и что-то там править еще не приходилось, веинтек их "съедал" без проблем..Запись от wizard41 размещена 14.06.2025 в 14:10
-
Спасибо за пример.
Не всё в нём могу понять, понадобится перечитать справку.
@<"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
-
Смысл тут простой:
- устанавливаем заранее известную кодировку файла-оригинала (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
-
А, ну и временный файлtemp.csvудаляется, что понятно из выше-приведенного кода.
с for взаимодействует исполняемая среда *bat-файла, т.е. процессор, условно говоря. Эти файлы распознает любой виндовс, до 11-го включительно. Командный интерпретатор (DOS) понимает что в них написано и что делать.
Где-то читал, что это скоро упразднят. Будем все на Windows-Shell сидеть: там писать немного сложнее, но суть не меняется..Запись от wizard41 размещена 16.06.2025 в 00:43


