PDA

Просмотр полной версии : Локальная база макросов.



SF_Axel
21.02.2017, 20:49
В процессе программирования ПР11х и ПР200 столкнулся с одной, не очень приятной фишкой: создавая проект, каждый раз приходится писать стереотипные макросы (ну из серии "Пуск/Стоп" по нормально открытому контакту кнопки с автовозвратом и прочая мелочь). Т.е. это макросы из серии "я так хочу" :) . И все бы ничего, но когда проектов делается хотя бы по нескольку в месяц, это начинает раздражать.
Что хотелось бы? А хотелось бы иметь возможность создать собственную оффлайн библиотеку макросов, с возможностью сохранять туда свои собственные "зарисовки", чтобы не набирать их каждый раз заново. Конечно, можно (как сейчас у меня) сделать отдельный проект с нужными макросами и магическая комбинация Ctrl+C и Ctrl+V, но, это не есть удобно. Да и шататься по проекту в поисках нужного макроса несколько напрягает. А так раз - открыл свою библиотеку, а там уже все что надо. Такой универсальный инструмент. Особенно актуально в моменты выезда на объекты, где мобильники отбирают, а за тобой всегда сопровождающий ходит, но, работать как-то надо )
Из других хотелок по теме: желательно все макросы хранить в отдельной папке, чтобы в случае необходимости её можно было скопировать на другой компьютер. Правда, вероятно придется делать проверку на соответствие макросов текущей версии Owen Logic. И для макросов, имхо, желательно иметь свое расширение, чтобы не путать их с программой. Например *.owm или *.olm

Сама идея локальной библиотеки макросов подсмотрена (и проверена) в среде SMLogic (Segnetics). Несмотря на мою крайнюю нелюбовь к контроллерам этого производителя, данная фича, как мне кажется, была бы очень полезной. Или я чего-то не знаю?

Алексей Геннадьевич
21.02.2017, 21:06
РЭ и инструкцию по ОЛ для кого писали? Уже давно всё придумано.

Василий Кашуба
21.02.2017, 21:16
Как только появилась возможность писать макросы, с тех пор и собираю, свои и понравившиеся с форума, макросы в свою личную библиотеку.

melky
21.02.2017, 22:18
Я думаю автор немного о другом.
Имеется ввиду база, которая автоматом цепляется при запуске ОЛ, но в проект попадают только те, которые поставили на поле.
Например написали программу, отдали кому-то файл, там только те макросы, которые в программе.
Но при запуске ОЛ у себя, нет необходимости импортировать каждый раз макросы, при копи-паст все вставляется сразу, а не говорит "ой, такого у вас нет"...

SF_Axel
22.02.2017, 05:24
Мелкий, в точку.

Павел Братковский
22.02.2017, 05:32
про подобное уже писал, короче поддерживаю!!!!!!!!!!

Василий Кашуба
22.02.2017, 09:53
Я думаю автор немного о другом.
Имеется ввиду база, которая автоматом цепляется при запуске ОЛ, но в проект попадают только те, которые поставили на поле.
Например написали программу, отдали кому-то файл, там только те макросы, которые в программе.
Но при запуске ОЛ у себя, нет необходимости импортировать каждый раз макросы, при копи-паст все вставляется сразу, а не говорит "ой, такого у вас нет"...
А сейчас, что, вы передаёте кому то программу и отдельный файл с макросами? Или всё таки, макросы уже находятся в программе?

melky
22.02.2017, 10:46
Василий Кашуба сейчас ВСЕ импортированные макросы попадают в файл проекта, увеличивая его до больших размеров. А надо, чтобы программа видела ВСЕ макросы, но в файл проекта закидывала только то, что установлено.

з.ы. неужели я изъясняюсь не на русском языке ?

Главное, чтобы разработчики не наступили на грабли CDS, когда компилятор пытается откомпилировать все библиотеки, даже если ни одного не установлено в проект.

Сергей0308
22.02.2017, 10:50
Я тоже маленько добавлю: до полного создания программы я обычно ещё не знаю какие макросы мне предстоит использовать, вы хотите создать проблему на ровном месте, до начала создания программы определять макросы, что потребуются в программе, не лучше оставить как есть потребовался, добавил макрос и не заниматься лабудой!

melky
22.02.2017, 10:52
Сергей0308 и вы нихрена не поняли в идее :)
Если реализуют праильно, вам не надо будет знать, что вы хотите использовать а что нет, просто макросы всегда будут под рукой без необходимости импорт - экспорт.
Нужен, просто взяли его и вставили, не нужен, не вставляем. При этом на размер файла это не отображается.
И при этом перенос проекта с экрана на экран не будет требовать предварительного импорта копируемых макросов.

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

Вот простой вопрос, если вы в программе ни разу не используете ну скажем fGT - зачем он вам в базе ?

Василий Кашуба
22.02.2017, 11:58
Василий Кашуба сейчас ВСЕ импортированные макросы попадают в файл проекта, увеличивая его до больших размеров. А надо, чтобы программа видела ВСЕ макросы, но в файл проекта закидывала только то, что установлено.

з.ы. неужели я изъясняюсь не на русском языке ?

Главное, чтобы разработчики не наступили на грабли CDS, когда компилятор пытается откомпилировать все библиотеки, даже если ни одного не установлено в проект.
Неужели я говорю на китайском? Зачем в программу импортировать всю библиотеку? Импортируйте только то, что нужно в данной программе.

Василий Кашуба
22.02.2017, 12:04
Сергей0308 и вы нихрена не поняли в идее :)
Если реализуют праильно, вам не надо будет знать, что вы хотите использовать а что нет, просто макросы всегда будут под рукой без необходимости импорт - экспорт.
Нужен, просто взяли его и вставили, не нужен, не вставляем. При этом на размер файла это не отображается.
И при этом перенос проекта с экрана на экран не будет требовать предварительного импорта копируемых макросов.

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

Вот простой вопрос, если вы в программе ни разу не используете ну скажем fGT - зачем он вам в базе ?
А зачем вам алфавит? Некоторые слова вы можете не использовать, по своим этическим соображениям, а алфавит нужен весь.

melky
22.02.2017, 12:04
Василий Кашуба я про это и пишу, что в программе импорт только тех макросов, которые установлены на программном поле
Я говорю о ВОЗМОЖНОСТИ не заниматься импортом макросов каждый раз, когда взбрело в голову что-то добавить, а чтобы ОЛ видел ВСЕ ВОЗМОЖНЫЕ макросы, которые может быть я надумаю вставить в программу СРАЗУ при загрузке.

Вы работали с CDS ? я просто смотрю, что у вас до сих пор нет понимания того, что хочет автор топика....

Василий Кашуба
22.02.2017, 12:07
Василий Кашуба я про это и пишу, что в программе импорт только тех макросов, которые установлены на программном поле
Я говорю о ВОЗМОЖНОСТИ не заниматься импортом макросов каждый раз, когда взбрело в голову что-то добавить, а чтобы ОЛ видел ВСЕ ВОЗМОЖНЫЕ макросы, которые может быть я надумаю вставить в программу СРАЗУ при загрузке.

Вы работали с CDS ? я просто смотрю, что у вас до сих пор нет понимания того, что хочет автор топика....
Я всё прекрасно понимаю, автор хочет сразу толковый словарь Даля иметь.

melky
22.02.2017, 12:17
Нет, хотя от части да.
Например вы импортировали новый макрос, проверили его работоспособность, он вам понравился. Вы говорите, сохранить его в Локальную базу. (предворительно вы определили папку хранения локальной базы). Все, макрос полетел туда. При следующем запуске ОЛ вы СРАЗУ видите все свои "любимые" макросы, не надо заниматься каждый раз импортом...
Это очень удобно, когда открываете старый проект с макросами и новый и хотите скопировать, тогда ОЛ должен смотреть, есть ли копируемые макросы в локальной базе и брать их оттуда. Если нет, не выводить это придурошное сообщение об ошибке, а переносить макрос из проекта в проект.
Например доп вкладка к уже имеющимся "Функция", "Функциональный блок", "Макросы проекта" (то, что на поле и попадет в файл) и "База макросов"

Еще раз говорю, макросы из Локальной базы не должны попадать в файл проекта, а то программеры как обычно сделают все через задницу.

Василий Кашуба
22.02.2017, 12:17
Вы работали с CDS ?
Я работал в CDS, если вам дали программу, а у вас не установлена библиотека, используемая в программе, то вы без библиотеки программу можете только угробить.

melky
22.02.2017, 12:20
Василий Кашуба по крайней мере в CDS нет идиотизма, если все требуемые библиотеки подключены и не надо дрочить каждый раз с импортом библиотек.
Вот об этом и речь, что если библиотеки подключены при запуске программы, то все прекрасно открывается, а не так как сейчас в ОЛ...

Сергей0308
22.02.2017, 12:24
Василий Кашуба по крайней мере в CDS нет идиотизма, если все требуемые библиотеки подключены и не надо дрочить каждый раз с импортом библиотек.
Вот об этом и речь, что если библиотеки подключены при запуске программы, то все прекрасно открывается, а не так как сейчас в ОЛ...

Любопытно, сейчас что не так? Макросы находятся в программе, не надо там ни чего импортировать!

melky
22.02.2017, 12:30
Сергей0308 вы опять ничего не поняли....

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

Так вот, файл owl при сохранении программы это аналог списка вызовов, а локальная база это аналог записной книжки вашего конкретного ОЛ, установленного на ПК.

Сергей0308
22.02.2017, 12:35
Сергей0308 вы опять ничего не поняли....

Что я должен понять, что мне неудобно? Это трудно сделать, если мне удобно!
Если смущают мегабайты, можно воспользоваться советом Ситникова, читать книги, один том занимает приблизительно 1 МБ!

melky
22.02.2017, 13:02
вопрос по локальным базам поднимается давно, просто разработчики не могут уделить этому внимание, ссылаясь на то, что все попадает в файл проекта, а разделить не могут или не хотят.
автор топика далеко не первый кто поднимает этот вопрос.

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

Сергей0308
22.02.2017, 15:48
Нет, хотя от части да.
Например вы импортировали новый макрос, проверили его работоспособность, он вам понравился. Вы говорите, сохранить его в Локальную базу. (предворительно вы определили папку хранения локальной базы). Все, макрос полетел туда. При следующем запуске ОЛ вы СРАЗУ видите все свои "любимые" макросы, не надо заниматься каждый раз импортом...
Это очень удобно, когда открываете старый проект с макросами и новый и хотите скопировать, тогда ОЛ должен смотреть, есть ли копируемые макросы в локальной базе и брать их оттуда. Если нет, не выводить это придурошное сообщение об ошибке, а переносить макрос из проекта в проект.
Например доп вкладка к уже имеющимся "Функция", "Функциональный блок", "Макросы проекта" (то, что на поле и попадет в файл) и "База макросов"

Еще раз говорю, макросы из Локальной базы не должны попадать в файл проекта, а то программеры как обычно сделают все через задницу.

Если сделать, как Вы хотите, цитирую "макросы из Локальной базы не должны попадать в файл проекта", то получится полная лабуда, надо будет не только проект передавать, но и локальную базу макросов, так как у Вас с вероятностью 100% может не оказаться тех макросов, что есть у меня, я вот подозреваю, что Вы не то хотели, но доказать не могу!

melky
22.02.2017, 16:04
Сергей0308 вы писатель, а не читатель насколько я вижу. Я выше НЕСКОЛЬКО раз указал, что в конечный файл owl должны попасть все макросы, установленные на программное поле.
А не все макросы, которые есть в базе, локальной, онлайн или какой либо другой.

Сергей0308
22.02.2017, 16:35
Сергей0308 вы писатель, а не читатель насколько я вижу. Я выше НЕСКОЛЬКО раз указал, что в конечный файл owl должны попасть все макросы, установленные на программное поле.
А не все макросы, которые есть в базе, локальной, онлайн или какой либо другой.

Вам-то может и понятно, что Вы хотите, это мне приходится пользоваться догадками, например поместили Вы макрос из локальной базы на полотно, он автоматически добавился в проект, вроде пока всё замечательно, понадобился Вам такой второй макрос, Вы опять перетаскиваете на полотно из локальной базы(или допустим я не помню есть у меня такой макрос в проекте, мне же кажется неудобно, перед тем как добавить макрос из локальной базы, просматривать постоянно, нет ли у меня такого в проекте), так вот к чему я, макрос опять обязан скопироваться в проект, но там уже есть такой, выскочит предупреждение, что такой макрос уже есть в проекте, как Вы хотите это разрулить, мне непонятно, может как ещё по-своему сделать? Вы поймите я же не против чего-то, чего я ещё не знаю!

melky
22.02.2017, 17:00
Зачем просматривать ? мне вот не совсем ясно, вы кроме ОЛ работали с ПО других производителей ?

Вы когда ИЛИ вставляете в проект, вы как это делаете ? копи паст или так же из вкладки можете вставить, что-то измениться ?
Я кстати знаю, чем эти способы отличаются в некоторых случаях, а Вы знаете ?

и совсем глупый вопрос, вы когда на холст копируете макрос их вкладки Макросы проекта кто-то ругается, что на холсте он уже есть ?

Сергей0308
22.02.2017, 17:09
Зачем просматривать ? мне вот не совсем ясно, вы кроме ОЛ работали с ПО других производителей ?

Вы когда ИЛИ вставляете в проект, вы как это делаете ? копи паст или так же из вкладки можете вставить, что-то измениться ?
Я кстати знаю, чем эти способы отличаются в некоторых случаях, а Вы знаете ?

и совсем глупый вопрос, вы когда на холст копируете макрос их вкладки Макросы проекта кто-то ругается, что на холсте он уже есть ?

Я не про холст, а про библиотеку проекта, сейчас она "ругается":

29703

Или Вы передумали, чтобы при помещении макроса на холст из локальной базы, он автоматически копировался в проект?
Мы же про ОЛ речь начинали вести, а не про другое, а то Вы сразу хотите ещё что-то пообсуждать!
Короче, у Вас нет четкого представления, во всяком случае оно не сформулировано, поэтому рано выступать с предложениями, сначала надо определится и всё чётко сформулировать, как Вы видите, например касаясь последнего случая примерно так: при помещении макроса из локальной базы на холст, он копируется в проект, если его там(в проекте) нет!
Иначе ошибка, насколько серьёзная не знаю, но неприятно было бы всё потерять!

29705

melky
22.02.2017, 19:59
Сергей0308 послушайте, проверку наличия макроса в проекте это дело рук программиста, я бы и за ту ошибку, которую вы привели руки бы оторвал за то, что мозгов не хватило на проверку тот же это макрос или новый (имеет отличия с тем же именем и ID)...

Вот честно, не понимаю зачем выдавать ошибку, если имя и ID совпадает и тело макроса так же сопадает...
А смысл да, поняли правильно. Ставим на поле макрос из базы, он переносится во вкладку Макросы проекта и записывается ссылка на него потом в файл owl, а так же само тело макроса. Если опять ставим на холст макрос из базы проверкой ДОЛЖНА заниматься среда а не человек...
Вы же не заморачиваетесь как ставить ИЛИ, И, GT и остальные ? Хотя заморочки там есть, которые опять же, разработчики должны устранить...

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

В идеале смена устройства без копи-паст программы.

Хотя кому я это ? rovki вон полгода уже ждет возможность заливки проекта в ПР без ОЛ а это ждать так вообще все три....

SF_Axel
22.02.2017, 21:50
Хотя кому я это ? rovki вон полгода уже ждет возможность заливки проекта в ПР без ОЛ а это ждать так вообще все три....

Да, скорее всего так и будет. А жаль. Удобная была бы фича.

Владимир Ситников
01.03.2017, 14:20
К вопросу "как можно было бы сделать".
В MasterScada 4D сделали весьма удобно: https://youtu.be/Y1DkKX6LQYw?t=146

Vyachep
01.03.2017, 18:26
Поддерживаю - локальная база макросов учень удобная вещь.
У Simens Logo есть блоки UDF - это именно то, о чем говорят SF_Axel и melky.
Они доступны в отдельной ветке дерева компонентов.
Поддерживается версионность, среда сама контролирует совпадение версий.
Если нужного блока(макроса) нет в локальной библиотеке, но он есть в программе - его можно сохранить в библиотеку (но при этом страдает читаемость макроса).
В настройках ЛогоКомфорта надо всего лишь указать каталог для создания локальной базы макросов.

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

Vyachep
01.03.2017, 18:34
В идеале смена устройства без копи-паст программы.

Этой фичи тоже весьма не хватает.
Спецокно "Настройки проекта":
1. Выбор целевого устройства.
2. Настройка часов реального времени (при наличии)
3. Конфигурирование входов-выходов.
и т.д.

SF_Axel
03.03.2017, 19:59
Оффтоп


Да, я фанат Лого (хоть и стараюсь поддерживать отечественного производителя), потому что у него как минимум среда разработки гораздо удобнее, чем ОЛ, и я уже об этом здесь говорил.

Очень спорный вопрос. Наверное, это скорее дело привычки. Т.е. делал как-то автоматику для станка по намотке сетки-рабицы, ну так скажу, на Logo вышло корявее всего. Кстати так и не нашел где переменную фильтрации входов настроить. Что весьма ограничило скорость работы станка. А на ОВЕН все шикарно получилось. Где-то даже фотки остались. Но это не по делу.

А по делу - никому в ОВЕН до этого дела не будет, пока им серьезная контора, работающая исключительно в ОЛ (уже едва ли возможно) предъяву не выкатит. Мол, или делайте так, или до свидания. Таких, думаю, не так и много. А тех кто в CoDeSys работает и так все устраивает (меня, в частности, тоже). Ну или как вариант ПР других производителей резко упадут в цене. Что тоже маловероятно.

З.Ы. вообще тех станков было три штуки. На одном стоял Siemens !LOGO, на другом Mitsubishi Alpha и третий на ОВЕН. В последствии все было переделано на ОВЕН.

anthrwpos
04.03.2017, 09:12
Я так и не понял, тема про то, что лень делать импорт нужных макросов по ходу разработки проекта?
Или про то, что топикстартер не знает о существовании экспорта в файл и импорта макросов поэтому каждый раз пишет их заново?)

Vyachep
04.03.2017, 10:38
А по делу - никому в ОВЕН до этого дела не будет, пока им серьезная контора, работающая исключительно в ОЛ (уже едва ли возможно) предъяву не выкатит. Мол, или делайте так, или до свидания. Таких, думаю, не так и много. А тех кто в CoDeSys работает и так все устраивает (меня, в частности, тоже). Ну или как вариант ПР других производителей резко упадут в цене. Что тоже маловероятно.

Согласен, но это не означает что можно расслабиться и ничего не делать - и так будут покупать и пользоваться.

Мне не сложно делать импорт/экспорт макроса каждый раз, но это неудобно. А если я отредактирую часто используемый макрос, как убедиться что он у меня обновлен во всех текущих проектах? (удалить с холста, удалить из списка, импортировать новый, перенести его на холст, привязать связи на место...)

Плюсы локальной базы опять же по мотивам ЛОГО (будь оно неладно! :cool:), по пунктам:

1. Макросы хранятся в одном месте, и не нужно каждый из них специальным образом импортировать. Они доступны сразу.
2. Отредактировать и сохранить новую версию макроса можно из любого проекта. Макрос сохранится с отметкой о новой версии.
3. Макросы старой версии в любом из существующих проектах при открытии будут автоматом отмечены, как устаревшие, обновить до новой версии - два клика мыши. Связи с другими блоками при этом не обрываются.
4. Если макроса в локальной базе нет, а в открываемом проекте он есть - перенести его в локальную базу тоже можно за пару кликов мыши.

Это удобно. Это просто. И это сделано лучше, чем в ОЛ.

P.S. По поводу корявости реализации алгоритма - задачи разные, ПР разные, одну задачу можно красиво и просто сделать на одном ПР (из-за его особенностей), другую - на другом.

SF_Axel
05.03.2017, 09:16
Я так и не понял, тема про то, что лень делать импорт нужных макросов по ходу разработки проекта?
Или про то, что топикстартер не знает о существовании экспорта в файл и импорта макросов поэтому каждый раз пишет их заново?)

Если не понял, зачем отвечать? Я, похоже довольно точно, указал на слабое место ОЛ по сравнению со средами программирования других производителей (за исключением среды для Mitsubishi Alpha - там тот же косяк). У всех остальных производителей программируемых реле этот момент проработан. Иногда настолько, что кажется, что ПР ОВЕН спасает только цена. По крайней мере я их покупаю исключительно из-за этого. Мелкое производство, все дела. Но, скажем, автоматику для кегомойки (сосед по цеху варит пиво в мелкопромышленных масштабах) я предпочел сделать на !LOGO. Потому что мало ли что... ОВЕН под такие проекты (хоть и небольшие) не пойдет. По той простой причине, что скачать программу из ПР нельзя, а такие редко используемые макросы хранить в одном (или нескольких) листах проекта несколько напряжно. Если потом когда-нибудь еще понадобиться - не найдешь.
Все сугубо имхо. ОВЕН под вентиляцию, не более.

Василий Кашуба
05.03.2017, 11:05
Потому что мало ли что...
Сосед то рядом. :)

Сергей0308
05.03.2017, 11:59
Если не понял, зачем отвечать? Я, похоже довольно точно, указал на слабое место ОЛ по сравнению со средами программирования других производителей (за исключением среды для Mitsubishi Alpha - там тот же косяк). У всех остальных производителей программируемых реле этот момент проработан. Иногда настолько, что кажется, что ПР ОВЕН спасает только цена. По крайней мере я их покупаю исключительно из-за этого. Мелкое производство, все дела. Но, скажем, автоматику для кегомойки (сосед по цеху варит пиво в мелкопромышленных масштабах) я предпочел сделать на !LOGO. Потому что мало ли что... ОВЕН под такие проекты (хоть и небольшие) не пойдет. По той простой причине, что скачать программу из ПР нельзя, а такие редко используемые макросы хранить в одном (или нескольких) листах проекта несколько напряжно. Если потом когда-нибудь еще понадобиться - не найдешь.
Все сугубо имхо. ОВЕН под вентиляцию, не более.

Начинали за здравие, кончили за упокой! Что же Вам мешает соседу исходный проект передать и не "страдать"?

SF_Axel
05.03.2017, 20:36
Зачем передавать? Да и не факт что она там останется. Автоматчик у них там, конечно, сообразительный, а только ему это нафиг не нужно. О чем он мне, собственно и заявил. У него шнурок от шнайдера и среда под него же.

Я ему даже инструкцию по настройке скоростей на частотниках втюхать не могу. Отговорка все та же: ты делал, ты и разбирайся.

melky
05.03.2017, 21:38
anthrwpos тема о другом, но видимо и вам это не понять...

Сделайте импорт, потом откройте новый проект и сделайте копи-паст проекта, дальнейшие действия продолжать описывать или сами поймете ?

Сергей0308
05.03.2017, 21:48
anthrwpos тема о другом, но видимо и вам это не понять...

Сделайте импорт, потом откройте новый проект и сделайте копи-паст проекта, дальнейшие действия продолжать описывать или сами поймете ?

Да не надо там ничего копировать, лучше всё заново сделать! Например сейчас я всё что приходилось делать раньше сделал бы не так, как делал раньше! Не помню кто сказал: "только заканчивая какое-то дело, мы понимаем как его следовало начинать"! Да и занимаясь простым копированием отупеть можно окончательно, дойти до точки невозврата!

melky
05.03.2017, 21:54
Не важно, хотели вы сделать иначе или нет, но у ОЛ пока нет иной возможности сменить платформу кроме копи-паст.
Да и не всегда надо делать все иначе, тем более отрисовку кучи линий.
Или вы хотите сразу перенести часть кода вместе с линиями связи.
и опять же, заниматься постоянным импортом при открытии нового проекта тоже достает.