Контроль переполнения переменных

bayk
Сообщения: 887
Зарегистрирован: 30 май 2015, 21:20

Контроль переполнения переменных

Сообщение bayk »

Здравствуйте! у меня закралась мысль, что в каких-то режимах работы моего ПО (есессно на контроллере DVP) происходит переполнение чисел DWORD или FLOAT. математики в программах очень много и режимы меняются на ходу и очень быстро. отследить глазами это никак не могу.
Отсюда вопрос: есть ли в контроллерах DELTA маркер контроля переполнения переменных. я где-то видел в инструкциях такой маркер, но я не помню, в дельтовской ли.

Ryzhij
Сообщения: 1026
Зарегистрирован: 26 авг 2012, 19:25
Откуда: Россия Рязань

Re: Контроль переполнения переменных

Сообщение Ryzhij »

Есть флаги заёма и переноса M1021, M1022, но учтите - они не защелкиваются, т.е. за ними надо будет следить всякий раз после операции, могущей вызвать перенос. Для матричных операций и сдвигов флаги другие - M1095 и M1096.
__________________________
Помощь - понятие растяжимое, всяк трактует его в меру своего эгоизма...

bayk
Сообщения: 887
Зарегистрирован: 30 май 2015, 21:20

Re: Контроль переполнения переменных

Сообщение bayk »

спасибо! я для начала просто поставлю их и любую их реакцию буду фиксировать! если увижу, что они хоть раз зацепились, то буду очень внимательно свою математику проверять, поскольку я не совсем уверен, что дело в переполнении, может где что-то неправильно считается.

pkl
Сообщения: 1468
Зарегистрирован: 23 ноя 2010, 10:08

Re: Контроль переполнения переменных

Сообщение pkl »

Обычно я при отладке добавляю вспомогательные меркеры, которые активирую вручную. Это позволяет проконтролировать промежуточные результаты.

tvent
Сообщения: 1019
Зарегистрирован: 11 янв 2011, 17:02

Re: Контроль переполнения переменных

Сообщение tvent »

Для контроля программных ошибок, в.т.ч. деления на 0, есть маркеры M1067, M1068 и регистры D1067, D1068

Олег
Сообщения: 795
Зарегистрирован: 18 янв 2011, 23:06

Re: Контроль переполнения переменных

Сообщение Олег »

Переполнение FLOAT?
Может не учли кол-во значащих цифр в FLOAT и пытаетесь сложить и т.п. большое число с очень мелким?
100000,0 + 0,001=??

bayk
Сообщения: 887
Зарегистрирован: 30 май 2015, 21:20

Re: Контроль переполнения переменных

Сообщение bayk »

Нет. У меня может произойти умножение большого числа на ещё большее. При расчетах при позиционировании. Но я во первых нигде не могу найти диапазон числа в формате float. Так ещё и не всегда могу знать какое число в данный момент будет в переменной.

tvent
Сообщения: 1019
Зарегистрирован: 11 янв 2011, 17:02

Re: Контроль переполнения переменных

Сообщение tvent »

bayk писал(а): Но я во первых нигде не могу найти диапазон числа в формате float.
Binary Floating Point: ±1.1755 × 10^-38 ~ ±3.4028 × 10^+38
Decimal Floating Point: ±1175 × 10^-41 ~ ±3402×10^+35

Олег
Сообщения: 795
Зарегистрирован: 18 янв 2011, 23:06

Re: Контроль переполнения переменных

Сообщение Олег »

Проблема не в диапазоне, а в кол-ве значащих цифр, примерно 7 с копейками.
Нет. У меня может произойти умножение большого числа на ещё большее.
ну я на это и намекаю.
Про тонкости работы с float в инете дофига статей.

bayk
Сообщения: 887
Зарегистрирован: 30 май 2015, 21:20

Re: Контроль переполнения переменных

Сообщение bayk »

Я эти цифры видел (со степенями) но в дельте всего 2слова ( регистра) в которых хранится float. В итоге если это dint то там 2 миллиарда с копейками диапазон, а во флот ещё дробная часть есть. Так ещё и 3 символа. Во я и не знаю, что у дельты с допустимыми диапазонами.

Ответить