Страница 1 из 1

Фишки и не только FLProg

Добавлено: 13.03.2019{, 11:43}
Sancho
Решил собрать в одном месте все замеченные "фишки-подвохи" и не только нашей программы.
Заранее зарезервирую пару постов в начале, вдруг не влезет :) или по темам разбить.
Посты будут обновляться по мере писанины )
Начну, пожалуй.
Участники экспериментов: про-мини(вместо протёртой нано), дисплей по I2C(адрес 3F), массовка.

Недавно появилась функция/кнопочка "Порядок компиляции блоков".
Настоятельно рекомендую пользоваться!!!
Примеры нежданчиков:
СпойлерПоказать
screenshot_19-03-13_11-51-53.png
screenshot_19-03-13_11-52-10.png
screenshot_19-03-13_11-52-47.png
Очерёдность_01.png
2018-05-08_14-30-52.png
2018-05-08_14-30-52.png (8.78 КБ) 2363 просмотра
Не ленитесь проверять, что-бы потом не чесать репу - чего? где? почему??? :)

Счётчики в старых версиях.
Иногда подкидывали, вначале, такие заморочки, что пришлось сделать себе ПБ.
Речь о сбросе при достижении какого-то значения. Использовали переменную на выходе достижения, отправляли на вход сброса.
Пример:Показать
screenshot_19-03-13_12-01-09.png
screenshot_19-03-13_12-01-09.png (3.06 КБ) 2363 просмотра
А теперь давайте дополним проект до такого вида:
СпойлерПоказать
screenshot_19-03-13_12-03-56.png
screenshot_19-03-13_12-03-56.png (7.81 КБ) 2363 просмотра
Сам проект для теста: А теперь видео:

Веселуха, не правда-ли?
На дисплее от 0 до 9, а светодиод по компаратору на 10 срабатывает!!!
Это иногда очень большие заморочки приносило- при работе с памятью и массивами, т.к. пытается прочитать, а ещё хуже записать в то место, которое не его, там другие данные !!!
В новых версиях есть расширенные настройки, пользуйтесь ими, откажитесь от внешних связей выхода переполнения и входа сброс, и не будет таких сюрпризов.
Переходите на последние версии программы.
P.S.
В личных сообщениях упрекнули, что не прав. :)
Контрольный выстрел:
screenshot_19-03-13_15-17-01.png
screenshot_19-03-13_15-17-01.png (9.9 КБ) 2313 просмотров
Как вы думаете, какая будет сумма массива после 100500 циклов?
Ответ
Ответ, но сначала подумайтеПоказать
:
В ячейку 0, ноль, никогда ничего не запишется!
Её проскакивает, т.е. после фронта импульса на выходе на выходе или 10, или 1 :)
Всё дело в том, что переход выхода счётчика в 0 произойдёт в следующем цикле, когда переменная сброс доберётся до входа счётчика. Но в этот момент фронта на входе уже не будет....
Новый счётчик с внутренним сбросом без этих "фишек", там на выходе значение, полученное после обработки всех входных сигналов и превышений выходных значений.
Вот так вот бывает...

Фишки и не только FLProg

Добавлено: 13.03.2019{, 11:43}
Sancho
Использование встроенного генератора для подсчёта времени
Использование генератора в таком формате некорректно и неправильно.
Уже писал о принципе работы:
Sancho писал(а):
16.01.2019{, 14:38}
Anydy писал(а):
16.01.2019{, 11:13}
Блок дисплея тормозит
Он не тормозит. Он вносит свою задержку в время цикла.
Генератор работает примерно так, полу-период 500.
Замеряем время текущее, к примеру 10000, это "старое время". В каждом цикле проверяем: текущее - старое >500?
Если да, то старое = текущее +500, инертируем выход.
И т.д.
И когда генератор сравнивает время с предыдущего замера, а там дисплей или ещё чего, то прошло уже не 500, а 505, 520, 595... - но ему пофиг, условие выполнено.
Вот так и набегают лишние секунды.

Отправлено спустя 17 минут 26 секунд:
Есть на форуме блок секундных импульсов - но он на прерываниях, в данном случае излишне, но для теста - оно.
Для остального - свой блок, без прерываний в несколько строк.
Поэтому используйте или часы, 3231, или вот так :)
В начале опишу, что к чему
Первая строчка - время с часов реального времени, 3231.
Вторая - при запуске считывает время с 3231, далее считает сам.
Видео:
Когда время останавливается - это имитация не работы блока, но он потом наверстает.
Блок выдаёт 1 на каждый цикл по прошествии 1 секунды с начала работы мк.
Если по каким-то причинам он не работал, он будет выдавать 1 столько циклов, сколько секунд, 1000мс, прошло с начала работы мк :)
Проект:
Проверка генератора v_01.flp
(180.75 КБ) 62 скачивания
Видео начало работы:
Видео работы после отключения останова, отпускания "тормозов"
Как видно, милисекунды не идеальные, но коррекцией 1000 +-1,2, 3... в блоке можно подстроить под текущий кварц на плате

Фишки и не только FLProg

Добавлено: 13.03.2019{, 11:43}
Sancho
Счётчик, новый.
И всё-таки в нём достаточно недомолвок, на мой скромный взгляд.
Пока только о типе данных integer, -32768....32767.
Например, решил пользователь создать реверсивный счётчик, круговой так сказать, 0...100.
И это будет весьма специфически выглядеть, неожиданно :)
СпойлерПоказать
счётчик реверс 01.png
Вот если немного изменить текст в блоке:
"При достижении верхней границы" на "Если более"
кстати, этому тогда и будет соответствовать символ ">L" на выходе"Установить в единицу выход" блока,
и заменить в коде
if(_count2_Value >= 11) {_count2_Value = 0;}
">=" на просто ">" тогда настройка счётчика "сверху" будет правдоподобной.
То-же касается "Если менее".
СпойлерПоказать
счётчик реверс вверх 02.png
счётчик реверс вверх 02.png (8.19 КБ) 2171 просмотр
Ко всему прочему, при настройках из первой картинки, но замене обоих "установить текущее..." на две галочки "остановить" счёт, получим диапазон другой, -1...101 :)
СпойлерПоказать
счётчик останов 03.png
Сложности при такой замене в коде возникают при крайних значениях и при применении типа unsigned,ведь число такого типа не может быть меньше нуля.
И это уже совсем другая история, :smile37: ....

Фишки и не только FLProg

Добавлено: 13.03.2019{, 11:44}
Sancho
Использование новой функции (начиная с 6.0)
"KaScada Cloud" без каскады
напрямую с вашим сервером или скада

Иногда есть такие моменты, когда понимаешь - это почти то, что нужно, но не совсем.
Когда я разобрался с режимом в FLProg работа с каскадой через облако, меня посетила мысль - а почему бы мне не отправлять всё это на мою скада систему сразу?
Речь идёт о том, что Ваше внешнее устройство на ESP или W5100 имеет выход в интернет, а дома есть внешний, белый, IP адрес и скада на Win. Настройка DDNS много где описана, тындекс в помощь.
Что остаётся сделать?
  • 1. Прописать в устройстве Ваш URL(от DDNS) и порт, например 50001.(немного изменить в IDE _KaScadaCloudIpAddres на свой...)
  • 2. В роутере сделать проброс порта на Ваш комп.
  • 3. Теперь самое главное. Так как Ваша софтина (скада или ОРС сервер) является мастером ModBus, клиентом по отношению к источнику информации, серверу, то она сама опрашивает слэйвы, т.е. ей необходимо знать IP Вашего устройства. Однако оно расположено где-то в недрах серых IP адресов, куда нормально не достучишься. Но используя новую фишку FLProg, работа с облаком, мы заставляем самого слэйва выходить к нам на связь, т.е. он в какой-то момент сам становится клиентом.
    Главное - соединить два клиента, как два джека 6,3мм... Нужен двух-сторонний сервер.
  • 4. И он есть! Качаем, ставим. Настраиваем с одной стороны сервером с номером порта 50001.С другой стороны тоже сервером, но номер порта 50002(тоже для примера), запускаем.
  • 5. Настраиваем скаду/ОРС сервер на второй порт, 50002, и вуаля!
Проверено, работает.
СпойлерПоказать
screenshot_19-12-25_16-10-19.png

Фишки и не только FLProg

Добавлено: 13.03.2019{, 11:44}
Sancho
и вдруг всё-таки не хватит )
Надеюсь, пригодится.

Фишки и не только FLProg

Добавлено: 25.12.2019{, 15:56}
Sancho
Обновил пост.

Фишки и не только FLProg

Добавлено: 25.12.2019{, 22:33}
Rodgerask
//del

Фишки и не только FLProg

Добавлено: 26.12.2019{, 08:54}
bsn
Rodgerask писал(а):
25.12.2019{, 22:33}
support вообще в курсе всего этого?
.....но шеф говорит - плывем до штиля)))))
Таким тоном обычно общаются с продавцом, который продал вам нечто. Но потом, когда вы уже заплатили за это свои кровные денежки, вдруг выяснилось, что товар (услуга) оказались не самого высокого качества.
Здесь же совершенно иная ситуация.
Автор, разработчик программы, совершенно БЕСПЛАТНО предоставляет во всеобщее пользование результаты своего труда. Он не раз упоминал о постоянной нехватке времени, о частой работе в режиме цейтнота и т.д. Он регулярно просит помощи у форумчан в тестировании новых версий.
Кто может, помогают, тестируют, находят баги, предлагают свои варианты по улучшению. Что и сделал выше, уважаемый Sancho.
Уже много лет многие специалисты используют в своих разработках программу FLProg.
Некоторые, из уже применивших в своих разработках FLProg, добровольно, по возможности, иногда оказывают финансовую поддержку Автору.
А вот стоять в сторонке и подкалывать автора сарказмами типа: "шеф говорит - плывем до штиля)))))" уже выглядит некрасиво.
"Кто везёт, того и понукают".
Негоже относиться, к всеми уважаемому Автору, таким образом.

Фишки и не только FLProg

Добавлено: 26.12.2019{, 08:59}
Goosr
А support тут причем?
И причем недостатки? Процессор выполняет код быстро но последовательно, циклами. Нам со стороны кажется что это происходит мгновенно, но это не так. Если какой-то элемент включиться в середине, то сначала будет оказано влияние на нижнюю часть программы и только потом на верхнюю.
Я использую задержки для прохождения сигнала когда необходимо а не пытаюсь расставить блоки в последовательности.

Фишки и не только FLProg

Добавлено: 26.12.2019{, 23:54}
SSSergeich
Rodgerask писал(а):
25.12.2019{, 22:33}
и что же теперь делать?

support вообще в курсе всего этого?
Пару раз налетел, что блоки не исполняются, переменные не присваиваются... далее вместо ослика лсд2004, на него вывод исполняемой платы в данный момент и переменные... Визуально видишь что происходит.
А еще, был случай, Sancho, по телефону залипавшую кнопку диагностировал)) а я на код грешил.. :smile198: