Просмотр полной версии : Owen Logik
piligrim
22.08.2022, 08:57
Здравствуйте.
Подскажите пожалуйста, что такое "не число"?
Возникает это сообщение на любой числовой переменной вышедшей за пределы своего диапазона?
Что можно сделать в ПО, и какие условия поставить, если это не число, то что? Строка? или знак ASCII?
Как реагировать программе?
Спасибо.
piligrim
22.08.2022, 09:16
62198
Вот скрин этой ситуации. Наверное вы правы, что только на вещественных такое выскакивает.
Судя по макросу это может быть и ошибкой вычисления. Вроде в какой-то из тем было про это и решалось изменением макроса, чтобы он так не делал...
piligrim
22.08.2022, 09:24
Да, это сообщение возникло после обработки макросом Pt100, ошибочной величины сопротивления.
Ну, допустим датчик вышел из строя и выдает заоблачное число или 0 и т.д.
Вот тогда в программке возникает такая надпись.
piligrim
22.08.2022, 09:25
Как это найти быстро по форуму?
Ну попробуйте поискать по Pt100 поиском.. .Как быстро найти не подскажу, тут поиск по мне ужасный...
Никита Сергеев
22.08.2022, 09:31
В самом макросе попробуйте изменить число 4000 на 400(крайний верхний уровень).
В данном случае ошибка возникает как следствие выхода из диапазона, вероятно.
Про саму ошибку можно прочесть здесь:
https://ru.wikipedia.org/wiki/NaN
piligrim
22.08.2022, 14:57
Спасибо, большое за неравнодушность.
Да с 400 всё остается по крайней мере числом.
Skornyakov
16.06.2025, 12:57
Здравствуйте.
Подскажите пожалуйста, что такое "не число"?
Возникает это сообщение на любой числовой переменной вышедшей за пределы своего диапазона?
Что можно сделать в ПО, и какие условия поставить, если это не число, то что? Строка? или знак ASCII?
Как реагировать программе?
Спасибо.
Добрый день, как определить находится ли переменная в состоянии NaN?
Проблема такая: В Modbus slave устройстве тип переменной знаковое целое 4 байта. Пытаюсь ее считать Овеном ПР103, master. Но в Овенлоджик нет знакового целого 4 байта, а есть только беззнаковое целое. Переменная читается, пока значения положительные. Потом не читается. Нужно, подставить вместо nan просто нулевое значение, так как отрицательные не нужны. Как это можно сделать?
У отрицательных чисел 31-бит всегда установлен. Поэтому можно так:
84366
Skornyakov а при чем тут NaN ? это не для целых. Если получаете целое, можете просто проверять старший бит и подставлять 0 через SEL.
Skornyakov
16.06.2025, 14:34
Спасибо, но проблема в том, что число считывается в виде Nan: там уже нет ни числа, ни знака.
Skornyakov считывается откуда? и как? в ОЛ нет понятия отрицательного числа для целочисленной в принципе. Каким-таким образом вы умудряетесь считать NaN, которое только для дробных числе возможно?
Skornyakov
16.06.2025, 17:40
Считываю переменную modbus slave панелью оператора. Тип переменной ставлю знаковое целое 32бит. Все считывается. Теперь надо сделать то же с овен пр103. Ставлю целое, но когда в slave устройстве появляется минус, вместо числа наблюдаются звездочки. Возможно, это не Nan но и не число точно. Минус отбросить не получается. Пусть в овне нет понятия отрицательного числа для целочисленной, как получить положительные значения.
Skornyakov
16.06.2025, 17:43
Modbus устройство - это промышленные весы.весы
Skornyakov ну вам пример выше привели, как при старшем бите сделать 0.
32 бит тем более надо раскидать на два регистра, если вы говорите о 32-х битной переменной в панель.
ПР103 у вас слейв для панели или вы говорите уже о другой связке приборов? конкретику выкладывайте, а то одно хочу тут, а другое там, вы так только путаете всех.
Возможно вам вообще надо по другому действовать. есть такое подозрение...
так и думал... вы при помощи ПР103 опрашиваете Весы (панель это другая связка)...
Skornyakov
16.06.2025, 18:08
Спасибо, за ответы. Прошу прощения, если выразился непонятно. Операции с числом в виде звездочек не производятся. То, что предложили в примере выше у меня не сработало. Я записывал faulse в бит 31.
Считываю переменную modbus slave панелью оператора. Тип переменной ставлю знаковое целое 32бит. Все считывается. Теперь надо сделать то же с овен пр103. Ставлю целое, но когда в slave устройстве появляется минус, вместо числа наблюдаются звездочки. Возможно, это не Nan но и не число точно. Минус отбросить не получается. Пусть в овне нет понятия отрицательного числа для целочисленной, как получить положительные значения.
А я не понял, где вы в Лоджике звездочки нашли? В панели звездочки появляются, если число выходит за заданный диапазон (т.е. в поле по количеству разрядов не помещается)
Пример. Вы в панели задали целое знаковое от -1000 до 1000, т.е. 5 разрядов (если знак считать). Но, на самом деле, числу, например, -1000 соответствует число 4294966296 в дополнительном коде. Далее, вы просто обнуляете 31 бит и получаете 2147482648. Т.е. 10 разрядов (а у вас на поле всего пять). Не удивительно, что панель звездочки показывает
Skornyakov
16.06.2025, 19:30
Спасибо, завтра попробую.
Считываю переменную modbus slave панелью оператора. Тип переменной ставлю знаковое целое 32бит. Все считывается. Теперь надо сделать то же с овен пр103. Ставлю целое, но когда в slave устройстве появляется минус, вместо числа наблюдаются звездочки. Возможно, это не Nan но и не число точно. Минус отбросить не получается. Пусть в овне нет понятия отрицательного числа для целочисленной, как получить положительные значения.
А как вы в ПР передаёте считанное с весов 32 битное целое на панель (т.е. как выглядит связка: переменная мастера - переменная слейва)?
Звёздочки на панели - это обычно признак того, что значение вышло за границы разрешённого диапазона (ограниченного типом переменной либо специально заданными значениями для этого поля вывода)
Skornyakov
17.06.2025, 05:58
Да все верно, число вышло за диапазон. Ошибся в том, что неверно представлял код отрицательного числа. Проблема решена, всем спасибо.
majevgenij
15.07.2025, 09:59
В онлайн базе есть ПИД вер 1,00. Не подскажете как его настроить и откалибровать по автонастройке в режиме охлаждение??? Спасибо
Или стандартный перевести в режим охлаждение
В онлайн базе есть ПИД вер 1,00. Не подскажете как его настроить и откалибровать по автонастройке в режиме охлаждение??? Спасибо
Или стандартный перевести в режим охлаждение
Для смены направления поменяйте местами текущее значение и заданное на входах регулятора
majevgenij
15.07.2025, 11:59
Для смены направления поменяйте местами текущее значение и заданное на входах регулятора
Вопрос закрыт. Изменил режим в параметрах макроса
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot