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

Различные вопросы по программе не входящие в другие рубрики
Ответить
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

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

Недавно появилась функция/кнопочка "Порядок компиляции блоков".
Настоятельно рекомендую пользоваться!!!
Примеры нежданчиков:
[spoiler]
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
[/spoiler]
Не ленитесь проверять, что-бы потом не чесать репу - чего? где? почему??? :)

Счётчики в старых версиях.
Иногда подкидывали, вначале, такие заморочки, что пришлось сделать себе ПБ.
Речь о сбросе при достижении какого-то значения. Использовали переменную на выходе достижения, отправляли на вход сброса.
[spoiler=Пример:]
screenshot_19-03-13_12-01-09.png
[/spoiler]
А теперь давайте дополним проект до такого вида:
[spoiler]
screenshot_19-03-13_12-03-56.png
[/spoiler]
Сам проект для теста:
Проверка счётчика по старому v_01.flp
А теперь видео:
https://youtu.be/-U6vg6VJo3Y
Веселуха, не правда-ли?
На дисплее от 0 до 9, а светодиод по компаратору на 10 срабатывает!!!
Это иногда очень большие заморочки приносило- при работе с памятью и массивами, т.к. пытается прочитать, а ещё хуже записать в то место, которое не его, там другие данные !!!
В новых версиях есть расширенные настройки, пользуйтесь ими, откажитесь от внешних связей выхода переполнения и входа сброс, и не будет таких сюрпризов.
Переходите на последние версии программы.
P.S.
В личных сообщениях упрекнули, что не прав. :)
Контрольный выстрел:
screenshot_19-03-13_15-17-01.png
Проверка счётчика по старому с массивом v_02.flp
Как вы думаете, какая будет сумма массива после 100500 циклов?
Ответ[spoiler=Ответ, но сначала подумайте]:https://youtu.be/TbjnMXF3ka0[/spoiler]
В ячейку 0, ноль, никогда ничего не запишется!
Её проскакивает, т.е. после фронта импульса на выходе на выходе или 10, или 1 :)
Всё дело в том, что переход выхода счётчика в 0 произойдёт в следующем цикле, когда переменная сброс доберётся до входа счётчика. Но в этот момент фронта на входе уже не будет....
Новый счётчик с внутренним сбросом без этих "фишек", там на выходе значение, полученное после обработки всех входных сигналов и превышений выходных значений.
Вот так вот бывает...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

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

Отправлено спустя 17 минут 26 секунд:
Есть на форуме блок секундных импульсов - но он на прерываниях, в данном случае излишне, но для теста - оно.
Для остального - свой блок, без прерываний в несколько строк.
Поэтому используйте или часы, 3231, или вот так :)
В начале опишу, что к чему
Первая строчка - время с часов реального времени, 3231.
Вторая - при запуске считывает время с 3231, далее считает сам.
Видео:https://youtu.be/FySzTVRs0fc
Когда время останавливается - это имитация не работы блока, но он потом наверстает.
Блок выдаёт 1 на каждый цикл по прошествии 1 секунды с начала работы мк.
Если по каким-то причинам он не работал, он будет выдавать 1 столько циклов, сколько секунд, 1000мс, прошло с начала работы мк :)
Проект:
Проверка генератора v_01.flp
Видео начало работы:https://youtu.be/XaHXSICag-I
Видео работы после отключения останова, отпускания "тормозов"https://youtu.be/5Wd_9AdQM_A
Как видно, милисекунды не идеальные, но коррекцией 1000 +-1,2, 3... в блоке можно подстроить под текущий кварц на плате
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

Счётчик, новый.
И всё-таки в нём достаточно недомолвок, на мой скромный взгляд.
Пока только о типе данных integer, -32768....32767.
Например, решил пользователь создать реверсивный счётчик, круговой так сказать, 0...100.
И это будет весьма специфически выглядеть, неожиданно :)
[spoiler]
счётчик реверс 01.png
[/spoiler]
Вот если немного изменить текст в блоке:
"При достижении верхней границы" на "Если более"
кстати, этому тогда и будет соответствовать символ ">L" на выходе"Установить в единицу выход" блока,
и заменить в коде
if(_count2_Value >= 11) {_count2_Value = 0;}
">=" на просто ">" тогда настройка счётчика "сверху" будет правдоподобной.
То-же касается "Если менее".
[spoiler]
счётчик реверс вверх 02.png
[/spoiler]
Ко всему прочему, при настройках из первой картинки, но замене обоих "установить текущее..." на две галочки "остановить" счёт, получим диапазон другой, -1...101 :)
[spoiler]
счётчик останов 03.png
[/spoiler]
Сложности при такой замене в коде возникают при крайних значениях и при применении типа unsigned,ведь число такого типа не может быть меньше нуля.
И это уже совсем другая история, :smile37: ....
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение 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, и вуаля!
Проверено, работает.
[spoiler]
screenshot_19-12-25_16-10-19.png
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

и вдруг всё-таки не хватит )
Надеюсь, пригодится.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

Обновил пост.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Rodgerask
Сержант
Сообщения: 141
Зарегистрирован: 09 дек 2019, 14:31
Имя: del

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

Сообщение Rodgerask »

//del
Последний раз редактировалось Rodgerask 13 фев 2020, 00:20, всего редактировалось 1 раз.
Аватара пользователя
bsn
Лейтенант
Сообщения: 414
Зарегистрирован: 22 июл 2018, 07:24
Откуда: Новошахтинск
Имя: Сергей
Благодарил (а): 105 раз
Поблагодарили: 23 раза

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

Сообщение bsn »

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

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

Сообщение Goosr »

А support тут причем?
И причем недостатки? Процессор выполняет код быстро но последовательно, циклами. Нам со стороны кажется что это происходит мгновенно, но это не так. Если какой-то элемент включиться в середине, то сначала будет оказано влияние на нижнюю часть программы и только потом на верхнюю.
Я использую задержки для прохождения сигнала когда необходимо а не пытаюсь расставить блоки в последовательности.
FLProg 6.3.1 - 7.3.4 - Linux
SSSergeich
Капитан
Сообщения: 708
Зарегистрирован: 06 фев 2016, 11:01
Откуда: Ярославль
Имя: Сергей

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

Сообщение SSSergeich »

Rodgerask писал(а): 25 дек 2019, 22:33 и что же теперь делать?

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

Вернуться в «Прочие вопросы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей