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

Переполнение

Добавлено: 28 авг 2019, 22:17
Rumatu
Здравствуйте. Сразу сообщу, что похожей темы не нашёл, поэтому создал новую. И ещё не пинайте, я ещё очень плохо в этом разбираюсь. Вообщем ставлю в flprog блок маштабирования, устанавливаю входную константу допустим 15, при этом на выходе устанавливаю константу 0. Ставлю вторую входную константу допустим 850, при этом на выходе устанавливаю константу 255. Всё казалось бы хорошо, но если вдруг минимальная входная константа 15 или максимальная входная константа 850 выходят за свои минимальные и максимальные пределы, то на выходе уже не ноль, а отрицательные значения и не 255, а к примеру 270. Физический вывод контроллера ведёт себя не адекватно. Как решить данную проблему?
Я так понимаю происходит переполнение.

Переполнение

Добавлено: 28 авг 2019, 22:21
dizzyy
введите проверку если число на входе меньше 15 , то переменная масштабирования равна 15, если равно больше 15 и равно меньше 850 то равно поточному значению , ну и если больше 850 , то принять равно 850..
[spoiler]
Безымянный.jpg
[/spoiler]

Переполнение

Добавлено: 28 авг 2019, 23:23
rw6cm
[ref]Rumatu[/ref],
для Rumatu.flp

Переполнение

Добавлено: 28 авг 2019, 23:51
Labu559
Rumatu писал(а): 28 авг 2019, 22:17 но если вдруг минимальная входная константа 15 или максимальная входная константа 850 выходят за свои минимальные и максимальные пределы
[spoiler title=... или можно применить блок нелинейного масштабирования ]
Rumatu.png
Rumatu.flp
[/spoiler]

Переполнение

Добавлено: 01 сен 2019, 18:30
Rumatu
Спасибо всем большое. Буду пробовать. Блок не линейного маштабирования я использовал, всё работает когда используешь константы, но когда используешь крайние точки константами, а "почти" крайние ставишь по входу, этот блок всё равно вылазит за мин. и макс. пределы. Какой то этот блок немного не до конца правильно работает.

Переполнение

Добавлено: 01 сен 2019, 21:18
Dryundel
Rumatu писал(а): 01 сен 2019, 18:30 Спасибо всем большое. Буду пробовать. Блок не линейного маштабирования я использовал, всё работает когда используешь константы, но когда используешь крайние точки константами, а "почти" крайние ставишь по входу, этот блок всё равно вылазит за мин. и макс. пределы. Какой то этот блок немного не до конца правильно работает.
Правильно он работает. Вот только нет в этом блоке понятия "крайние значения" Какие значения прописали, те и считает.
Он рассчитывает промежутки между значениями линейно.
А вот если входное значение превысило все известные ему предустановки тогда и свистопляску получаете.
Поставьте к примеру еще значения "далеко за крайние" такие, до которых входное гарантировано не дойдет, тогда и работать будет правильно.
А проще просто ограничить входное значение, на то есть стандартный блок LIMIT

Переполнение

Добавлено: 01 сен 2019, 22:02
Rumatu
Так я так и ставил "далеко за крайние", вот каким то образом не видит блок этих "крайних" значений когда дополнительно используешь ещё и входы, как я писал выше. А так спасибо за подсказку о блоке Limit.