Вход

Просмотр полной версии : Owen Logik



piligrim
22.08.2022, 08:57
Здравствуйте.
Подскажите пожалуйста, что такое "не число"?
Возникает это сообщение на любой числовой переменной вышедшей за пределы своего диапазона?
Что можно сделать в ПО, и какие условия поставить, если это не число, то что? Строка? или знак ASCII?
Как реагировать программе?
Спасибо.

piligrim
22.08.2022, 09:16
62198
Вот скрин этой ситуации. Наверное вы правы, что только на вещественных такое выскакивает.

melky
22.08.2022, 09:21
Судя по макросу это может быть и ошибкой вычисления. Вроде в какой-то из тем было про это и решалось изменением макроса, чтобы он так не делал...

piligrim
22.08.2022, 09:24
Да, это сообщение возникло после обработки макросом Pt100, ошибочной величины сопротивления.
Ну, допустим датчик вышел из строя и выдает заоблачное число или 0 и т.д.
Вот тогда в программке возникает такая надпись.

piligrim
22.08.2022, 09:25
Как это найти быстро по форуму?

melky
22.08.2022, 09:27
Ну попробуйте поискать по 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 просто нулевое значение, так как отрицательные не нужны. Как это можно сделать?

EFrol
16.06.2025, 13:14
У отрицательных чисел 31-бит всегда установлен. Поэтому можно так:
84366

melky
16.06.2025, 13:15
Skornyakov а при чем тут NaN ? это не для целых. Если получаете целое, можете просто проверять старший бит и подставлять 0 через SEL.

Skornyakov
16.06.2025, 14:34
Спасибо, но проблема в том, что число считывается в виде Nan: там уже нет ни числа, ни знака.

melky
16.06.2025, 14:47
Skornyakov считывается откуда? и как? в ОЛ нет понятия отрицательного числа для целочисленной в принципе. Каким-таким образом вы умудряетесь считать NaN, которое только для дробных числе возможно?

Skornyakov
16.06.2025, 17:40
Считываю переменную modbus slave панелью оператора. Тип переменной ставлю знаковое целое 32бит. Все считывается. Теперь надо сделать то же с овен пр103. Ставлю целое, но когда в slave устройстве появляется минус, вместо числа наблюдаются звездочки. Возможно, это не Nan но и не число точно. Минус отбросить не получается. Пусть в овне нет понятия отрицательного числа для целочисленной, как получить положительные значения.

Skornyakov
16.06.2025, 17:43
Modbus устройство - это промышленные весы.весы

melky
16.06.2025, 17:44
Skornyakov ну вам пример выше привели, как при старшем бите сделать 0.
32 бит тем более надо раскидать на два регистра, если вы говорите о 32-х битной переменной в панель.

ПР103 у вас слейв для панели или вы говорите уже о другой связке приборов? конкретику выкладывайте, а то одно хочу тут, а другое там, вы так только путаете всех.
Возможно вам вообще надо по другому действовать. есть такое подозрение...

так и думал... вы при помощи ПР103 опрашиваете Весы (панель это другая связка)...

Skornyakov
16.06.2025, 18:08
Спасибо, за ответы. Прошу прощения, если выразился непонятно. Операции с числом в виде звездочек не производятся. То, что предложили в примере выше у меня не сработало. Я записывал faulse в бит 31.

Dimensy
16.06.2025, 18:33
Считываю переменную modbus slave панелью оператора. Тип переменной ставлю знаковое целое 32бит. Все считывается. Теперь надо сделать то же с овен пр103. Ставлю целое, но когда в slave устройстве появляется минус, вместо числа наблюдаются звездочки. Возможно, это не Nan но и не число точно. Минус отбросить не получается. Пусть в овне нет понятия отрицательного числа для целочисленной, как получить положительные значения.

А я не понял, где вы в Лоджике звездочки нашли? В панели звездочки появляются, если число выходит за заданный диапазон (т.е. в поле по количеству разрядов не помещается)

Пример. Вы в панели задали целое знаковое от -1000 до 1000, т.е. 5 разрядов (если знак считать). Но, на самом деле, числу, например, -1000 соответствует число 4294966296 в дополнительном коде. Далее, вы просто обнуляете 31 бит и получаете 2147482648. Т.е. 10 разрядов (а у вас на поле всего пять). Не удивительно, что панель звездочки показывает

Skornyakov
16.06.2025, 19:30
Спасибо, завтра попробую.

1exan
17.06.2025, 04:56
Считываю переменную modbus slave панелью оператора. Тип переменной ставлю знаковое целое 32бит. Все считывается. Теперь надо сделать то же с овен пр103. Ставлю целое, но когда в slave устройстве появляется минус, вместо числа наблюдаются звездочки. Возможно, это не Nan но и не число точно. Минус отбросить не получается. Пусть в овне нет понятия отрицательного числа для целочисленной, как получить положительные значения.

А как вы в ПР передаёте считанное с весов 32 битное целое на панель (т.е. как выглядит связка: переменная мастера - переменная слейва)?
Звёздочки на панели - это обычно признак того, что значение вышло за границы разрешённого диапазона (ограниченного типом переменной либо специально заданными значениями для этого поля вывода)

Skornyakov
17.06.2025, 05:58
Да все верно, число вышло за диапазон. Ошибся в том, что неверно представлял код отрицательного числа. Проблема решена, всем спасибо.

majevgenij
15.07.2025, 09:59
В онлайн базе есть ПИД вер 1,00. Не подскажете как его настроить и откалибровать по автонастройке в режиме охлаждение??? Спасибо
Или стандартный перевести в режим охлаждение

1exan
15.07.2025, 11:41
В онлайн базе есть ПИД вер 1,00. Не подскажете как его настроить и откалибровать по автонастройке в режиме охлаждение??? Спасибо
Или стандартный перевести в режим охлаждение

Для смены направления поменяйте местами текущее значение и заданное на входах регулятора

majevgenij
15.07.2025, 11:59
Для смены направления поменяйте местами текущее значение и заданное на входах регулятора

Вопрос закрыт. Изменил режим в параметрах макроса