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

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
Rumatu
Рядовой
Сообщения: 3
Зарегистрирован: 23.08.2019{, 08:03}
Репутация: 0
Имя: Андрей

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

#1

Сообщение Rumatu » 28.08.2019{, 22:17}

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

Аватара пользователя
dizzyy
Капитан
Сообщения: 752
Зарегистрирован: 24.11.2017{, 16:25}
Репутация: 37
Откуда: Червоноград
Имя: Марьян

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

#2

Сообщение dizzyy » 28.08.2019{, 22:21}

введите проверку если число на входе меньше 15 , то переменная масштабирования равна 15, если равно больше 15 и равно меньше 850 то равно поточному значению , ну и если больше 850 , то принять равно 850..
СпойлерПоказать
Безымянный.jpg

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 335
Имя: Владимир

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

#3

Сообщение rw6cm » 28.08.2019{, 23:23}

Rumatu,
для Rumatu.flp
(58.32 КБ) 43 скачивания
Win10-64, FLProg (portable)

Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25.01.2018{, 22:23}
Репутация: 95
Откуда: Bukovyna
Имя: Василий

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

#4

Сообщение Labu559 » 28.08.2019{, 23:51}

Rumatu писал(а):
28.08.2019{, 22:17}
но если вдруг минимальная входная константа 15 или максимальная входная константа 850 выходят за свои минимальные и максимальные пределы
... или можно применить блок нелинейного масштабированияПоказать
Rumatu.png
Rumatu.flp
(21.2 КБ) 37 скачиваний

Rumatu
Рядовой
Сообщения: 3
Зарегистрирован: 23.08.2019{, 08:03}
Репутация: 0
Имя: Андрей

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

#5

Сообщение Rumatu » 01.09.2019{, 18:30}

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

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#6

Сообщение Dryundel » 01.09.2019{, 21:18}

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

Rumatu
Рядовой
Сообщения: 3
Зарегистрирован: 23.08.2019{, 08:03}
Репутация: 0
Имя: Андрей

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

#7

Сообщение Rumatu » 01.09.2019{, 22:02}

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

Ответить

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