Обсуждение ошибок, "хотелок", доработок которые будут в версии 8.х
Что то ничего не понял если честно. Для того что бы свернуть и развернуть панель достаточно кликнуть в любом месте по всей длине свёрнутой панели (достаточно широкая полоса). Да я и не совсем понимаю зачем их так часто разворачивать? Все необходимые функции доступны из контекстного меню схемы. Если какие то действия Вы часто применяете и их нет в контекстном меню - то напишите - добавлю.Serquick писал(а): ↑03.01.2021{, 23:05}В программе есть две кнопки сворачивающие и разворачивающие панели "Дерево проекта" и "Библиотека функциональных блоков".
Screenshot_.png
Когда программа развернута в полноэкранный режим в крайнем левом положении курсора мыши, кнопка "Дерево проекта" не работает, нужно попадать на серую полоску для срабатывания, так же и с "Библиотека функциональных блоков" в крайнем правом положении курсора. Мелочь, но когда открываешь и закрываешь панель раз 20 маленько напрягает![]()
И было бы удобней добавить на кнопку ролика мыши как в
Adobe Acrobat Reader при просмотре PDF "Руку" - Рука или круговая панорама, что бы не тянуть нижний ползунок![]()
А это в планах. Но скорее не как в акробате а как в автокаде будет сделано (ну собственно как Вы и описали))))). Я просто в автокаде чаще работаю))))
Без стронних программ ,замечательно. НО кто будет компиляцию проводить и ошибки вылавливать ,имхо без ардуино IDE ни как ...там же бибки ...
Полоса широкая, но она не до самого края окна программы. Между краем программы и серой полосой есть тонкая бела полоса. Вот в крайнем левом или правом положении курсор и попадает на белую полосу и не разворачивается панельЧто то ничего не понял если честно. Для того что бы свернуть и развернуть панель достаточно кликнуть в любом месте по всей длине свёрнутой панели (достаточно широкая полоса).
Вот мой один из проектов В нем много Флагов и Регистров, вот и приходится "n" количество раз открывать/сворачивать "Дерево проекта". а то много места занимает в развернутом состоянии. Да и только там их можно добавлять на плату и в проект.Да я и не совсем понимаю зачем их так часто разворачивать? Все необходимые функции доступны из контекстного меню схемы
Флаги и регистры доступны из контекстного меню при выборе пункта - 'Вставить глобальную переменную'. Кстати там же можно и создать новую переменную модбас. Так же из контекстного меню можно вставить и новый блок (пункт "Вставить блок"). И ничего не надо сворачивать и разворачивать.Serquick писал(а): ↑04.01.2021{, 18:06}В нем много Флагов и Регистров, вот и приходится "n" количество раз открывать/сворачивать "Дерево проекта". а то много места занимает в развернутом состоянии. Да и только там их можно добавлять на плату и в проект.
"Библиотека функциональных блоков" часто сворачиваю, так как у меня увеличенный масштаб основного окна (зрение не очень), вот для увеличения рабочего пространства и кликаю А тянуть нижний ползунок постоянно напрягает. Вот была бы "Рука", то она на много упростила жизнь.
Рука будет.
Девайте рассмотрим Ваши предложенияecoins писал(а): ↑04.01.2021{, 21:34}Сформулирую и свои предложения:
1.Все важные параметры блоков должны устанавливаться как внешние входы блоков.
Например блок DS1820 должен иметь вход с номером пина, к которому он подсоединяется.
Номер UART Modbus, номера регистров ModBus и т.д.
Это позволит все параметры проекта определить в первой плате. которая по условию будет выполняться один раз.
Здесь же можно определить и удобные клеммы.
2.Было бы удобно, если бы с клеммы можно было бы не только считывать показания, но и писать туда (коли под неё уже определена переменная).
3.Было бы полезно включить в стандартные блоки простейший планировщик вызова плат-это повысило бы общую культуру распределения ресурсов контроллера в проектах. Даже в самых простых.
Пример некоторых автономных блоков прикладываю.
ПБ_Планирование задач.ubl
4.Отревизировать ПБ сенсоров и устройств, которые включены в состав FLProg. Почти все они"тормозные" из-за использования стандартных библиотек Arduino в которых широко используется оператор delay().
5.Отдельно провести ревизию наработок по протоколам и коммуникационным интерфейсам (в том числе и от избавления delay()) -UART,SPI,i2c,WiFi,NRF2401,ModBus,MQTT,CAN.
Работа не маленькая, но если её сделать командной, то можно добиться серьезных результатов в ограниченное время.
Я не только вижу, но и разработал целый набор блоков. В том числе для ds1820. Общий поход следующий - если номер пина (или адрес, например LCD.i2c) <0, то соответсвующий блок не выполняется.support писал(а): ↑04.01.2021{, 22:12}1. Входы служат для изменения параметров, которые можно менять в процессе исполнения программы. Я и так стараюсь для всех таких параметров предлагать варианты константы или входа. Задавать номер пина со входа для того же DS18B20 мне кажется плохая идея. Ведь объявляется данный датчик в секции Declare, ещё до начала работы программы, и честно говоря мне совсем не хочется анализировать схему, искать переменные которые связанны с данным входом, и как то из них выдёргивать значения для объявления данного датчика. Ну и потом - если это вход - значит значение на нём можно поменять и в процессе выполнения. И как Вы видите программную реализацию этого?
Единственно что может быть стоит сделать - в обзоре схемы создать новую ветку с использованными пинами контроллера с указанием блока где данный пин используется. Я над этим подумаю.
support писал(а): ↑04.01.2021{, 22:12}2. Для клемм в большинстве случаев не создается переменная (именно для экономии памяти они и были созданы). Переменная для клеммы создается только в том случае, если выход к которому она подключена не имеет своей переменной а значение на нём рассчитывается на лету. Например это блоки базовой логики и математика. Во всех остальных случаях клемма просто передает переменную привязанную к выходу блока к которому она подключена. А в неё пишет блок согласно своей логике, и записывать в неё что то ещё нельзя.
Приложенный блок (sheduler) автономный. компактный, быстрый и очень простой.
Вообще это вопрос только библиотек.
Про печальный опыт понятно... На это можно по разному смотреть... С большего временного кол-ва подобного и другого опыта смотрю на это сильно иначе.support писал(а): ↑04.01.2021{, 22:12}Насчёт команды - все сложнее. Я изучаю наработки пользователей, стараюсь их использовать по мере возможности. Но вот программист я один, и никакой команды именно программистов у меня нет. И вряд ли появится. Я не думаю что среди пользователей программы найдутся программисты на SmallTalk, да ещё и согласные бесплатно поработать. Я честно говоря и сам не хочу исходники публиковать....... Есть опыт во что это выливается. Люди разные бывают..... а потом кашу разгребать не хочется.
Я всё равно не понимаю разницы между заданием номера пина в первой плате которая выполняется один раз (ну то есть тот же самый декларе), и заданием непосредственно в блоке. А минусы вижу. В переменную надо писать цифру соответствующую номеру пина как цифрового, при этом самостоятельно контролировать что этот пин не занят. При выборе пина в блоке, пользователь видит название пина как он нарисован на плате.И при этом видит только те пины, которые может использовать в блоке. Смена контроллера то же обрабатывается, и если при смене контроллера у нового выбранного пина не будет, или он не будет соответствовать требованиям блока - он сбросится - блок станет некорректным, и при проверке проекта будут показаны все некорректные блоки с возможностью прямого перехода к ним.Ну и последующего повторного выбора необходимого. Вы же при смене платформы то же планируете менять пины ручками на первой плате. В новом редакторе блоков то же есть параметр - "Физический пин контроллера", с этими же функциями. Да пока не реализована функция работы с I2C и SPI, но в восьмой версии это будет реализовано. Как - я уже знаю, осталось только прописать в программе.ecoins писал(а): ↑04.01.2021{, 22:38}Я не только вижу, но и разработал целый набор блоков. В том числе для ds1820. Общий поход следующий - если номер пина (или адрес, например LCD.i2c) <0, то соответсвующий блок не выполняется.
Это позволяет грузить один и тот же проект на разные контроллеры с разными ресурсами и возможностями (например ESP8266 и ESP32).
Насчет возможности программно поменять значение в процессе проекта. Мы сразу сохраняем это значение при инициализации блока и в последствии значением этого входа не пользуемся.
Ну так и основное назначение ВХОДА ,Это изменение значения в процессе выполнения программы - а значит он обязан пересчитываться в каждом цикле. Ведь в каждом цикле происходит может произойти изменение. Только если на входе константа - тогда он не пересчитывается - а вставляется значение константы.
Считаем что нет..... Потому что если нужна переменная - то и создаем переменную. А клемма - это просто такая же линия соеденения между блоками как и на плате- только между платами. А создание переменной - это исключительный случай необходимый для компромиса между объёмом занимаемой памяти и реализацией некоторых блоков.
А вот для этого я и реализую сейчас в первую очередь онлайн хранилище пользовательских блоков, и пользовательских описаний контроллеров. Там будет система оценки, которая позволит которая позволит оценить качество блоков. Ну и естественно самые надёжные будут интегрироваться в программу в качестве базовых.ecoins писал(а): ↑04.01.2021{, 23:20}А вот дополнить проекты "правильными" библиотеками прозрачными для пользователей - мне представляется хорошей идеей.
Основная идея разрабатываемых нами библиотек - это программные прерывания (нужна задержка по времени-вышли из функции->через некоторое время(когда планировщик распорядился) сново проверили условия продолжения по времени или по тай-ауту и т.д.).
Аппаратные прерывания почти не используем, чтобы обеспечить совместимость с младшей моделью контроллеров AVR328. Один раз только в библиотеке HC-SR04, чтобы не ждать по времени обратного импульса.
Вообще я слежу за вашими разработками. И честно говоря - именно посматривая на Ваши блоки я затеялся с новым редактором. Ведь практически только у Вас существует определённая иерархия блоков . То есть планировщик (Если собирать ваши блоки в новом редакторе - от него можно будет отказатся - и его код будет вставляться всегда при использовании хоть одного инстанса) и дальше блоки которые работают под его управлением. Я примерно понимаю идеологию ваших блоков, и считаю ее оптимальной. Но.... у меня две руки, и 24 часа в сутках. И есть задачи которые имеют более высокий приоритет в основной идее проекта. Ведь проект все таки не среда разработки каких то законченных изделий идущая на пике современных решений. Нет. FLProg -это прежде всего образовательный проект дающий ОСНОВЫ промышленного програмирования. Всё остальное - если честно - побочный эффект. Я конечно понимаю что для многих побочный эффект стал основной целью. И поэтому и сделал и пользовательские блоки и редактор описания. И развиваю их. Но если честно - для меня важнее доработать скаду - что бы дать пользователям такие понятия как тренды, база данных, стандартные виджеты. ит.д. Потому как в промышленных системах управления HMI одно из важнейших направлений. Но как всегда - то что хочется сделать сейчас приходится откладывать)))) Как всегда компромис.ecoins писал(а): ↑04.01.2021{, 23:20}Это пожалуй почти первый случай, когда Вы конкретно отреагировали на наши предложения.
Возможно они Вами обычно воспринимаются как несвоевременными и несколько "туманными" (как и многими участниками форума).
Как результат - мы тратим усилия на обходные пути, достигаем поставленных целей. Но эти же усилия могли быть потрачены более рационально и более способствовать развитию FLProg. Продукт (и еще KaScada) который остается уникальным и по целому ряду свойств существенно лучше традиционных софта для ПЛК (те идеи заложены и почти и неизменны более 3-х десятилетий).
Да они есть, и есть отличные блоки на отличных библиотеках. Но все они сейчас размазанны по форуму, по интернету. И для того что бы что то найти и оценить их работу, если не следишь конкретно за этой темой, практически не реально. Вот я и хочу их собрать в одном месте, и иметь возможность отслеживать наиболее удачные, что бы модернизировать встроенные.