Здравствуйте. Сразу сообщу, что похожей темы не нашёл, поэтому создал новую. И ещё не пинайте, я ещё очень плохо в этом разбираюсь. Вообщем ставлю в flprog блок маштабирования, устанавливаю входную константу допустим 15, при этом на выходе устанавливаю константу 0. Ставлю вторую входную константу допустим 850, при этом на выходе устанавливаю константу 255. Всё казалось бы хорошо, но если вдруг минимальная входная константа 15 или максимальная входная константа 850 выходят за свои минимальные и максимальные пределы, то на выходе уже не ноль, а отрицательные значения и не 255, а к примеру 270. Физический вывод контроллера ведёт себя не адекватно. Как решить данную проблему?
Я так понимаю происходит переполнение.
Переполнение
Переполнение
введите проверку если число на входе меньше 15 , то переменная масштабирования равна 15, если равно больше 15 и равно меньше 850 то равно поточному значению , ну и если больше 850 , то принять равно 850..
[spoiler] [/spoiler]
[spoiler] [/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
Переполнение
[ref]Rumatu[/ref],
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
Переполнение
[spoiler title=... или можно применить блок нелинейного масштабирования ] [/spoiler]Rumatu писал(а): 28 авг 2019, 22:17 но если вдруг минимальная входная константа 15 или максимальная входная константа 850 выходят за свои минимальные и максимальные пределы
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Переполнение
Спасибо всем большое. Буду пробовать. Блок не линейного маштабирования я использовал, всё работает когда используешь константы, но когда используешь крайние точки константами, а "почти" крайние ставишь по входу, этот блок всё равно вылазит за мин. и макс. пределы. Какой то этот блок немного не до конца правильно работает.
- Dryundel
- Полковник
- Сообщения: 2449
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 6 раз
- Поблагодарили: 31 раз
Переполнение
Правильно он работает. Вот только нет в этом блоке понятия "крайние значения" Какие значения прописали, те и считает.Rumatu писал(а): 01 сен 2019, 18:30 Спасибо всем большое. Буду пробовать. Блок не линейного маштабирования я использовал, всё работает когда используешь константы, но когда используешь крайние точки константами, а "почти" крайние ставишь по входу, этот блок всё равно вылазит за мин. и макс. пределы. Какой то этот блок немного не до конца правильно работает.
Он рассчитывает промежутки между значениями линейно.
А вот если входное значение превысило все известные ему предустановки тогда и свистопляску получаете.
Поставьте к примеру еще значения "далеко за крайние" такие, до которых входное гарантировано не дойдет, тогда и работать будет правильно.
А проще просто ограничить входное значение, на то есть стандартный блок LIMIT
Переполнение
Так я так и ставил "далеко за крайние", вот каким то образом не видит блок этих "крайних" значений когда дополнительно используешь ещё и входы, как я писал выше. А так спасибо за подсказку о блоке Limit.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя