Выполнение кода платы по условию

На этом форуме Вы можете задать вопросы знатокам программы и автору.
vovka1973
Майор
Сообщения: 1060
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 42
Откуда: kazahstan

Выполнение кода платы по условию

#21

Сообщение vovka1973 » 11.05.2017{, 13:11}

support писал(а):Проектик можно увидеть?
Я с телефона на компе нет интернета,пока так у меня продублировал смену переменной вне платы и внутри платы так работает.
Так .получается в не платы надо переменную менять чтобы в цикл вошел ,а из платы с циклом менять переменную что бы выйти ,фух вроде разобрался.
Последний раз редактировалось vovka1973 11.05.2017{, 15:51}, всего редактировалось 1 раз.
Изображение

Аватара пользователя
DrMario
Лейтенант
Сообщения: 371
Зарегистрирован: 07.11.2016{, 13:11}
Репутация: 58
Откуда: Камень-на-Оби
Имя: Евгений
Контактная информация:

Выполнение кода платы по условию

#22

Сообщение DrMario » 12.05.2017{, 11:02}

vovka1973 писал(а):Это если выбрал выполнение по условию ,а если выбрать выполнять в цикле пока -как потом выйти из этого цикла уже голову сломал
Посмотрите повнимательнее мой пример.
Изначально работает программа первой платы, с которой можно включать другие фрагменты (платы).
Если на первой плате на вход Sel подать 2, то будет выполнятся фрагмент кода третьей платы (Режим 2), а плата 2 (Режим 1) будет бездействовать. Все это буде выполнятся, пока переменная Режим 2 не станет false. Точнее когда на вход En переменной Режим 2 не поступит уровень лог. 1.
Для примера я поставил таймер на 20 сек. в данном примере. Уже в самой плате Режим 2 можно по команде или как в примере отключать выполнение кода. После отключения будет снова исполнятся только плата 1.
Последний раз редактировалось DrMario 12.05.2017{, 11:06}, всего редактировалось 1 раз.

CraCk
Лейтенант
Сообщения: 632
Зарегистрирован: 10.09.2015{, 21:51}
Репутация: 10

Выполнение кода платы по условию

#23

Сообщение CraCk » 13.06.2017{, 23:49}

В первые решил использовать функцию Выполнение по условию. Но безрезультатно. Если на плате 2 не использую условия то все работает. Отладочный пин13 моргает при приеме данных. А если включить по условию тогда пин13 все время горит.

Добавлено (13.06.2017, 23:49)
---------------------------------------------
Понимаю что виной есть пол.блок. Но все же как решить проблему?
Вложения
server_mod_13.0.flp
(1.36 МБ) 54 скачивания

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Выполнение кода платы по условию

#24

Сообщение pan » 14.06.2017{, 00:10}

в описании блока сказано:
- new_reception_data - импульс сигнализирующий о приеме новых данных.
я так понимаю импульс длится один цикл.
следовательно плата номер 2 выполняется 1 цикл влючив светодиод и больше не выключает его.
хотя по идее при id =3 она тоже должна обрабатываться и тушить его.
могу ошибаться.

выведите переменные sender_id и new_data_from_ID2 в ком порт и гляньте чё там.
Последний раз редактировалось pan 14.06.2017{, 00:10}, всего редактировалось 1 раз.

Аватара пользователя
Oleg_UA
Сержант
Сообщения: 115
Зарегистрирован: 07.01.2017{, 23:30}
Репутация: 6
Откуда: Днепр
Имя: Олег

Выполнение кода платы по условию

#25

Сообщение Oleg_UA » 14.06.2017{, 00:32}

CraCk писал(а):А если включить по условию тогда пин13 все время горит.
Добавьте плату перед второй для сброса значений на следующем цикле

Или добавьте плату с инверсным условием
new_reception_data не равно

можно без условия сделать или прямо в ПБ выходы добавить
Вложения
server_mod_13.1.flp
(1.36 МБ) 62 скачивания
8508587.flp
(1.37 МБ) 60 скачиваний
2793727.jpg
Последний раз редактировалось Oleg_UA 14.06.2017{, 02:40}, всего редактировалось 1 раз.

CraCk
Лейтенант
Сообщения: 632
Зарегистрирован: 10.09.2015{, 21:51}
Репутация: 10

Выполнение кода платы по условию

#26

Сообщение CraCk » 14.06.2017{, 22:27}

Oleg_UA писал(а):Добавьте плату перед второй для сброса значений на следующем цикле
Добавил, заработало. Думаю на этом варианте и остановлюсь. Другие варианты без условия будет нагружать контролер при добавление новых клиентов.  БП большой получится.
Oleg_UA писал(а):Или добавьте плату с инверсным условиемnew_reception_data не равно
Тоже работает но код большой получится.
Только почему все так извращенно получается? Из за одного импульса в цикле?

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Выполнение кода платы по условию

#27

Сообщение pan » 14.06.2017{, 22:49}

потому что плата 1 цикл только обрабатывается. потом в ней ни чего не происходит
Последний раз редактировалось pan 14.06.2017{, 22:56}, всего редактировалось 1 раз.

Аватара пользователя
Oleg_UA
Сержант
Сообщения: 115
Зарегистрирован: 07.01.2017{, 23:30}
Репутация: 6
Откуда: Днепр
Имя: Олег

Выполнение кода платы по условию

#28

Сообщение Oleg_UA » 14.06.2017{, 23:28}

CraCk писал(а):Тоже работает но код большой получится.
Если править БП то эта операция займёт всего две строчки кода и один выход для каждого клиента, да и переменных меньше будет.

Если Вы не знакомы с Си, попробуйте вариант с изменённым блоком что выложил выше Проект, подойдёт такое решение - опишу где что нужно будет добавить.

Гость

Выполнение кода платы по условию

#29

Сообщение Гость » 15.06.2017{, 14:17}

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

ProTV
Рядовой
Сообщения: 11
Зарегистрирован: 13.09.2017{, 08:59}
Репутация: 0

Выполнение кода платы по условию

#30

Сообщение ProTV » 16.10.2017{, 10:41}

Подскажите где ошибка?
ИзображениеИзображение

Задача, по нажатию кнопок выполнять свою плату (измерение и вывод на экран результата). Условием для выполнения платы, задал переменную, состояние переменной задаётся счётчиком от кнопок переключения. Но не работает, при старте главный экран, на кнопки не реагирует.

Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 38
Откуда: Коломна
Имя: Станислав
Контактная информация:

Выполнение кода платы по условию

#31

Сообщение Boroda » 16.10.2017{, 11:03}

ProTV, кнопки на +5 или на землю? Если на землю, то инверсию на LEFT и Right поставьте и подтяжку включите.

ProTV
Рядовой
Сообщения: 11
Зарегистрирован: 13.09.2017{, 08:59}
Репутация: 0

Выполнение кода платы по условию

#32

Сообщение ProTV » 16.10.2017{, 13:10}

Boroda писал(а):ProTV, кнопки на +5 или на землю? Если на землю, то инверсию на LEFT и Right поставьте и подтяжку включите.
Кнопки через резисторы 36кОм подтянуты на общий провод, замыкают на источник питания. То есть при нажатии высокий уровень.

Добавлено (16.10.2017, 13:10)
---------------------------------------------
Решил начать с простого :).
Добился корректного переключения, но дисплей при переключениях не отчищается (в его памяти остаётся предидущее значение).
ИзображениеИзображение

Аватара пользователя
Dev1
Майор
Сообщения: 1026
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 59
Откуда: Гондурас

Выполнение кода платы по условию

#33

Сообщение Dev1 » 16.10.2017{, 15:15}

Попробуйте привязаться на платах переменные условий к EN дисплея. Надеюсь понятно объяснил...
Последний раз редактировалось Dev1 16.10.2017{, 15:21}, всего редактировалось 1 раз.
Win10-64 FLProg v7.5.2 Portable :fie:

ProTV
Рядовой
Сообщения: 11
Зарегистрирован: 13.09.2017{, 08:59}
Репутация: 0

Выполнение кода платы по условию

#34

Сообщение ProTV » 16.10.2017{, 19:20}

Dev1 писал(а):Попробуйте привязаться на платах переменные условий к EN дисплея. Надеюсь понятно объяснил...
Не помогает, при переключении новый текст налаживается на старый. При переключении экрана, нужно похоже делать lcd.clear();
. Ещё вычитал, что для тех ячеек экрана которые не перезаписываются при смене данных, можно прописывать пробелы.
Последний раз редактировалось ProTV 16.10.2017{, 19:34}, всего редактировалось 1 раз.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Выполнение кода платы по условию

#35

Сообщение pan » 16.10.2017{, 20:54}

ProTV писал(а):нужно похоже делать lcd.clear()
 естественно.
ProTV писал(а):для тех ячеек экрана которые не перезаписываются при смене данных, можно прописывать пробелы.
ну или так.

еще можно можно на 1 и 2 плате поставить вначале блоки с пустым входом D (выполнив его одноктратно например через триггер) тем самым очистится дисплей и тут же напишет то что надо

ProTV
Рядовой
Сообщения: 11
Зарегистрирован: 13.09.2017{, 08:59}
Репутация: 0

Выполнение кода платы по условию

#36

Сообщение ProTV » 16.10.2017{, 21:11}

pan писал(а):еще можно можно на 1 и 2 плате поставить вначале блоки с пустым входом D (выполнив его одноктратно например через триггер) тем самым очистится дисплей и тут же напишет то что надо
Если правильно понимаю, то код из платы выполняется сверху-вниз, слева на право?

Аватара пользователя
Alias
Лейтенант
Сообщения: 481
Зарегистрирован: 27.11.2017{, 13:15}
Репутация: 36
Откуда: Rus44
Имя: Michael
Контактная информация:

Выполнение кода платы по условию

#37

Сообщение Alias » 03.08.2018{, 12:16}

Не так давно я уже жаловался, что при работе с шаговым двигателем в моем проекте возникали тормоза. Выход нашел в использовании условия выполнения платы "Выполнять в цикле пока".
Работает. Но только один раз. То есть плата по условию отработала, вышла из цикла, передав управление основному коду.
Однако, если плате снова передать управление, все зависает - не стартует блок шагового двигателя и плата работает в цикле.
Можно создать несколько плат с идентичными блоками, сколько раз в проекте двигатель должен отработать. Но это не выход. Что я делаю не так? Или это баг программы или блока ШД?
Если использовать блок шагового двигателя на плате без цикла, он всегда стартует нормально, правда, очень медленно работает.
Вложения
Q.flp
(105.61 КБ) 45 скачиваний

Ответить

Вернуться в «Спросить у знатоков»