Счётчик

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

Счётчик

Сообщение Sancho »

Уважаемые форумчане и гости.
Хочу обратить Ваше внимание на небольшой ньюанс при работе счетчика в режиме присутствия входа сброс и выхода Достижение установленного значения.
Очень часто применяется промежуточная булевская переменная для счёта "по кругу" - цепляется к двух вышеописанным выводам.
При этом на один цикл проскакивает значение, которое мы ждём или не ждём...
Это выражается вот в чём: в блоке стоит символ больше >, что подразумевает одно, а в коде >=, что немного другое...
Также, вход сброса, так как он на схеме стоит в начале, обрабатывается позже вывода результатов сравнения,
т.е. значение, которое мы указали в натройках блока "достижение ус...." будет на выходе всего один цикл.
Иногда это приводит к негативным моментам. У меня при записи в память номер блока иногда "съезжал" не туда...
Просто учитывайте это в своих проектах.
Под спойлером на плате 1 счётчик из "подручных" блоков, на 2-й - стандартный счётчик. Обратите внимание на последние строки, gtv9 - bool сброс.
[spoiler]

Код: Выделить всё

//Плата:1
if (_gtv8) { if (_trgrt1I) { _trgrt1 = 0;} else {_trgrt1 = 1; _trgrt1I = 1;} } else {_trgrt1 = 0; _trgrt1I = 0;}; 
 if (_trgrt1) {
_gtv7 = (_gtv7)+(1);
}
if ((_gtv7) > (7654)) {
_gtv7 = 0;
}

//Плата:2

if (_gtv8) 
   { 
   if (! _count1I)  
      {
       _count1P = _count1P+1;
       _count1I = 1;
      }
   }
else
   {
   _count1I=0;
   }
if (_gtv9) _count1P = 0;
_gtv9 =  _count1P  >=  7654;
_gtv10 = _count1P;
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
golowa70
Сержант
Сообщения: 195
Зарегистрирован: 20 фев 2016, 00:05

Счётчик

Сообщение golowa70 »

К стати у меня в версии 3. 0.3 в счётчике не получается присоединиться к входу сброса. Хотя в версии 2.5 работал без проблем. Просто когда тянешь линию от другого блока, она не присоединяется. Это только у меня так или ещё у кого наблюдается такая особенность?
Аватара пользователя
garry
Сержант
Сообщения: 101
Зарегистрирован: 22 янв 2016, 11:20

Счётчик

Сообщение garry »

Соединяйте через переменную
golowa70
Сержант
Сообщения: 195
Зарегистрирован: 20 фев 2016, 00:05

Счётчик

Сообщение golowa70 »

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

Счётчик

Сообщение Sancho »

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

Отправлено спустя 14 минут 20 секунд:
Если-бы в коде немного изменить - вопрос бы снялся:
[spoiler]

Код: Выделить всё

// это 
if (reset) _count1P = 0;
reset =  _count1P  >=  maksimum ;
out = _count1P;

// На это
if (reset || (_count1P  >  maksimum) ) _count1P = 0;
out = _count1P;

//Или так
_count1_res =  _count1P  > maksimum ; // _count1_res bool переменная счётчика, если необходима как выход
if (reset || _count1_res ) _count1P = 0;
out = _count1P;
[/spoiler]
Счёт бы шёл от 0 до максимума включительно.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Счётчик

Сообщение Sancho »

Автор на форуме - ждёмс!!!!! :yahoo:
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Goosr
Сержант
Сообщения: 184
Зарегистрирован: 07 июн 2016, 08:25
Откуда: Тольятти
Имя: Дмитрий

Счётчик

Сообщение Goosr »

По мне так счетчик должен выдавать сигнал по значению = а не >. Допустим считаем в низ до 0, но т.к. счетчик обрабатывает > то с него постоянно будет идти сигнал на выход.
FLProg 6.3.1 - 7.3.4 - Linux
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Счётчик

Сообщение Sancho »

Goosr писал(а): 19 июн 2018, 08:13По мне так счетчик должен выдавать сигнал по значению = а не >. Допустим считаем в низ до 0, но т.к. счетчик обрабатывает > то с него постоянно будет идти сигнал на выход.
Это всё можно поменять на равно, сделать два условия, отслеживающие направление счёта...
Вопрос в том, что в существующем варианте счётчик, в режиме внешней переменной bool "сброс" на входе/выходе, т.е. счёт по кругу, выдаёт true на один цикл при значении, которое мы установили как "Достижение установленного значения", при этом на картинке блока обозначенный как >L, т.е. больше.
При этом, на выходе V это значение также появится, но на один цикл, пока в следующем не сбросится. Такой вот нежданчик.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Ответить

Вернуться в «Встроенные блоки»

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

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