Coder Social home page Coder Social logo

savushkin-r-d / easyeplanner Goto Github PK

View Code? Open in Web Editor NEW
27.0 7.0 45.0 24.02 MB

The EasyEPLANner is an Add-In to EPLAN. It reduces the work of an Automation and Software engineers. EasyEPLANner helps to describe technological objects (Tank, Boiler, etc.), operations, etc. according to the ISA-88 standard. Eventually, EasyEPLANner generates Lua files to be uploaded to a controller.

License: MIT License

C# 97.57% Lua 2.43%
eplan s88 isa88 industrial-automation lua-programming-languages engineer

easyeplanner's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

easyeplanner's Issues

Переименовать doc в docs

GitHub не может подхватить Contributing.md и CodeOfCunduct.md из каталога doc. Ему надо загрузить эти файлы либо в корень, либо в .github, либо в /docs. Лучший вариант - переименовать doc в docs.

Рефакторинг TechObject.cs

Раскидать TechObject по файлам т.к он имеет большой объем и в нем сложно ориентироваться

Добавить подтипы устройств - виртуальный текущий и дискретный уровни.

       //LS
        DST_LS_MIN = 1,     ///< Подключение по схеме минимум.
        DST_LS_MAX,         ///< Подключение по схеме максимум.

        LS_IOLINK_MIN,      ///< IOLInk уровень. Подключение по схеме минимум.
        LS_IOLINK_MAX,      ///< IOLInk уровень. Подключение по схеме максимум.

        **DST_LS_VIRT,**        ///< Виртуальный датчик уровня.

       //LT
        DST_LT = 1,    ///Текущий уровень без дополнительных параметров.
        DST_LT_CYL,    ///Текущий уровень для цилиндрического танка.
        DST_LT_CONE,   ///Текущий уровень для танка с конусом в основании.
        DST_LT_TRUNC,  ///Текущий уровень для танка с усеченным цилиндром в основании.

        DST_LT_IOLINK, ///Текущий IOLInk уровень без дополнительных параметров.

        **DST_LT_VIRT**,   ///< Виртуальный текущий уровень.

Ошибка в синтаксисе LUA

Ошибка в синтаксисе LUA. Надо при отсутствии шага дренаж использовать не nil, а пустую таблицу

Некорректное сохранение main.object если есть "Заглушка"

Опишите ошибку
"Заглушка" устанавливается, если устройство есть в описании (при считывании из файла), но его нет на ФСА. При сохранении такого проекта необходимо не учитывать эту заглушку т.к она может привести к записи пустой LUA таблица (если в действии только из устройств только заглушка). Пустая LUA таблица некорректно обрабатывается lua скриптом sys.lua.

Как воспроизвести её
Шаги для воспроизведения проблемы

  1. Поредактировать проект без EasyEplaner с удалением объектов, которые описаны в main.objects
  2. Подключить надстройку (с перезапуском Eplan)
  3. При загрузке проекта будет ошибка скрипта

Ожидаемое поведения
Надо обработать такое поведение, что бы это не приводило к ошибке.

Скриншоты
Не требуется.

Дополнительная информация
Не требуется.

Ошибка при добавлении устройства в действие

Опишите ошибку
В действие не вставляется объект, если у установки нет порядкового номера.

Воспроизведение
Шаги для воспроизведения поведения:

  1. Зайти в редактор устройств;
  2. Перейти в режим редактирования;
  3. Перейти во вкладку действий и выбрать действие "Включить" (для примера);
  4. Нажать на ФСА на любое устройство (двигатель например) в ОУ которого (для установки) не указан порядковый номер. Прим., =+CIP-M1 и оно не добавится.

Ожидаемое поведение
Должно было добавиться

Скриншоты
Не обязательно.

Дополнительная информация
Не обязательно.

Описать процесс синхронизации названий модулей и устройств более подробно

Ваш запрос связан с проблемой? Пожалуйста, опишите.
Нужно более подробное описание функции синхронизации названий устройств и модулей.

Опишите решение, которое Вы хотели бы
Дополнить документацию, что бы был описан процесс синхронизации более подробно (если привязано 1 устройство, два и более и др.), а так же настройки функционального текста в окне Отображение, что бы функциональный текст выглядел упорядоченным.

Переименовать slack канал в документации

Ваш запрос связан с проблемой? Пожалуйста, опишите.
Переименован канал в slack на easyeplanner.slack.com

Опишите решение, которое Вы хотели бы
Исправить это в документации.

Дополнительная информация
Не требуется.

Автоматическое выключение программы при бездействии более определенного времени

Необходимо реализовать функционал, который бы позволял безопасно закрывать Eplan если в нем не работают/бездействуют более 1 часа. Необходимо, что бы перед закрытием текущие проекты были закрыты и сохранены, а после этого закрывалась сама программа.
Также следует предусмотреть, что бы по истечении 1 часа бездействия пользователю выводилось окошко, которое бы предупреждало, что через 10 секунд программа будет закрыта (должен вестись отсчет времени). В этом окошке должна быть кнопка "Отменить", которая бы отменяла выключение до следующего прошедшего часа бездействия.

Пример ситуации: конец рабочего дня, персонал закончил работать, пошел домой, а Eplan забыл закрыть. Лицензии заняты. Или человек ушел в отпуск/заболел и тд и тп.

Ошибка параметров у QT_IOLINK датчика

Опишите ошибку
Устройство QT выводит в логах ошибку, если указать его подтип QT_IOLINK. Пишет, что не заданы параметры.

Воспроизведение
Шаги для воспроизведения поведения:

  1. Зайти в устройство QT;
  2. Нажать на Доп. поле[2];
  3. Написать "QT_IOLINK" и применить изменения;
  4. Нажать кнопку сохранения и в логах будет выдано сообщение.

Ожидаемое поведение
Ошибки быть не должно.

Скриншоты
Не обязательно.

Дополнительная информация
Не обязательно.

Упрощение привязки устройств к IO-Link модулям

Для обозначения, к какому каналу привязывать (DI, DO, AI/AO) можно использовать тип устройства:

  • устройства с одним каналом однозначно определяют тип канала;
  • если каналов больше одного, тогда дополнительно указывается тип канала.

Убрать ошибку изделия у моторов M и клапанов VC

В моторы на ФСА не прописыываются изделия, а прописываются на электрических схемах в устройствах, которые не поддерживает Eplanner. Надо исключить обработку этой ошибки для M.
VC клапана тоже самое.

Рефакторинг классов EplanDeviceManager и EplanIOManager

Ваш запрос связан с проблемой? Пожалуйста, опишите.
Провести рефакторинг класса EplanDeviceManager и EplanIOManager.

Опишите решение, которое Вы хотели бы
Классы захламлены, содержат в себе очень длинные функции, в которых необходимо очень долго разбираться, что бы что-то изменить в них. Сильно нарушается принцип DRY.

Классы содержат в себе функции чтения конфигураций и функцию сохранения, которая вызывает класс более низкого уровня. Предположительно, можно от этого отказаться и сделать вместо этих двух классов (вынося методы сохранения пониже) один класс ConfigurationReader (или что-то подобное, надо подумать). Соответственно, избавившись от этого, можно будет вынести в отдельный файл новый класс

Дополнительная информация
Это не срочная работа, но её необходимо сделать, потому что если влезть в код даже через месяц, то видишь его как в первый раз.

Внутренняя ошибка Eplan

При добавлении клапанов вылетает еплан (иногда вылетает, иногда работаешь достаточно долго. ошибка непостоянна, но она есть).

Стек вызовов ведет во внешний код (наш код проверил, он не ведет к проблеме), и через дебагер читается следующее исключение (точнее дебагер пишет [Внешний код], а информация об исключении ниже):

Eplan.EplApi.DataModel.InvalidHandleException
  HResult=0x80070057
  Сообщение = Недействительный DataModel-объект.
  Источник = Eplan.EplApi.DataModelu
  Трассировка стека:
   at test_handle<class BaseHandle>(BaseHandle* h)
   at Eplan.EplApi.DataModel.InternalObjectFactory.CreateStorableObject(BaseHandle* rhObject)
   at InteractionProxy.onElementFound(InteractionProxy* , XGedPos* oPos, DmgInstanceHandle* hElement)

Один раз удалось добиться ошибки, что бы еплан вывел окно "Внутренняя ошибка" и начал перезагружаться.

Проверялось и на старых версиях надстройки (как только она появилась под 2.8), результат такой же. На версии 2.2, к слову, все работает (проведено небольшое тестирование).

Непонятно, как это исправить и как с этим бороться. Для АСУТП эта ошибка мешает работе.

Скриншот из логов:
image

Дебагер:
image

Иногда такие логи:
image

Upd.
Если отключить Interaction, то перестанет работать режим "автоматического" добавления устройств при взаимодействии с ФСА. Будет работать подсветка, но надо будет добавляться устройства через таблицу.

Upd.
В поиске данных для обращения в Eplan Solution Center

Временная альтернатива - работа через окно "Устройства". Дольше, но без вылетов, если не тыкать на ФСА (для добавления/удаления). И можно руками добавлять в текстовую строку.

Замечания по EasyEPLANner/docs/user_manual/

Замечания:
1.Необходимо указать версию используемого пневмоострова. Для этого, схематически располагаем пневмоостров на ФСА и прописываем в доп. поле 2 тип используемой версии (DEV_VTUG_8 и др.). Незабываем про флажок "Главная функция".
2. FQT_F_OK - нет описания канала DI.
3. Мойка, пункт 6.1, в реверсных устройствах прописаны M и V.

Этот вопрос уже всеми обсуждался с Циркуновым Андреем. Нужно оставлять только M.

Доработать базовые операции и объекты

Доработать текущую реализацию базовых операций и базовых объектов, для того что бы использовать их полностью.

Из обозначенного:

  1. Базовую операцию нельзя выбрать, если не выбран базовый объект. Было добавлено ранее.
  2. Уточнить полный перечень параметров для базовой операции. Сделано простое добавление параметров в объектной форме, поэтому в этом нет необходимости на данный момент времени
  3. Добавление сигналов в поля по клику по сигналу на ФСА. Реализовано в #91. Рассмотреть вариант, что бы сигналы не только по клику добавлялись, но и отображались в окне "Устройства".
  4. Придумать имитацию базы данных, которая заменит текущую (возможно, с расчетом на новое дерево технологических объектов по S88). Пока что не надо
  5. Конечная генерация файла prg.lua на основе описания. Слишком объемно, будет решаться в процесса
  6. Обработка исключительных ситуаций в сопутствующих методах. Все ок
  7. Иногда не с первого раза базовая операция выбирается. Не подтвердилось
  8. Фиксация базовых объектов, операций, параметров (возможно шагов) только по клавише Enter. Что бы активировать режим редактирования, нужен дабл клик. Случайно его не активируешь. Не надо это делать пока что
  9. Скорее всего придется добавить такое понятие как базовый шаг. Нет
  10. Подумать об автоматическом генерировании имени объекта, операции, шага на основе базового объекта. Будет решаться позже

Добавить механизм версий

Ваш запрос связан с проблемой? Пожалуйста, опишите.
Нет возможности узнать версию системы.

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

Опишите альтернативы, которые Вы рассматривали
Других альтернатив в надстройке нет.

Дополнительная информация
Надо проработать систему версий, её нумерацию и порядок.

Запись сигналов с датчика положения GS

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

Опишите решение, которое Вы хотели бы
Добавить устройство в список возможных для добавления.

Опишите альтернативы, которые Вы рассматривали
Нет альтернатив.

Дополнительная информация
Сейчас стоит блокировка по типам устройств, её надо дополнить устройством GS.

Дополнить документацию по DEV_VTUG

В документации дополнить описание DEV_VTUG_8, 16, 24. Надо указать количество клапанов.
Для DEV_VTUG_8 - 16 клапанов, DEV_VTUG_16 - 32 клапана, DEV_VTUG_24 - 48 клапанов.

Проверка изделий устройств

Необходимо сделать, что бы изделия в размещенных на ФСА устройствах проверялись на пустоту. Что бы всегда были записаны изделия в устройствах. Ошибка должна иметь характер ненавязчивой и не влиять на работу надстройки.
Если в устройстве не найдено изделие - выдать сообщение "В устройстве {ОУ} не задано изделие".

Добавить автоматический выключатель с IO-Link в eplan

Добавить автоматический выключатель с IO-Link в eplan, код для заказа и просмотра на сайте PXC: 2910411. Основное обозначение в eplan будет F или FA (нужно добавить оба), доп поле 2: FA_IOLINK (доп.поле не знаю нужно оно вообще или нет).
um_en_cbmc_e4_iol_108147_en_00.pdf

Сбивается последовательность устройств в операции

Опишите ошибку
Сбивается последовательность объектов в действиях операции. Она сортируется, хотя не должна сортироваться. Мигрировало из версии 2.2 в версию 2.8.

Как воспроизвести её
Шаги для воспроизведения проблемы

  1. Скопировать (Ctrl+C) объект в редакторе технологических объектов. Важно, что бы в объекте были операции с действиями, в которых есть устройства.
  2. Вставить объект (Ctrl+V)
  3. Если устройства в действии находились не в алфавитном порядке, то они сортируются и становятся в алфавитном порядке.

Ожидаемое поведения
Последовательность не должна сбиваться т.к неудобно сравнивать похожие объекты.

Скриншоты
До
image
После
image

Дополнительная информация
Не требуется.

Дополнительные параметры для размеров танка для датчиков LT_IOLINK

Добавить варианты датчиков LT с IO-Link интерфейсом LT_IOLINK_CYL и параметры (P_MAX_P, P_R), LT_IOLINK_CONE параметры (P_MAX_P, P_R, P_H_CONE), LT_IOLINK_TRUNC параметры (P_MAX_P, P_R, P_H_TRUNC), чтоб велся автоматический пересчет в программе данных в литры продукта, реализация аналогична старым датчикам без IO-Link.

Ошибки при базовой операции мойка в танках

При добавлении базовой операции мойка в танках появляются 2 поля с сигналами мойка свободна и мойка завершена, сейчас туда не записываются сигналы при нажатии на обозначение сигнала, только прописывать вручную, также сигналы для всех танков записываются одинаковые и при изменении меняются везде. У меня в проекте танки моются по группам 5 по одной линии, 5 по другой соответственно - данный функционал не подходит.

Заменить текущую библиотеку для работы с Excel на Free Spire.XLS

Необходимо заменить текущую библиотеку для работы с Excel (генерация документа из ExcelReporter) на OSP библиотеку EPPlus. В проект должен быть добавлен subModule в виде этой библиотеки. А подключаться библиотека должна из папки libs (просто скопировать туда файлик dll библиотеки). Также надо учесть, что библиотека dll должна иметь строгое имя (быть подписана). Можно собственным ключом, или ключом от разработчика (может быть подписано разработчиком сразу).

Не записывать пустые каналы в main файлы

Опишите ошибку
Если устройство не привязано, но содержит каналы, то текущие алгоритмы записывают это устройство и его пустые каналы в файлы main.io и main.wago. Необходимо, что бы алгоритм учитывал, привязан канал на текущий момент или нет, и в зависимости от этого записывал. При записи (если канал не привязан) он добавляет таблицу LUA, которая не имеет значений т.е пуста

Как воспроизвести её
Шаги для воспроизведения проблемы

  1. Добавить устройство на ФСА
  2. Никуда не привязывать
  3. Сохранить файлы
  4. Открыть файлы и посмотреть как сохраняются каналы

Ожидаемое поведения
Пропускать канал для записи, если он никуда не привязан.

Скриншоты
image

Дополнительная информация
Не требуется.

Непонятные черные пятна после разворачивания из свернутого состояния

Опишите ошибку
После разворачивания из скрытого состояния - черные пятна.

Как воспроизвести её
Шаги для воспроизведения проблемы

  1. Свернуть окно с включенным редактором
  2. Развернуть окно
  3. Черные пятна

Ожидаемое поведения
Пятен быть не должно

Скриншоты
image

Дополнительная информация
Не требуется

Корректный комментарий к подтипу устройства в lua-описании

При сохранении информации об устройствах в файле main.io.lua должен писаться корректный комментарий о подтипе устройства.
Пример некорректного комментария:

        {
        name    = 'LINE2DO3',
        descr   = 'Mойка окончена',
        dtype   = 14,
        subtype = 2, -- PT_IOLINK, 
        },

Пример корректного комментария:

        {
        name    = 'LINE2DO3',
        descr   = 'Mойка окончена',
        dtype   = 14,
        subtype = 2, -- DO 
        },

Некорректно формируется экспорт Excel

Опишите ошибку
Т.к у нас теперь привязывается не только IO-Link к модулю ввода-вывода IO-Link от Phoenix Contact, то надо доработать экспорт Excel, что бы он нормально обрабатывал данный модуль.

Как воспроизвести её
Шаги для воспроизведения проблемы

  1. Открыть проект, где есть IO-Link от Phoenix Contact
  2. Запустить экспорт Excel и посмотреть на генерацию первой страницы

Ожидаемое поведения
Надпись AS-interface записывается во весь IO-Link модуль, надо подумать, может быть как-то можно это обработать. В конце страницы описывается этот AS-interface, он некорректно описывает DI, DO привязку. Будто проходит по модулям, но не записывает.

Скриншоты
image
Безымянный

Дополнительная информация
Не требуется.

Ломается окно "Устройства"

Опишите ошибку
Иногда ломается окно устройства.

Как воспроизвести её
Шаги для воспроизведения проблемы

  1. Открыть проект
  2. Открыть окно "Устройства"
  3. Закрыть окно "Устройства"
  4. Закрыть проект
  5. Открыть проект
  6. Открыть окно устройства
  7. Кнопки стали неактивные

Ожидаемое поведения
Не должно такого быть.

Скриншоты
image

Дополнительная информация
Не требуется.

Размещение описания проектов более чем в одном каталоге

В настоящее время каталог для хранения описания (*.lua файлов) проектов имеет единственное значение. Необходимо сделать так, чтобы была возможность сохранять проекты в разных каталогах - при загрузке необходимо искать нужное описание последовательно для всех каталогов и далее работать с найденным. Если описание нигде не найдено, то его необходимо создавать (описание по умолчанию) в первом каталоге.

Доработка функции синхронизации названий устройств и модулей

Доработать синхронизацию AS-интерфейса
image

Из видимого:

  1. Нумерация от 1 до 64 (ориентировочно);
  2. Что бы был отступ - 3 пробела (а может и больше, надо смотреть настройки в окне "Отображение";
  3. Нумерация в "Доп. поле[20]".

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

Посмотреть как настраивается это в окне "Отображения"

Добавить подключение модулей в файл с управляющим кодом

Добавить следующие строки в начало файла prg.lua:

require( "tank" )                           --Базовая функциональность.
require( "mixer" )
require( "line" )
require( "master" )

Вот итоговый заголовок:

--version  = 1
--PAC_name = 'Имя_проекта'
-- ----------------------------------------------------------------------------
-- ----------------------------------------------------------------------------
require( "tank" )                           --Базовая функциональность.
require( "mixer" )
require( "line" )
require( "master" )

Это нужно для использования описания базовых объектов.

Дополнить документацию для частного преобразователя управляемого через Ethernet

Ваш запрос связан с проблемой? Пожалуйста, опишите.
В документации нет записи о том, как задать IP адрес для устройства типа M подтипа M_ATV. Это частотный преобразователь, управляемый через Ethernet.

Опишите решение, которое Вы хотели бы
Добавить недостающую информацию в документацию.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.