Вот это деловой подход!
С такими талантами думаю Вам под силу написать "народную" функцию универсального округления!
С удовольствием добавлю ее в свою библиотеку.
Вот это деловой подход!
С такими талантами думаю Вам под силу написать "народную" функцию универсального округления!
С удовольствием добавлю ее в свою библиотеку.
Датчики давления со всегда положительными значениями... нда теоретик , а что будет показывать функция ваша, если датчик чуть-чуть свакуумировался (такое бывает сплошь и рядом), или дрожание значения 3.8ма...4.2ма? И ведь пишут теоретики ересь типа real_to_word, а в результате та-дам ни с того ни с сего защиты отработали и...ракета...самолет утонули в мировом океане, хим завод выбросил в окружающую среду какую-то вредную хрень и тд и тп.
А неопытному новичку на форумах нефиг знаний искать!!! Только ответы на конкретные вопросы! А знания надо искать в учебниках, руководствах пользователя и пр. документах, благо интернет сейчас позволяет не рыскать по техническим библиотекам!
Всем привет. Как будет выглядеть функция ROUND на языке ST?
Например такКод:FUNCTION ROUND : REAL VAR_INPUT in : REAL; N : INT; // кол-во знаков от 0 до 5 END_VAR VAR X: REAL; DECADES : ARRAY[0..5] OF REAL := [1.0,10.0,100.0,1000.0,10000.0,100000.0]; END_VAR ___________________________________________________________________ X :=DECADES[LIMIT(0,N,5)]; ROUND := DINT_TO_REAL(REAL_TO_DINT(in * X)) / X; // 1 вариант обрезание // ROUND := DINT_TO_REAL( TRUNC( 100* ( in+ 0.005 ) ) ) / 100; // 2 вариант округление
Последний раз редактировалось kondor3000; 16.08.2026 в 14:49.
Вот проблему нашли, в смысле, на FBD, вроде как ещё 14 миллиардов лет тому назад делали, мне кажется ещё до Большого взрыва:
Округление.png
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Числа real почти всегда будут иметь в десятичном представлении что угодно, кроме нулей. Поэтому подозреваю, что запрос этой функции - неправильное решение какой-то задачи.
Так для чего требуется округление для чисел типа real?
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Дело в том, что в формате чисел real невозможно точно выразить и хранить числа, не являющиеся степенью числа 2. Поэтому округление значения в памяти переменной - просто потеря точности, т.к. число после округления станет чем-то подобным 1,000000001 или 0,999999999, но никак не 1,00000000 - пример условный. Это свойство формата хранения.
Поэтому и интересуюсь - какая задача решалась изначально? Ну не вывод же числа на экран самодельной подпрограммой - вопрос в разделе СПК, который, наверняка, имеет штатный элемент визуализации чисел.
Какая задача решалась изначально?