Показать сообщение отдельно
Старый 22.06.2017, 12:12   #315
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: FBD чайникам

Цитата:
Сообщение от Roll4Repairs Посмотреть сообщение
1) Я хотел сделать программу, реагирующую на изменение значения переменной, если она больше или меньше 1.7 и -1.7 .При этом я её меняю кнопками влево-вправо по 0.1 .

Но у меня почему-то прибавляется не ровно 0.1, а чуть больше, из-за чего когда у меня переменная должна быть равна 1.7, она равна 1.700..03 и выполняются действия как если бы она была больше 1.7. Приложил скрин, могу и проект скинуть если надо. Я неправильно использую блок Reg?
Азбука программиста гласит, что числа с плавающей точкой не бывают точными. У них всегда есть погрешность в каком-либо знаке. Даже в суперкомпьютерах с их тысячами процессоров и петафлопами производительности числа с плавающей точкой имеют ошибки. Не в 4-6 знаке, как положено по стандарту 32-хразрядных чисел, применяемых у нас, а в 20-30-40 и далее знаке после запятой. Но ошибка есть всегда - это ограничение нашей вселенной.

Поэтому с числами с плавающей точкой всегда работают после их приведения к определённой точности. Либо просто избавляются от таких чисел.

В вашем случае вполне нормально сделать уставку целочисленной от -17 до 17. И лишь на выходе алгоритма преобразовывать её в real и делить на 10. А то и вообще все сравнения сделать в целых числах, вашему алгоритму всё равно, с чем работать, с -1.7..1.7 или -17..17.


Цитата:
Сообщение от Roll4Repairs Посмотреть сообщение
2). Я хочу единожды выводить надпись на экран при запуске контроллера (а не постоянно). Я знаю что для этого мне понадобится блок Rise, меня интересует есть ли возможность привязать какое-либо действие к первоначальной загрузке контроллера?
Raise вам даёт событие "включение контроллера". Реагируйте на него как вам нужно. Делайте то, что вам нужно.



Цитата:
Сообщение от Roll4Repairs Посмотреть сообщение
Кстати, я просмотрел макрос по созданию меню(http://forum-segneti.1gb.ru/showthread.php?t=865), меня смутило что Enable у SCREEN постоянно выставлен в 1, в хелпе ведь написано что это очень кушает производительность и так не рекомендуется делать. Или я чего-то упустил?
Там много блоков SCREEN(). Я начну вас лучше понимать, если мы с вами не будем играть в загадки и будем писать всю информацию за один раз и сразу.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием