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

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

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

Сообщение Rumatu »

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

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

Сообщение dizzyy »

введите проверку если число на входе меньше 15 , то переменная масштабирования равна 15, если равно больше 15 и равно меньше 850 то равно поточному значению , ну и если больше 850 , то принять равно 850..
[spoiler]
Безымянный.jpg
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

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

Сообщение rw6cm »

[ref]Rumatu[/ref],
для Rumatu.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25 янв 2018, 22:23
Откуда: Bukovyna
Имя: Василий

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

Сообщение Labu559 »

Rumatu писал(а): 28 авг 2019, 22:17 но если вдруг минимальная входная константа 15 или максимальная входная константа 850 выходят за свои минимальные и максимальные пределы
[spoiler title=... или можно применить блок нелинейного масштабирования ]
Rumatu.png
Rumatu.flp
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Rumatu
Рядовой
Сообщения: 3
Зарегистрирован: 23 авг 2019, 08:03
Имя: Андрей

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

Сообщение Rumatu »

Спасибо всем большое. Буду пробовать. Блок не линейного маштабирования я использовал, всё работает когда используешь константы, но когда используешь крайние точки константами, а "почти" крайние ставишь по входу, этот блок всё равно вылазит за мин. и макс. пределы. Какой то этот блок немного не до конца правильно работает.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2449
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

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

Сообщение Dryundel »

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

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

Сообщение Rumatu »

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

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

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

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